Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Лучшие практики CI/CD с Kubernetes и GitLab

flant
November 07, 2017

Лучшие практики CI/CD с Kubernetes и GitLab

Доклад технического директора компании «Флант» (http://flant.ru/) Дмитрия Столярова на HighLoad++ 2017 про выстраивание процессов CI/CD в GitLab CI на базе инфраструктуры с Kubernetes.

* Текстовый обзор доклада: https://habr.com/company/flant/blog/345116/
* Видео с выступления: https://www.youtube.com/watch?v=G3nELxmECd8
* Анонс доклада на сайте конференции: http://www.highload.ru/2017/abstracts/3073

flant

November 07, 2017
Tweet

More Decks by flant

Other Decks in Technology

Transcript

  1. Лучшие практики Continuous Delivery с Docker RootConf 2016 Собираем Docker-

    образы быстро и удобно Highload 2016 Наш опыт с Kubernetes в небольших проектах RootConf 2017 Лучшие практики CI/CD с Kubernetes и GitLab Highload 2017 ВЫ ЗДЕСЬ youtube.com/c/flant
  2. приложений уже в production 120 готово, скоро в production +19

    в работе +20 Опыт до конца года +22 приложение! =181 по состоянию на 4 ноября 2017
  3. проект в kubernetes приложений уже в production 21 до конца

    года +4 ждем ваш проект +? 120 готово, скоро в production +19 в работе +20 до конца года +22 приложение! =181 Опыт по состоянию на 4 ноября 2017
  4. Язык 100 Node.js 47 PHP 18 Ruby 10 Python 10

    JavaScript 4 Go 4 C# 2 Scala 2 Elixir 1 Java по состоянию на 4 ноября 2017
  5. Язык 100 Node.js 47 PHP 18 Ruby 10 Python 10

    JavaScript 4 Go 4 C# 2 Scala 2 Elixir 1 Java Фреймворк 17 Yii 12 Rails 7 Django 7 Laravel 4 Socket.IO 4 .NET Core 3 Bitrix 2 Meteor.JS 6 Другие по состоянию на 4 ноября 2017
  6. Язык 100 Node.js 47 PHP 18 Ruby 10 Python 10

    JavaScript 4 Go 4 C# 2 Scala 2 Elixir 1 Java Фреймворк 17 Yii 12 Rails 7 Django 7 Lavarel 4 Socket.IO 4 .NET Core 3 Bitrix 2 Meteor.JS 6 Другие Package Manager 96 npm 32 Composer 27 Yarn 19 Bundler 7 pip 2 sbt 2 .NET Core 2 hex 2 Другие по состоянию на 4 ноября 2017
  7. Язык 100 Node.js 47 PHP 18 Ruby 10 Python 10

    JavaScript 4 Go 4 C# 2 Scala 2 Elixir 1 Java Фреймворк 17 Yii 12 Rails 7 Django 7 Lavarel 4 Socket.IO 4 .NET Core 3 Bitrix 2 Meteor.JS 6 Другие Package Manager 96 npm 32 Composer 27 Yarn 19 Bundler 7 pip 2 sbt 2 .NET Core 2 hex 2 Другие по состоянию на 4 ноября 2017 DBMS 40 PostgreSQL 39 MySQL 27 MongoDB 2 Cassandra 3 Другие
  8. Язык 100 Node.js 47 PHP 18 Ruby 10 Python 10

    JavaScript 4 Go 4 C# 2 Scala 2 Elixir 1 Java Фреймворк 17 Yii 12 Rails 7 Django 7 Lavarel 4 Socket.IO 4 .NET Core 3 Bitrix 2 Meteor.JS 6 Другие Package Manager 96 npm 32 Composer 27 Yarn 19 Bundler 7 pip 2 sbt 2 .NET Core 2 hex 2 Другие по состоянию на 4 ноября 2017 DBMS 40 PostgreSQL 39 MySQL 27 MongoDB 2 Cassandra 3 Другие In-memory store 43 Redis 24 Memcahed
  9. Язык 100 Node.js 47 PHP 18 Ruby 10 Python 10

    JavaScript 4 Go 4 C# 2 Scala 2 Elixir 1 Java Фреймворк 17 Yii 12 Rails 7 Django 7 Lavarel 4 Socket.IO 4 .NET Core 3 Bitrix 2 Meteor.JS 6 Другие Package Manager 96 npm 32 Composer 27 Yarn 19 Bundler 7 pip 2 sbt 2 .NET Core 2 hex 2 Другие по состоянию на 4 ноября 2017 DBMS 40 PostgreSQL 39 MySQL 27 MongoDB 2 Cassandra 3 Другие In-memory store 43 Redis 24 Memcahed Queue 37 RabbitMQ 15 Redis 8 Nats 2 PGQ 1 Kafka
  10. Язык 100 Node.js 47 PHP 18 Ruby 10 Python 10

    JavaScript 4 Go 4 C# 2 Scala 2 Elixir 1 Java Фреймворк 17 Yii 12 Rails 7 Django 7 Lavarel 4 Socket.IO 4 .NET Core 3 Bitrix 2 Meteor.JS 6 Другие Package Manager 96 npm 32 Composer 27 Yarn 19 Bundler 7 pip 2 sbt 2 .NET Core 2 hex 2 Другие по состоянию на 4 ноября 2017 DBMS 40 PostgreSQL 39 MySQL 27 MongoDB 2 Cassandra 3 Другие In-memory store 43 Redis 24 Memcahed Queue 37 RabbitMQ 15 Redis 8 Nats 2 PGQ 1 Kafka Search 30 Elasticsearch 12 Sphinx
  11. Язык 100 Node.js 47 PHP 18 Ruby 10 Python 10

    JavaScript 4 Go 4 C# 2 Scala 2 Elixir 1 Java Фреймворк 17 Yii 12 Rails 7 Django 7 Lavarel 4 Socket.IO 4 .NET Core 3 Bitrix 2 Meteor.JS 6 Другие Package Manager 96 npm 32 Composer 27 Yarn 19 Bundler 7 pip 2 sbt 2 .NET Core 2 hex 2 Другие DBMS 40 PostgreSQL 39 MySQL 27 MongoDB 2 Cassandra 3 Другие Queue 37 RabbitMQ 15 Redis 8 Nats 2 PGQ 1 Kafka Search 30 Elasticsearch 12 Sphinx In-memory store 43 Redis 24 Memcahed по состоянию на 4 ноября 2017
  12. Язык 100 Node.js 47 PHP 18 Ruby 10 Python 10

    JavaScript 4 Go 4 C# 2 Scala 2 Elixir 1 Java Фреймворк 17 Yii 12 Rails 7 Django 7 Lavarel 4 Socket.IO 4 .NET Core 3 Bitrix 2 Meteor.JS 6 Другие Package Manager 96 npm 32 Composer 27 Yarn 19 Bundler 7 pip 2 sbt 2 .NET Core 2 hex 2 Другие DBMS 40 PostgreSQL 39 MySQL 27 MongoDB 2 Cassandra 3 Другие Queue 37 RabbitMQ 15 Redis 8 Nats 2 PGQ 1 Kafka Search 30 Elasticsearch 12 Sphinx In-memory store 43 Redis 24 Memcahed по состоянию на 4 ноября 2017 команд 30+ клиентов 25 приложение 181
  13. Что же такое CI/CD? git build test release operate Continuous

    Intergation? Continuous Deployment? Continuous Delivery?
  14. Что же такое CI/CD? git build test release operate Continuous

    Intergation? ОНО РАБОТАЕТ Continuous Deployment? Continuous Delivery?
  15. Какой CI/CD бывает? Факторы / Основной процесс Одно окружение Несколько

    окружений Динамические окружения Несколько площадок
  16. Какой CI/CD бывает? Факторы / Основной процесс Одно окружение Несколько

    окружений Динамические окружения Несколько площадок
  17. Какой CI/CD бывает? Факторы / Тестирование Анализ кода Тесты без

    окружения Тесты в окружении Unit Functional, Integration
  18. Какой CI/CD бывает? Факторы / Тестирование Анализ кода Тесты без

    окружения Тесты в окружении Тесты в «полном» окружении Unit Functional, Integration End-to-end, Performance regression
  19. Какой CI/CD бывает? Факторы / Тестирование Анализ кода Тесты без

    окружения Тесты в окружении Тесты в «полном» окружении Unit Functional, Integration End-to-end, Performance regression
  20. Какой CI/CD бывает? Факторы / Разделение прав доступа Простое разделение

    прав доступа Разные права на окружения Multi stage approval
  21. Какой CI/CD бывает? Факторы / Разделение прав доступа Простое разделение

    прав доступа Разные права на окружения Multi stage approval Quorum approval
  22. Какой CI/CD бывает? Факторы / Разделение прав доступа Простое разделение

    прав доступа Разные права на окружения Multi stage approval Quorum approval
  23. Какой CI/CD бывает? Факторы / Архитектура приложения Stateless приложение Stateful

    приложение Многокомпонентное приложение Микросервисная архитектура
  24. Какой CI/CD бывает? Факторы / Архитектура приложения Stateless приложение Stateful

    приложение Многокомпонентное приложение Микросервисная архитектура
  25. Какой CI/CD бывает? Дополнительные требования Быстро Надёжно Дёшево Выкат и

    откат с гарантией и без простоя SLA 99.9% Затраты на управление / администрирование
  26. Какой CI/CD бывает? Дополнительные требования Быстро Надёжно Дёшево Выкат и

    откат с гарантией и без простоя SLA 99.9% Затраты на управление / администрирование Затраты на инфраструктуру
  27. Какой CI/CD бывает? Дополнительные требования Быстро Надёжно Дёшево Выкат и

    откат с гарантией и без простоя SLA 99.9% Затраты на управление / администрирование Затраты на инфраструктуру
  28. Инструменты Управление пакетами Состоит из 2-х частей helm (client), tiller

    (server) Chart – название пакетов метаописание, yaml-шаблоны Наша утилита Улучшает сборку Улучшает deploy (чуть-чуть) github.com/flant/dapp
  29. git operate build test release .gitlab-ci.yaml Dockerfile docker build Docker-

    image Docker- image + tests Docker registry .helm backend.yaml frontend.yaml cron.yaml
  30. git operate build test release .gitlab-ci.yaml Dockerfile docker build Docker-

    image Docker- image + tests Docker registry .helm backend.yaml frontend.yaml cron.yaml helm install
  31. git operate build test release .gitlab-ci.yaml Dockerfile docker build Docker-

    image Docker- image + tests Docker registry .helm backend.yaml frontend.yaml cron.yaml helm install
  32. git operate Dockerfile .helm backend.yaml frontend.yaml cron.yaml docker build Docker-

    image Docker- image + .gitlab-ci.yaml tests Docker registry build test release helm install
  33. .helm git operate backend.yaml frontend.yaml cron.yaml Docker- image Docker- image

    + .gitlab-ci.yaml tests Docker registry build test release Dockerfile docker build helm install
  34. .helm git operate backend.yaml frontend.yaml cron.yaml Docker- image Docker- image

    + .gitlab-ci.yaml tests Docker registry build test release docker build helm install Dappfile
  35. .helm git operate backend.yaml frontend.yaml cron.yaml Docker- image Docker- image

    + .gitlab-ci.yaml tests Docker registry build test release Dappfile dapp build helm install
  36. .helm git operate backend.yaml frontend.yaml cron.yaml Docker- image Docker- image

    + .gitlab-ci.yaml tests Docker registry build test release Dappfile dapp build dapp kube deploy
  37. .helm git operate backend.yaml frontend.yaml cron.yaml Docker- image Docker- image

    + .gitlab-ci.yaml tests Docker registry build test release Dappfile dapp build dapp kube deploy
  38. Демо на нашем стенде Приходите в любое время, мы будем

    показывать, как вся эта связка работает в деталях и с примерами. И будем отвечать на любые ваши вопросы.
  39. Что должно быть в Docker образе? Системные компоненты # apt-get

    install php-fpm Системные библиотеки # apt-get install libxml2 Package manager Dependencies
  40. Что должно быть в Docker образе? Системные компоненты # apt-get

    install php-fpm Системные библиотеки # apt-get install libxml2 Package manager Dependencies Исходный код
  41. Что должно быть в Docker образе? Системные компоненты # apt-get

    install php-fpm Системные библиотеки # apt-get install libxml2 Package manager Dependencies Исходный код Собранные ассеты
  42. Что должно быть в Docker образе? Системные компоненты # apt-get

    install php-fpm Системные библиотеки # apt-get install libxml2 Package manager Dependencies Готовые конфиги Исходный код Собранные ассеты
  43. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA Всё ок!
  44. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA Всё ок! dockerfile composer.json ***.php production
  45. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA dockerfile composer.json ***.php production Всё ок! Docker образ
  46. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA dockerfile composer.json ***.php production Всё ок! Docker образ :production
  47. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA dockerfile composer.json ***.php production Всё ок! Docker образ :production =
  48. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA dockerfile composer.json ***.php production Всё ок! Docker образ :production =
  49. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA dockerfile composer.json ***.php production Всё ок! Docker образ :production = :v0.7.23 :v0.7.23
  50. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA dockerfile composer.json ***.php production Всё ок! Docker образ :production = :v0.7.23 :v0.7.23
  51. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA dockerfile composer.json ***.php production Всё ок! Docker образ :production = :v0.7.23 :v0.7.23
  52. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master QA dockerfile composer.json ***.php production Всё ок! Docker образ :production = :v0.7.23 :v0.7.23
  53. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master dockerfile composer.json ***.php production Docker образ :production = :v0.7.23 :v0.7.23
  54. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master dockerfile composer.json ***.php production Docker образ :production = :v0.7.23 :v0.7.23 QA
  55. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master dockerfile composer.json ***.php production Docker образ :production = :v0.7.23 :v0.7.23 QA Всё ок!
  56. One image to rule them all dockerfile composer.json ***.php master

    git Docker образ :master dockerfile composer.json ***.php production Docker образ :production = :v0.7.23 :v0.7.23 QA Всё ок!
  57. One image to rule them all git branch Какие бранчи

    собирать? Как тегировать образы? git tag
  58. One image to rule them all git branch Какие бранчи

    собирать? Как тегировать образы? временные образы git tag
  59. One image to rule them all git branch Какие бранчи

    собирать? Как тегировать образы? временные образы git tag релизные образы
  60. One image to rule them all git branch Какие бранчи

    собирать? Как тегировать образы? временные образы git tag релизные образы dev review integration dem o
  61. One image to rule them all git branch Какие бранчи

    собирать? Как тегировать образы? временные образы git tag релизные образы dev review integration dem o staging qa production
  62. :v0.7.14 -> 0.8.15 Кейс #1 Backend DB :v0.8.15 Migrations 1

    Порядок выката и миграции
  63. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 :v0.7.14 Кейс #1 Backend DB

    :v0.8.15 Migrations 1 Порядок выката и миграции
  64. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 :v0.7.14 Кейс #1 Backend DB

    :v0.8.15 Migrations 1 Порядок выката и миграции
  65. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend DB :v0.8.15

    Migrations 1 Порядок выката и миграции
  66. :v0.7.14 -> 0.8.15 :v0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend DB

    :v0.8.15 Migrations 1 Порядок выката и миграции
  67. :v0.7.14 -> 0.8.15 :v0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend DB

    :v0.8.15 Migrations 1 Порядок выката и миграции
  68. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend DB :v0.8.15

    Migrations 1 Порядок выката и миграции
  69. :v0.7.14 -> 0.8.15 :v0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend DB

    :v0.8.15 Migrations 1 Порядок выката и миграции
  70. :v0.7.14 -> 0.8.15 :v0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend DB

    :v0.8.15 Migrations 1 Порядок выката и миграции
  71. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend DB :v0.8.15

    Migrations 1 Порядок выката и миграции
  72. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend :v0.8.15 Migrations

    DB 1 Порядок выката и миграции
  73. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend :v0.8.15 Migrations

    DB 1 Порядок выката и миграции
  74. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend :v0.8.15 Migrations

    DB 1 Порядок выката и миграции
  75. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 Кейс #1 Backend :v0.8.15 Migrations

    DB 1 Порядок выката и миграции
  76. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 :v0.8.15 Кейс #1 Backend :v0.8.15

    Migrations DB 1 Порядок выката и миграции
  77. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 :v0.8.15 Кейс #1 Backend :v0.8.15

    Migrations DB 1 Порядок выката и миграции
  78. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.7.14 :v0.8.15 Кейс #1 Backend :v0.8.15

    Migrations DB 1 Порядок выката и миграции
  79. :v0.7.14 -> 0.8.15 :v0.7.14 :v0.8.15 Кейс #1 Backend :v0.8.15 Migrations

    DB 1 Порядок выката и миграции
  80. :v0.7.14 -> 0.8.15 :v0.8.15 :v0.7.14 :v0.8.15 Кейс #1 Backend :v0.8.15

    Migrations DB 1 Порядок выката и миграции
  81. :v0.7.14 -> 0.8.15 :v0.8.15 :v0.7.14 :v0.8.15 Кейс #1 Backend :v0.8.15

    Migrations DB 1 Порядок выката и миграции
  82. :v0.7.14 -> 0.8.15 :v0.8.15 :v0.8.15 :v0.8.15 Кейс #1 Backend :v0.8.15

    Migrations DB 1 Порядок выката и миграции
  83. :v0.8.15 Кейс #1 Backend :v0.8.15 Migrations DB 1 :v0.8.15 :v0.8.15

    :v0.8.15 Порядок выката и миграции
  84. :v0.8.15 Кейс #1 Backend :v0.8.15 Migrations DB 1 :v0.8.15 :v0.8.15

    :v0.8.15 Порядок выката и миграции Ура! Выкатилось!
  85. Ура! Выкатилось! :v0.8.15 Кейс #1 Backend :v0.8.15 Migrations DB 1

    :v0.8.15 :v0.8.15 :v0.8.15 Порядок выката и миграции
  86. Скорость bootstrap’а Занимаемое место Полезность Сложность реализации Пустая база только

    структура 5 sec Seed/fixtures из текущего бранча 1 min Ночной дамп с seeds/fixtures из master 10 sec Дамп “для staging” 1 hour Ночной дамп “для staging” 30 sec Дамп с production 30 min Ночной дамп с production 1 min
  87. Скорость bootstrap’а Занимаемое место Полезность Сложность реализации Пустая база только

    структура Seed/fixtures из текущего бранча Ночной дамп с seeds/fixtures из master 10 sec Дамп “для staging” Ночной дамп “для staging” 30 sec Дамп с production Ночной дамп с production
  88. Deploy Bootstrap базы Load: Seeds Load: Nightly staging dump Build

    Build Deploy Load: Nightly seeds (from master)
  89. Выкат действительно без простоя Graceful shutdown example.com Readiness probe Проверьте

    (чем угодно) Правильный размер pod-а и политика обновления
  90. Атомарность выката Environments production = v0.7.14 backend 3 memcached 3

    cron-foo cron-bar cron-baz Redis 3 Background Jobs 3 Sphinx 2 DB 3
  91. Атомарность выката Environments production = v0.7.14 backend 3 memcached 3

    cron-foo cron-bar cron-baz Redis 3 Background Jobs 3 Sphinx 2 DB 3 :v0.7.14 :v0.7.14 :v0.7.14 :v0.7.14
  92. Атомарность выката backend 3 memcached 3 cron-foo cron-bar cron-baz Redis

    3 Background Jobs 3 Sphinx 2 DB 3 Environments Pipelines v0.8.15 :v0.7.14 :v0.7.14 :v0.7.14 :v0.7.14 production = v0.7.14
  93. Атомарность выката Deploy backend 3 memcached 3 cron-foo cron-bar cron-baz

    Redis 3 Background Jobs 3 Sphinx 2 DB 3 Environments Pipelines v0.8.15 :v0.7.14 :v0.7.14 :v0.7.14 :v0.7.14 production = v0.7.14
  94. Атомарность выката Deploy backend 3 memcached 3 cron-foo cron-bar cron-baz

    Redis 3 Background Jobs 3 Sphinx 2 DB 3 Environments Pipelines v0.8.15 :v0.7.14 :v0.7.14 :v0.7.14 :v0.7.14 production = v0.7.14
  95. Атомарность выката Deploy backend 3 memcached 3 cron-foo cron-bar cron-baz

    Redis 3 Background Jobs 3 Sphinx 2 DB 3 Environments Pipelines v0.8.15 :v0.7.14 :v0.7.14 :v0.7.14 :v0.7.14 production = v0.7.14
  96. Атомарность выката Deploy backend 3 memcached 3 cron-foo cron-bar cron-baz

    Redis 3 Background Jobs 3 Sphinx 2 DB 3 Environments Pipelines v0.8.15 :v0.7.14 :v0.7.14 :v0.7.14 :v0.7.14 production = v0.7.14
  97. :v0.7.15 Deploy memcached 3 Redis 3 DB 3 Environments Pipelines

    v0.8.15 production = v0.7.14 cron-foo cron-bar cron-baz Background Jobs 3 Sphinx 2 backend 3 :v0.7.14 :v0.7.14 :v0.7.14 :v0.7.14 Атомарность выката
  98. :v0.7.15 Deploy memcached 3 Redis 3 DB 3 Environments Pipelines

    v0.8.15 production = v0.7.14 cron-foo cron-bar cron-baz Background Jobs 3 Sphinx 2 backend 3 :v0.7.14 :v0.7.14 :v0.7.14 Атомарность выката :v0.8.15
  99. :v0.7.15 Deploy memcached 3 Redis 3 DB 3 Environments Pipelines

    v0.8.15 production = v0.7.14 cron-foo cron-bar cron-baz Background Jobs 3 Sphinx 2 backend 3 :v0.7.14 -> 0.8.15 :v0.7.14 -> 0.8.15 :v0.7.14 -> 0.8.15 :v0.8.15 Атомарность выката
  100. :v0.7.15 Deploy memcached 3 Redis 3 DB 3 Environments Pipelines

    v0.8.15 production = v0.7.14 cron-foo cron-bar cron-baz Background Jobs 3 Sphinx 2 backend 3 :v0.8.15 Атомарность выката :v0.7.14 -> 0.8.15 :v0.8.15 :v0.8.15
  101. :v0.7.15 Deploy memcached 3 Redis 3 DB 3 Environments Pipelines

    v0.8.15 production = v0.7.14 cron-foo cron-bar cron-baz Background Jobs 3 Sphinx 2 backend 3 :v0.7.14 -> 0.8.15 :v0.8.15 Атомарность выката :v0.8.15 :v0.8.15
  102. :v0.7.15 Deploy memcached 3 Redis 3 DB 3 Environments Pipelines

    v0.8.15 production = v0.7.14 cron-foo cron-bar cron-baz Background Jobs 3 Sphinx 2 backend 3 :v0.7.14 -> 0.8.15 :v0.8.15 Атомарность выката ошибка :v0.8.15 :v0.8.15
  103. :v0.7.15 Deploy memcached 3 Redis 3 DB 3 Environments Pipelines

    v0.8.15 production = v0.7.14 cron-foo cron-bar cron-baz Background Jobs 3 Sphinx 2 backend 3 :v0.7.14 -> 0.8.15 :v0.8.15 Атомарность выката ошибка :v0.8.15 :v0.8.15
  104. :v0.7.15 Deploy memcached 3 Redis 3 DB 3 Environments Pipelines

    v0.8.15 production = v0.7.14 cron-foo cron-bar cron-baz Background Jobs 3 Sphinx 2 backend 3 :v0.7.14 -> 0.8.15 :v0.8.15 Атомарность выката ошибка :v0.8.15 :v0.8.15 ✖
  105. Deploy ошибка :v0.7.15 memcached 3 Redis 3 DB 3 cron-foo

    cron-bar cron-baz Background Jobs 3 Sphinx 2 backend Pipelines v0.8.15 ✖ Environments 3 Атомарность выката production = v0.7.14 :v0.7.14 -> 0.8.15 :v0.8.15 :v0.8.15 :v0.8.15
  106. :v0.7.15 Deploy memcached 3 Redis 3 DB 3 Environments Pipelines

    v0.8.15 production = v0.7.14 cron-foo cron-bar cron-baz Background Jobs 3 Sphinx 2 backend 3 :v0.7.14 -> 0.8.15 :v0.8.15 Атомарность выката ошибка :v0.8.15 :v0.8.15 ✖
  107. Динамические окружения *.review.example.com Ingress Controller git feature-x ***.php namespace: feature-x

    feature-x.review.example.com abc ***.php abc.review.example.com namespace: abc feature-foo ***.php
  108. Динамические окружения *.review.example.com Ingress Controller feature-x.review.example.com namespace: feature-x abc.review.example.com namespace:

    abc feature-foo.review.example.com namespace: feature-foo git feature-x abc feature-foo ***.php ***.php ***.php
  109. Отображение branch: new-interface Динамические окружения один проект namespace: new-interface new-interface.review.example.com

    branch: feature/LLLL___#1342 один проект + SLUG namespace: feature-llll-dfjre3 feature-llll-dfjre3.review.example.com
  110. Отображение branch: new-interface Динамические окружения один проект namespace: new-interface new-interface.review.example.com

    branch: feature/LLLL___#1342 один проект + SLUG namespace: feature-llll-dfjre3 feature-llll-dfjre3.review.example.com несколько проектов
  111. Отображение branch: new-interface Динамические окружения один проект namespace: new-interface new-interface.review.example.com

    branch: feature/LLLL___#1342 один проект + SLUG namespace: feature-llll-dfjre3 feature-llll-dfjre3.review.example.com несколько проектов project: gimli branch: bar
  112. Отображение branch: new-interface Динамические окружения один проект namespace: new-interface new-interface.review.example.com

    branch: feature/LLLL___#1342 один проект + SLUG namespace: feature-llll-dfjre3 feature-llll-dfjre3.review.example.com несколько проектов namespace: gimli-bar project: gimli gimli-bar.review.example.com branch: bar
  113. Отображение branch: new-interface Динамические окружения один проект namespace: new-interface new-interface.review.example.com

    branch: feature/LLLL___#1342 один проект + SLUG namespace: feature-llll-dfjre3 feature-llll-dfjre3.review.example.com несколько проектов namespace: gimli-bar project: gimli gimli-bar.review.example.com branch: bar
  114. Несколько советов Динамические окружения Минимизировать использование ресурсов Целиком в Kubernetes

    (включая все СУБД) Ограничить публичный доступ Как-то ограничивать разработчиков
  115. Несколько советов Динамические окружения Минимизировать использование ресурсов Целиком в Kubernetes

    (включая все СУБД) Ограничить публичный доступ Как-то ограничивать разработчиков
  116. Deploy (auto) Load: Seeds Load: Nightly staging dump Build Build

    Deploy Load: Nightly seeds (from master) Динамические окружения
  117. Deploy (auto) Load: Seeds Load: Nightly staging dump Build Build

    Deploy Load: Nightly seeds (from master) Stop environment Динамические окружения
  118. Тесты / Тесты без окружения (Unit) build test docker build

    Docker- image Dockerfile docker run Docker- image +
  119. Тесты / В окружении (Function, Integration) build test helm install

    docker build Docker- image Job Docker registry namespace: test-abc Dockerfile .helm
  120. Тесты / В окружении (Function, Integration) build test helm install

    docker build Docker- image helm delete --purge Job Docker registry namespace: test-abc Dockerfile .helm
  121. Наши Docker-проекты github.com/flant/dapp github.com/flant/loghouse Дмитрий Столяров [email protected] linkedin.com/in/distol github.com/distol Всем

    спасибо! Наш блог на Хабрахабре habrahabr.ru/company/flant/ Наш youtube-канал youtube.com/c/flant
  122. git operate Dockerfile .helm backend.yaml frontend.yaml cron.yaml docker build Docker-

    image Docker- image + .gitlab-ci.yaml tests Docker registry build test release helm install