Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров...

278
Дмитрий Столяров CTO & Co-founder v1 Лучшие практики CI/CD с Kubernetes и GitLab

Transcript of Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров...

Page 1: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Дмитрий СтоляровCTO & Co-founder

v1

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

Page 2: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Лучшие практики Continuous Delivery с Docker

RootConf 2016

Собираем Docker-образы быстро и удобно

Highload 2016

Наш опыт с Kubernetesв небольших проектах

RootConf 2017

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

Highload 2017

ВЫЗДЕСЬ

youtube.com/c/flant

Page 3: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Опыт

Page 4: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

приложений уже в production120готово, скоро в production+19в работе+20

Опыт

до конца года+22приложение!=181

по состоянию на 4 ноября 2017

Page 5: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

проект в kubernetes

приложений уже в production 21

до конца года+4ждемваш проект+?

120готово, скоро в production+19в работе+20до конца года+22приложение!=181

Опыт

по состоянию на 4 ноября 2017

Page 6: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Язык100 Node.js

47 PHP18 Ruby10 Python10 JavaScript

4 Go4 C#2 Scala2 Elixir1 Java

по состоянию на 4 ноября 2017

Page 7: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Язык100 Node.js

47 PHP18 Ruby10 Python10 JavaScript

4 Go4 C#2 Scala2 Elixir1 Java

Фреймворк17 Yii12 Rails

7 Django7 Laravel4 Socket.IO4 .NET Core3 Bitrix2 Meteor.JS6 Другие

по состоянию на 4 ноября 2017

Page 8: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Язык100 Node.js

47 PHP18 Ruby10 Python10 JavaScript

4 Go4 C#2 Scala2 Elixir1 Java

Фреймворк17 Yii12 Rails

7 Django7 Lavarel4 Socket.IO4 .NET Core3 Bitrix2 Meteor.JS6 Другие

Package Manager

96 npm32 Composer27 Yarn19 Bundler

7 pip2 sbt2 .NET Core2 hex2 Другие

по состоянию на 4 ноября 2017

Page 9: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Язык100 Node.js

47 PHP18 Ruby10 Python10 JavaScript

4 Go4 C#2 Scala2 Elixir1 Java

Фреймворк17 Yii12 Rails

7 Django7 Lavarel4 Socket.IO4 .NET Core3 Bitrix2 Meteor.JS6 Другие

Package Manager

96 npm32 Composer27 Yarn19 Bundler

7 pip2 sbt2 .NET Core2 hex2 Другие

по состоянию на 4 ноября 2017

DBMS

40 PostgreSQL39 MySQL27 MongoDB

2 Cassandra3 Другие

Page 10: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Язык100 Node.js

47 PHP18 Ruby10 Python10 JavaScript

4 Go4 C#2 Scala2 Elixir1 Java

Фреймворк17 Yii12 Rails

7 Django7 Lavarel4 Socket.IO4 .NET Core3 Bitrix2 Meteor.JS6 Другие

Package Manager

96 npm32 Composer27 Yarn19 Bundler

7 pip2 sbt2 .NET Core2 hex2 Другие

по состоянию на 4 ноября 2017

DBMS

40 PostgreSQL39 MySQL27 MongoDB

2 Cassandra3 Другие

In-memory store

43 Redis24 Memcahed

Page 11: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Язык100 Node.js

47 PHP18 Ruby10 Python10 JavaScript

4 Go4 C#2 Scala2 Elixir1 Java

Фреймворк17 Yii12 Rails

7 Django7 Lavarel4 Socket.IO4 .NET Core3 Bitrix2 Meteor.JS6 Другие

Package Manager

96 npm32 Composer27 Yarn19 Bundler

7 pip2 sbt2 .NET Core2 hex2 Другие

по состоянию на 4 ноября 2017

DBMS

40 PostgreSQL39 MySQL27 MongoDB

2 Cassandra3 Другие

In-memory store

43 Redis24 Memcahed

Queue

37 RabbitMQ15 Redis

8 Nats2 PGQ1 Kafka

Page 12: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Язык100 Node.js

47 PHP18 Ruby10 Python10 JavaScript

4 Go4 C#2 Scala2 Elixir1 Java

Фреймворк17 Yii12 Rails

7 Django7 Lavarel4 Socket.IO4 .NET Core3 Bitrix2 Meteor.JS6 Другие

Package Manager

96 npm32 Composer27 Yarn19 Bundler

7 pip2 sbt2 .NET Core2 hex2 Другие

по состоянию на 4 ноября 2017

DBMS

40 PostgreSQL39 MySQL27 MongoDB

2 Cassandra3 Другие

In-memory store

43 Redis24 Memcahed

Queue

37 RabbitMQ15 Redis

8 Nats2 PGQ1 Kafka

Search

30 Elasticsearch

12 Sphinx

Page 13: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Язык100 Node.js

47 PHP18 Ruby10 Python10 JavaScript

4 Go4 C#2 Scala2 Elixir1 Java

Фреймворк17 Yii12 Rails

7 Django7 Lavarel4 Socket.IO4 .NET Core3 Bitrix2 Meteor.JS6 Другие

Package Manager

96 npm32 Composer27 Yarn19 Bundler

7 pip2 sbt2 .NET Core2 hex2 Другие

DBMS

40 PostgreSQL39 MySQL27 MongoDB

2 Cassandra3 Другие

Queue

37 RabbitMQ15 Redis

8 Nats2 PGQ1 Kafka

Search

30 Elasticsearch

12 Sphinx

In-memory store

43 Redis24 Memcahed

по состоянию на 4 ноября 2017

Page 14: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Язык100 Node.js

47 PHP18 Ruby10 Python10 JavaScript

4 Go4 C#2 Scala2 Elixir1 Java

Фреймворк17 Yii12 Rails

7 Django7 Lavarel4 Socket.IO4 .NET Core3 Bitrix2 Meteor.JS6 Другие

Package Manager

96 npm32 Composer27 Yarn19 Bundler

7 pip2 sbt2 .NET Core2 hex2 Другие

DBMS

40 PostgreSQL39 MySQL27 MongoDB

2 Cassandra3 Другие

Queue

37 RabbitMQ15 Redis

8 Nats2 PGQ1 Kafka

Search

30 Elasticsearch

12 Sphinx

In-memory store

43 Redis24 Memcahed

по состоянию на 4 ноября 2017

команд30+ клиентов25приложение181

Page 15: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что же такое CI/CD?

git

build

test

release

operate

Page 16: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что же такое CI/CD?

git

build

test

release

operate

Continuous

Intergation?Continuous

Deployment?Continuous

Delivery?

Page 17: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что же такое CI/CD?

git

build

test

release

operate

Continuous

Intergation?

ОНО РАБОТАЕТ

Continuous

Deployment?Continuous

Delivery?

Page 18: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что же такое CI/CD?

git

build

test

release

operate

Page 19: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что же такое CI/CD?

git

build

test

release

operate

Page 20: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы, влияющие на сложность

Основной процесс Тестирование

Разделение прав доступа

Архитектура приложения

Page 21: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Основной процесс

Page 22: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Основной процесс

Одно окружение

Page 23: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Основной процесс

Одно окружение

Несколько окружений

Page 24: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Основной процесс

Одно окружение

Несколько окружений

Динамические окружения

Page 25: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Основной процесс

Одно окружение

Несколько окружений

Динамические окружения

Несколько площадок

Page 26: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Основной процесс

Одно окружение

Несколько окружений

Динамические окружения

Несколько площадок

Page 27: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Тестирование

Page 28: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Тестирование

Анализ кода

Page 29: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Тестирование

Анализ кода

Тесты без окружения Unit

Page 30: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Тестирование

Анализ кода

Тесты без окружения

Тесты в окружении

Unit

Functional, Integration

Page 31: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Тестирование

Анализ кода

Тесты без окружения

Тесты в окружении

Тесты в «полном» окружении

Unit

Functional, Integration

End-to-end, Performance regression

Page 32: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Тестирование

Анализ кода

Тесты без окружения

Тесты в окружении

Тесты в «полном» окружении

Unit

Functional, Integration

End-to-end, Performance regression

Page 33: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Разделение прав доступа

Page 34: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Разделение прав доступа

Простое разделение прав доступа

Page 35: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Разделение прав доступа

Простое разделение прав доступа

Разные права на окружения

Page 36: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Разделение прав доступа

Простое разделение прав доступа

Разные права на окружения

Multi stage approval

Page 37: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Разделение прав доступа

Простое разделение прав доступа

Разные права на окружения

Multi stage approval

Quorum approval

Page 38: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Разделение прав доступа

Простое разделение прав доступа

Разные права на окружения

Multi stage approval

Quorum approval

Page 39: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Архитектура приложения

Page 40: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Архитектура приложения

Stateless приложение

Page 41: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Архитектура приложения

Stateless приложение

Stateful приложение

Page 42: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Архитектура приложения

Stateless приложение

Stateful приложение

Многокомпонентное приложение

Page 43: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Архитектура приложения

Stateless приложение

Stateful приложение

Многокомпонентное приложение

Микросервисная архитектура

Page 44: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Факторы / Архитектура приложения

Stateless приложение

Stateful приложение

Многокомпонентное приложение

Микросервисная архитектура

Page 45: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Page 46: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git + shell

Page 47: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Docker

Page 48: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Kubernetes + Helm

Page 49: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Kubernetes + Helm + Gitlab

Page 50: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Kubernetes + Helm+ Gitlab Enterprise

Page 51: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Дополнительные требования

Page 52: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Дополнительные требования

Быстро

Page 53: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Дополнительные требования

Быстро

Надёжно

Page 54: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Дополнительные требования

Быстро

НадёжноВыкат и откат с гарантией и без простоя

Page 55: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Дополнительные требования

Быстро

НадёжноВыкат и откат с гарантией и без простоя

SLA 99.9%

Page 56: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Дополнительные требования

Быстро

Надёжно

Дёшево

Выкат и откат с гарантией и без простоя

SLA 99.9%

Page 57: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Дополнительные требования

Быстро

Надёжно

Дёшево

Выкат и откат с гарантией и без простоя

SLA 99.9%

Затраты на управление / администрирование

Page 58: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Дополнительные требования

Быстро

Надёжно

Дёшево

Выкат и откат с гарантией и без простоя

SLA 99.9%

Затраты на управление / администрирование

Затраты на инфраструктуру

Page 59: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Дополнительные требования

Быстро

Надёжно

Дёшево

Выкат и откат с гарантией и без простоя

SLA 99.9%

Затраты на управление / администрирование

Затраты на инфраструктуру

Page 60: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Особые требования Флант

Page 61: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Какой CI/CD бывает?Особые требования Флант

Open Source

Разномасштабность

Интероперабельность

Простота эксплуатации

Будущее

Page 62: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Инструменты

Page 63: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Инструменты Kubernetes

Page 64: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Инструменты Kubernetes

«Чёрный ящик»

YAML Declarative DSL

Page 65: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

N

Deployment StatefulSet

Service Ingress

Job CronJob

N

Page 66: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Инструменты

Стандарт для нас

Page 67: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Инструменты

Page 68: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Инструменты

Управление пакетами

Состоит из 2-х частей

helm (client), tiller (server)

Chart – название пакетов

метаописание, yaml-шаблоны

Наша утилита

Улучшает сборку

Улучшает deploy (чуть-чуть)

github.com/flant/dapp

Page 69: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git

build

test

release

operate

Page 70: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

git

build

test

release

operate

Page 71: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

Page 72: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

Page 73: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

Page 74: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Page 75: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Page 76: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Dockerfile

Page 77: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Dockerfile

docker build

Docker-image

Page 78: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Dockerfile

docker build

Docker-image

Dockerregistry

Page 79: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Dockerfile

docker build

Docker-image

Dockerregistry

Page 80: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Dockerfile

docker build

Docker-image

Docker-image

+tests

Dockerregistry

Page 81: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Dockerfile

docker build

Docker-image

Docker-image

+tests

Dockerregistry

.helm

backend.yaml

frontend.yaml

cron.yaml

Page 82: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Dockerfile

docker build

Docker-image

Docker-image

+tests

Dockerregistry

.helm

backend.yaml

frontend.yaml

cron.yaml

helm install

Page 83: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate build test release

.gitlab-ci.yaml

Dockerfile

docker build

Docker-image

Docker-image

+tests

Dockerregistry

.helm

backend.yaml

frontend.yaml

cron.yaml

helm install

Page 84: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate

Dockerfile

.helm

backend.yaml

frontend.yaml

cron.yaml

docker build

Docker-image

Docker-image

+

.gitlab-ci.yaml

tests

Dockerregistry

build test release

helm install

Page 85: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

.helm

git operate

backend.yaml

frontend.yaml

cron.yaml

Docker-image

Docker-image

+

.gitlab-ci.yaml

tests

Dockerregistry

build test release

Dockerfile

docker build

helm install

Page 86: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

.helm

git operate

backend.yaml

frontend.yaml

cron.yaml

Docker-image

Docker-image

+

.gitlab-ci.yaml

tests

Dockerregistry

build test release

docker build

helm install

Dappfile

Page 87: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

.helm

git operate

backend.yaml

frontend.yaml

cron.yaml

Docker-image

Docker-image

+

.gitlab-ci.yaml

tests

Dockerregistry

build test release

Dappfile

dapp build

helm install

Page 88: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

.helm

git operate

backend.yaml

frontend.yaml

cron.yaml

Docker-image

Docker-image

+

.gitlab-ci.yaml

tests

Dockerregistry

build test release

Dappfile

dapp build

dapp kube deploy

Page 89: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

.helm

git operate

backend.yaml

frontend.yaml

cron.yaml

Docker-image

Docker-image

+

.gitlab-ci.yaml

tests

Dockerregistry

build test release

Dappfile

dapp build

dapp kube deploy

Page 90: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Демо на нашем стенде

Приходите в любое время, мы будем показывать, как вся эта связка работает в деталях и с примерами. И будем отвечать на любые ваши вопросы.

Page 91: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

CI/CD с Kubernetes и Gitlabtips & tricks

Page 92: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что должно быть в Docker образе?

1/8

Page 93: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что должно быть в Docker образе?

Всё, что нужно для работы приложения!

Page 94: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что должно быть в Docker образе?Системные компоненты

# apt-get install php-fpm

Page 95: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что должно быть в Docker образе?Системные компоненты

# apt-get install php-fpm

Package manager

Page 96: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что должно быть в Docker образе?Системные компоненты

# apt-get install php-fpm

Package manager Dependencies

Page 97: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что должно быть в Docker образе?Системные компоненты

# apt-get install php-fpm

Системные библиотеки

# apt-get install libxml2

Package manager Dependencies

Page 98: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что должно быть в Docker образе?Системные компоненты

# apt-get install php-fpm

Системные библиотеки

# apt-get install libxml2

Package manager Dependencies

Исходный код

Page 99: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что должно быть в Docker образе?Системные компоненты

# apt-get install php-fpm

Системные библиотеки

# apt-get install libxml2

Package manager Dependencies

Исходный код Собранные ассеты

Page 100: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Что должно быть в Docker образе?Системные компоненты

# apt-get install php-fpm

Системные библиотеки

# apt-get install libxml2

Package manager Dependencies

Готовые конфигиИсходный код Собранные ассеты

Page 101: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

2/8

Page 102: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

git

Page 103: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Page 104: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз

Page 105: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

Page 106: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

Page 107: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

Всё ок!

Page 108: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

Всё ок!

dockerfile

composer.json

***.phpprod

uctio

n

Page 109: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

dockerfile

composer.json

***.phpprod

uctio

n

Всё ок!

Dockerобраз

Page 110: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

dockerfile

composer.json

***.phpprod

uctio

n

Всё ок!

Dockerобраз

:pro

duct

ion

Page 111: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

dockerfile

composer.json

***.phpprod

uctio

n

Всё ок!

Dockerобраз

:pro

duct

ion=

Page 112: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

dockerfile

composer.json

***.phpprod

uctio

n

Всё ок!

Dockerобраз

:pro

duct

ion=

Page 113: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

dockerfile

composer.json

***.phpprod

uctio

n

Всё ок!

Dockerобраз

:pro

duct

ion=

:v0.7.23

:v0.7.23

Page 114: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

dockerfile

composer.json

***.phpprod

uctio

n

Всё ок!

Dockerобраз

:pro

duct

ion=

:v0.7.23

:v0.7.23

Page 115: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

dockerfile

composer.json

***.phpprod

uctio

n

Всё ок!

Dockerобраз

:pro

duct

ion=

:v0.7.23

:v0.7.23

Page 116: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

QA

dockerfile

composer.json

***.phpprod

uctio

n

Всё ок!

Dockerобраз

:pro

duct

ion=

:v0.7.23

:v0.7.23

Page 117: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

dockerfile

composer.json

***.phpprod

uctio

n

Dockerобраз

:pro

duct

ion=

:v0.7.23

:v0.7.23

Page 118: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

dockerfile

composer.json

***.phpprod

uctio

n

Dockerобраз

:pro

duct

ion=

:v0.7.23

:v0.7.23

QA

Page 119: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

dockerfile

composer.json

***.phpprod

uctio

n

Dockerобраз

:pro

duct

ion=

:v0.7.23

:v0.7.23

QA

Всё ок!

Page 120: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

dockerfile

composer.json

***.phpmas

ter

git

Dockerобраз :m

aste

r

dockerfile

composer.json

***.phpprod

uctio

n

Dockerобраз

:pro

duct

ion=

:v0.7.23

:v0.7.23

QA

Всё ок!

Page 121: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

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

Page 122: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

git branch

Какие бранчи собирать? Как тегировать образы?

git tag

Page 123: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

git branch

Какие бранчи собирать? Как тегировать образы?

временные образы

git tag

Page 124: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

git branch

Какие бранчи собирать? Как тегировать образы?

временные образы

git tag релизные образы

Page 125: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

git branch

Какие бранчи собирать? Как тегировать образы?

временные образы

git tag релизные образы

dev r

eview

integ

ration

demo

Page 126: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

One image to rule them all

git branch

Какие бранчи собирать? Как тегировать образы?

временные образы

git tag релизные образы

dev r

eview

integ

ration

demo

stagin

g

qa

prod

uctio

n

Page 127: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Порядок выката и миграции

3/8

Page 128: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #1

Back

end

Порядок выката и миграции

Page 129: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #1

Back

end

1

DB

Порядок выката и миграции

Page 130: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14

Кейс #1

Back

end

1

DB

Порядок выката и миграции

Page 131: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14

Back

end

DB

1

Кейс #1Порядок выката и миграции

Deploy

Page 132: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #1

Back

end

DB

Mig

ratio

ns1

Порядок выката и миграции

:v0.7.14 -> 0.8.15

:v0.8.15

Deploy

Page 133: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 134: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

:v0.7.14

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 135: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

:v0.7.14

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 136: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 137: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 138: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 139: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 140: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 141: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 142: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

DB

:v0.8.15

Mig

ratio

ns1

Порядок выката и миграции

Page 143: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 144: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 145: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 146: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 147: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 148: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 149: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.7.14

:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 150: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.7.14

:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 151: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.8.15

:v0.7.14

:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 152: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.8.15

:v0.7.14

:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 153: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.14 -> 0.8.15

:v0.8.15

:v0.8.15

:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

Порядок выката и миграции

Page 154: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

:v0.8.15

:v0.8.15

:v0.8.15

Порядок выката и миграции

Page 155: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

:v0.8.15

:v0.8.15

:v0.8.15

Порядок выката и миграции

Ура!

Выкатилось!

Page 156: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Ура!

Выкатилось!:v0.8.15

Кейс #1

Back

end

:v0.8.15

Mig

ratio

ns

DB

1

:v0.8.15

:v0.8.15

:v0.8.15

Порядок выката и миграции

Page 157: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

backend3

migrationsDB1

Порядок выката и миграцииКейс #1

Page 158: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

backend3

migrationsDB1

исполь

зует

использует

Порядок выката и миграцииКейс #1

Page 159: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

backend3

migrationsDB1

исполь

зует

использует

косвенно зависит

Порядок выката и миграцииКейс #1

Page 160: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2Порядок выката и миграции

Page 161: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

:v0.8.15

Порядок выката и миграции

Page 162: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

:v0.8.15

1

Порядок выката и миграции

Page 163: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

:v0.8.15

1

Порядок выката и миграции

Page 164: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 165: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 166: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 167: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 168: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 169: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 170: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 171: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 172: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 173: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

:v0.8.15

Порядок выката и миграции

Page 174: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

Порядок выката и миграции

:v0.8.15

Page 175: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

Порядок выката и миграции

:v0.8.15

Page 176: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Кейс #2

Back

end

Mig

ratio

ns

DB

:v0.8.15

1

Порядок выката и миграции

:v0.8.15

Page 177: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

backend3

migrationsDB1

исполь

зует

использует

косвенно зависит

РезюмеПорядок выката и миграции

Page 178: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Bootstrap базы

4/8

Page 179: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Seed

Page 180: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Seed

DB

Page 181: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Seed

DB load dump

Page 182: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Seed

DB load dump

migrations

Page 183: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Seed

DB load dump

migrations

Page 184: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Seed

DB load dump

Backend migrations

Page 185: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Seed

DB load dump

Backend migrations

Page 186: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Backend

DB load dump

migrations

DB

Seed

Page 187: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Backend

DB load dump

migrations

DB migrations

Seed

Page 188: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Backend

DB load dump

migrations

DB migrations

seed

Seed

Page 189: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Backend

DB load dump

migrations

DB migrations

seed

Seed

Page 190: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Backend

DB load dump

migrations Backend

DB migrations

seed

Seed

Page 191: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Dump

Bootstrap базы

Backend

DB load dump

migrations Backend

DB migrations

seed

Seed

Page 192: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Скорость bootstrap’а

Занимаемое место Полезность Сложность

реализации

Пустая база только структура 5 sec

Seed/fixtures из текущего бранча 1 min

Ночной дамп с seeds/fixtures из master 10 sec

Дамп “для staging” 1 hour

Ночной дамп “для staging” 30 sec

Дамп с production 30 min

Ночной дамп с production 1 min

Page 193: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Скорость bootstrap’а

Занимаемое место Полезность Сложность

реализации

Пустая база только структура

Seed/fixtures из текущего бранча

Ночной дамп с seeds/fixtures из master 10 sec

Дамп “для staging”

Ночной дамп “для staging” 30 sec

Дамп с production

Ночной дамп с production

Page 194: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Deploy

Bootstrap базы

Load: Seeds

Load: Nightly staging dump

Build

Build Deploy

Load: Nightly seeds (from master)

Page 195: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

5/8

Page 196: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

Page 197: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

example.com

Page 198: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

example.com

Page 199: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

example.com

Page 200: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

example.com Graceful shutdown

Page 201: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

Graceful shutdownexample.com

Page 202: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

Graceful shutdownexample.com

Page 203: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

Graceful shutdownexample.com

Page 204: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

Graceful shutdownexample.com

Page 205: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

Graceful shutdownexample.com

Readiness probe

Page 206: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

Graceful shutdownexample.com

Readiness probe

Проверьте (чем угодно)

Page 207: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Выкат действительно без простоя

Graceful shutdownexample.com

Readiness probe

Проверьте (чем угодно)

Правильный размер pod-а и политика обновления

Page 208: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

6/8

Page 209: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

Page 210: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

Environments

production = v0.7.14

Page 211: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

Environments

production = v0.7.14

backend3

memcached

3cron-foo

cron-bar

cron-baz

Redis3

BackgroundJobs

3

Sphinx2

DB3

Page 212: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

Environments

production = v0.7.14

backend3

memcached

3cron-foo

cron-bar

cron-baz

Redis3

BackgroundJobs

3

Sphinx2

DB3

:v0.7.14

:v0.7.14

:v0.7.14

:v0.7.14

Page 213: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

backend3

memcached

3cron-foo

cron-bar

cron-baz

Redis3

BackgroundJobs

3

Sphinx2

DB3

Environments

Pipelines

v0.8.15

:v0.7.14

:v0.7.14

:v0.7.14

:v0.7.14

production = v0.7.14

Page 214: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

Deploy

backend3

memcached

3cron-foo

cron-bar

cron-baz

Redis3

BackgroundJobs

3

Sphinx2

DB3

Environments

Pipelines

v0.8.15

:v0.7.14

:v0.7.14

:v0.7.14

:v0.7.14

production = v0.7.14

Page 215: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

Deploy

backend3

memcached

3cron-foo

cron-bar

cron-baz

Redis3

BackgroundJobs

3

Sphinx2

DB3

Environments

Pipelines

v0.8.15

:v0.7.14

:v0.7.14

:v0.7.14

:v0.7.14

production = v0.7.14

Page 216: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

Deploy

backend3

memcached

3cron-foo

cron-bar

cron-baz

Redis3

BackgroundJobs

3

Sphinx2

DB3

Environments

Pipelines

v0.8.15

:v0.7.14

:v0.7.14

:v0.7.14

:v0.7.14

production = v0.7.14

Page 217: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Атомарность выката

Deploy

backend3

memcached

3cron-foo

cron-bar

cron-baz

Redis3

BackgroundJobs

3

Sphinx2

DB3

Environments

Pipelines

v0.8.15

:v0.7.14

:v0.7.14

:v0.7.14

:v0.7.14

production = v0.7.14

Page 218: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.15

Deploy

memcached

3

Redis3

DB3

Environments

Pipelines

v0.8.15

production = v0.7.14

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend3

:v0.7.14

:v0.7.14

:v0.7.14

:v0.7.14

Атомарность выката

Page 219: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.15

Deploy

memcached

3

Redis3

DB3

Environments

Pipelines

v0.8.15

production = v0.7.14

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend3

:v0.7.14

:v0.7.14

:v0.7.14

Атомарность выката

:v0.8.15

Page 220: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.15

Deploy

memcached

3

Redis3

DB3

Environments

Pipelines

v0.8.15

production = v0.7.14

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend3

:v0.7.14

-> 0.8.

15

:v0.7.14

-> 0.8.

15

:v0.7.14

-> 0.8.

15

:v0.8.15

Атомарность выката

Page 221: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.15

Deploy

memcached

3

Redis3

DB3

Environments

Pipelines

v0.8.15

production = v0.7.14

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend3

:v0.8.15

Атомарность выката

:v0.7.14

-> 0.8.

15

:v0.8.15

:v0.8.15

Page 222: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.15

Deploy

memcached

3

Redis3

DB3

Environments

Pipelines

v0.8.15

production = v0.7.14

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend3

:v0.7.14

-> 0.8.

15

:v0.8.15

Атомарность выката

:v0.8.15

:v0.8.15

Page 223: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.15

Deploy

memcached

3

Redis3

DB3

Environments

Pipelines

v0.8.15

production = v0.7.14

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend3

:v0.7.14

-> 0.8.

15

:v0.8.15

Атомарность выката

ошибка

:v0.8.15

:v0.8.15

Page 224: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.15

Deploy

memcached

3

Redis3

DB3

Environments

Pipelines

v0.8.15

production = v0.7.14

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend3

:v0.7.14

-> 0.8.

15

:v0.8.15

Атомарность выката

ошибка

:v0.8.15

:v0.8.15

Page 225: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.15

Deploy

memcached

3

Redis3

DB3

Environments

Pipelines

v0.8.15

production = v0.7.14

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend3

:v0.7.14

-> 0.8.

15

:v0.8.15

Атомарность выката

ошибка

:v0.8.15

:v0.8.15

Page 226: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Deployошибка

:v0.7.15

memcached

3

Redis3

DB3

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend

Pipelines

v0.8.15 ✖

Environments3

Атомарность выката

production = v0.7.14

:v0.7.14

-> 0.8.

15

:v0.8.15

:v0.8.15

:v0.8.15

Page 227: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

:v0.7.15

Deploy

memcached

3

Redis3

DB3

Environments

Pipelines

v0.8.15

production = v0.7.14

cron-foo

cron-bar

cron-baz

BackgroundJobs

3

Sphinx2

backend3

:v0.7.14

-> 0.8.

15

:v0.8.15

Атомарность выката

ошибка

:v0.8.15

:v0.8.15

Page 228: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения

7/8

Page 229: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения

Ingress Controller

Page 230: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

Page 231: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

git

Page 232: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

git

feat

ure-

x

***.php

Page 233: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

git

feat

ure-

x

***.php

namespace: feature-x

Page 234: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

git

feat

ure-

x

***.php

namespace: feature-x

feature-x.review.example.com

Page 235: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

git

feat

ure-

x

***.php

namespace: feature-x

feature-x.review.example.com

abc ***.php

Page 236: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

git

feat

ure-

x

***.php

namespace: feature-x

feature-x.review.example.com

abc ***.php

abc.review.example.com

namespace: abc

Page 237: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

git

feat

ure-

x

***.php

namespace: feature-x

feature-x.review.example.com

abc ***.php

abc.review.example.com

namespace: abcfeat

ure-

foo

***.php

Page 238: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.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

feat

ure-

xab

cfe

atur

e-fo

o

***.php

***.php

***.php

Page 239: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

feature-x.review.example.com

namespace: feature-x

feature-foo.review.example.com

namespace: feature-foo

git

feat

ure-

xfe

atur

e-fo

o

***.php

***.php

abc.review.example.com

namespace: abc

Page 240: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

feature-x.review.example.com

namespace: feature-x

feature-foo.review.example.com

namespace: feature-foo

git

feat

ure-

xfe

atur

e-fo

o

***.php

***.php

Page 241: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

feature-x.review.example.com

namespace: feature-x

feature-foo.review.example.com

namespace: feature-foo

git

feat

ure-

foo

***.php

Page 242: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Динамические окружения*.review.example.com

Ingress Controller

feature-foo.review.example.com

namespace: feature-foo

git

feat

ure-

foo

***.php

Page 243: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Отображение

branch: new-interface

Динамические окруженияод

ин п

роек

т

Page 244: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Отображение

branch: new-interface

Динамические окруженияод

ин п

роек

т

namespace: new-interface

new-interface.review.example.com

Page 245: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Отображение

branch: new-interface

Динамические окруженияод

ин п

роек

т

namespace: new-interface

new-interface.review.example.com

branch: feature/LLLL___#1342

один

про

ект

+ SL

UG

Page 246: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Отображение

branch: new-interface

Динамические окруженияод

ин п

роек

т

namespace: new-interface

new-interface.review.example.com

branch: feature/LLLL___#1342

один

про

ект

+ SL

UG namespace: feature-llll-dfjre3

feature-llll-dfjre3.review.example.com

Page 247: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Отображение

branch: new-interface

Динамические окруженияод

ин п

роек

т

namespace: new-interface

new-interface.review.example.com

branch: feature/LLLL___#1342

один

про

ект

+ SL

UG namespace: feature-llll-dfjre3

feature-llll-dfjre3.review.example.com

неск

ольк

опр

оект

ов

Page 248: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Отображение

branch: new-interface

Динамические окруженияод

ин п

роек

т

namespace: new-interface

new-interface.review.example.com

branch: feature/LLLL___#1342

один

про

ект

+ SL

UG namespace: feature-llll-dfjre3

feature-llll-dfjre3.review.example.com

неск

ольк

опр

оект

ов project: gimli

branch: bar

Page 249: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Отображение

branch: new-interface

Динамические окруженияод

ин п

роек

т

namespace: new-interface

new-interface.review.example.com

branch: feature/LLLL___#1342

один

про

ект

+ SL

UG namespace: feature-llll-dfjre3

feature-llll-dfjre3.review.example.com

неск

ольк

опр

оект

ов namespace: gimli-barproject: gimli

gimli-bar.review.example.combranch: bar

Page 250: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Отображение

branch: new-interface

Динамические окруженияод

ин п

роек

т

namespace: new-interface

new-interface.review.example.com

branch: feature/LLLL___#1342

один

про

ект

+ SL

UG namespace: feature-llll-dfjre3

feature-llll-dfjre3.review.example.com

неск

ольк

опр

оект

ов namespace: gimli-barproject: gimli

gimli-bar.review.example.combranch: bar

Page 251: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Несколько советовДинамические окружения

Минимизировать использование ресурсов

Page 252: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Несколько советовДинамические окружения

Минимизировать использование ресурсов

Целиком в Kubernetes (включая все СУБД)

Page 253: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Несколько советовДинамические окружения

Минимизировать использование ресурсов

Целиком в Kubernetes (включая все СУБД)

Ограничить публичный доступ

Page 254: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Несколько советовДинамические окружения

Минимизировать использование ресурсов

Целиком в Kubernetes (включая все СУБД)

Ограничить публичный доступ

Как-то ограничивать разработчиков

Page 255: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Несколько советовДинамические окружения

Минимизировать использование ресурсов

Целиком в Kubernetes (включая все СУБД)

Ограничить публичный доступ

Как-то ограничивать разработчиков

Page 256: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Deploy (auto)

Load: Seeds

Load: Nightly staging dump

Build

Build Deploy

Load: Nightly seeds (from master)

Динамические окружения

Page 257: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Deploy (auto)

Load: Seeds

Load: Nightly staging dump

Build

Build Deploy

Load: Nightly seeds (from master)

Stop environment

Динамические окружения

Page 258: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты

8/8

Page 259: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / Анализ кода build test release

Page 260: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / Анализ кода build test release

run tests

Page 261: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / Тесты без окружения (Unit) build test release

Page 262: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / Тесты без окружения (Unit) build test release

Dockerfile

docker build

Docker-image

Page 263: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / Тесты без окружения (Unit) build test release

docker build

Docker-imageDockerfile

docker run

Docker-image

+

Page 264: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / В окружении (Function, Integration)

build test release

Page 265: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / В окружении (Function, Integration)

build test release

Dockerfile

Page 266: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / В окружении (Function, Integration)

build test release

Dockerfile

docker build

Docker-image

Page 267: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / В окружении (Function, Integration)

build test release

Dockerfile

docker build

Docker-image

Dockerregistry

Page 268: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / В окружении (Function, Integration)

build test release

Dockerfile

docker build

Docker-image

Dockerregistry

.helm

Page 269: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / В окружении (Function, Integration)

build test release

Dockerfile

docker build

Docker-image

Dockerregistry

.helm

helm install

Page 270: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / В окружении (Function, Integration)

build test release

helm install

docker build

Docker-image

Job

Dockerregistry

namespace: test-abc

Dockerfile

.helm

Page 271: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Тесты / В окружении (Function, Integration)

build test release

helm install

docker build

Docker-image

helm delete --purge

Job

Dockerregistry

namespace: test-abc

Dockerfile

.helm

Page 272: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Конец

Page 273: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Kubernetes + Helm + Gitlab

Page 274: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Kubernetes + Helm+ Gitlab

Флант

Page 275: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

24×7×365 L1/L2/L3/+ DevOps SLA

30+

Page 276: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

24×7×365 L1/L2/L3/+ DevOps SLA

30+

… и по доступной цене

Page 277: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

Наши 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

Page 278: Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)

git operate

Dockerfile

.helm

backend.yaml

frontend.yaml

cron.yaml

docker build

Docker-image

Docker-image

+

.gitlab-ci.yaml

tests

Dockerregistry

build test release

helm install