werf — наш инструмент для CI-CD в Kubernetes

93aef1d166a8a3536538eff713f80307?s=47 flant
May 27, 2019

werf — наш инструмент для CI-CD в Kubernetes

Доклад технического директора компании «Флант» (https://flant.ru/) Дмитрия Столярова на секции «Непрерывная поставка» конференции DevOpsConf 2019, проходившей в рамках фестиваля РИТ++ 2019 в Москве. О проблемах и вызовах, с которыми сталкиваются при деплое в Kubernetes, возможных путях их решения и реализации в Open Source-утилите для DevOps-инженеров https://github.com/flant/werf

* Текстовый обзор доклада: https://habr.com/ru/company/flant/blog/460351/
* Видео с выступления: https://youtu.be/cK3ackGUTLw
* Анонс доклада на сайте конференции: https://devopsconf.io/moscow-rit/2019/abstracts/5136

93aef1d166a8a3536538eff713f80307?s=128

flant

May 27, 2019
Tweet

Transcript

  1. v4

  2. None
  3. лет Linux в production 11

  4. лет Linux в production 11 лет с контейнерами в Linux

    10
  5. лет Linux в production 11 лет с контейнерами в Linux

    10 лет Docker в production 5
  6. лет Linux в production 11 лет с контейнерами в Linux

    10 лет Docker в production 5 года Kubernetes в production 3
  7. лет Linux в production 11 лет с контейнерами в Linux

    10 лет Docker в production 5 года Kubernetes в production 3 кластеров Kubernetes 100+ приложений 1000+ серверов 2000+
  8. лет Linux в production 11 лет с контейнерами в Linux

    10 лет Docker в production 5 года Kubernetes в production 3 кластеров Kubernetes 100+ приложений 1000+ серверов 2000+
  9. лет Linux в production 11 лет с контейнерами в Linux

    10 лет Docker в production 5 года Kubernetes в production 3 кластеров Kubernetes 100+ приложений 1000+ серверов 2000+
  10. Kubernetes для enterprise Архитектура Внедрение On-premise Обучение использованию Поддержка 24/7

    SLA Консалтинг и экспертиза подробности На стенде Фланта запрос услуги K8S@flant.ru
  11. None
  12. github.com/flant/werf

  13. Дмитрий Столяров Тимофей Кириллов Алексей Игрычев Иван Михейкин

  14. werf – наш инструмент для CI/CD в Kubernetes

  15. werf – наш инструмент для CI/CD в Kubernetes

  16. Soft Production

  17. Soft Production

  18. Soft Production

  19. Soft Production

  20. Soft Production

  21. Soft Production

  22. Soft Production Практики Continuous Delivery с Docker youtu.be/mT5U862_ydU май 2016

    Наш опыт с Kubernetes в небольших проектах youtu.be/CgCLPYJRxbU июнь 2017
  23. Код git

  24. Код IaC build git

  25. Docker-image build Код IaC build git

  26. Docker-image Docker Registry build publish Код IaC build git

  27. IaC run Docker-image Docker Registry build publish Код IaC build

    git
  28. IaC run Docker-image Docker Registry Kubernetes production build publish Код

    IaC build git deploy
  29. IaC run Docker-image Docker Registry Kubernetes production build publish Код

    IaC build git image pull deploy
  30. IaC run Docker-image Docker Registry Kubernetes production build publish Код

    IaC build git image pull deploy Tests
  31. IaC run Docker-image Docker Registry Kubernetes production build publish Код

    IaC build git image pull deploy Tests unit test
  32. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests unit test
  33. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests unit test test
  34. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests build publish deploy deploy unit test test CI
  35. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests build publish deploy deploy unit test test CI
  36. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests CI build publish deploy deploy unit test test
  37. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests unit test test
  38. Собираем Docker-образы быстро и удобно с dapp youtu.be/8R5UDg29Vic ноябрь 2016

    Важная деталь #1
  39. Docker-image Docker Registry Kubernetes test Kubernetes production build publish git

    image pull image pull deploy deploy unit test test Код IaC build IaC run Tests Важная деталь #2
  40. Собираем Docker-образы быстро и удобно с dapp youtu.be/8R5UDg29Vic ноябрь 2016

    Важная деталь #2
  41. git build test release Важная деталь #3 Что такое delivery?

  42. git build test release run Важная деталь #3 Что такое

    delivery?
  43. git build test release run Важная деталь #3 Что такое

    delivery?
  44. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests unit test test
  45. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests unit test test Вырожденный случай #1 – “Чужой” софт
  46. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull Tests unit test test Вырожденный случай #2 – “Java” deploy deploy
  47. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull deploy deploy Tests Вырожденный случай #3 – Мне повезёт! image pull
  48. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests unit test test
  49. GitOps

  50. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests unit test test
  51. IaC run Docker Registry Kubernetes test Kubernetes production publish git

    image pull image pull deploy deploy Tests unit test test Docker-image Код IaC build build
  52. Нюансы сборки Вес образа

  53. FROM ubuntu:18.04 Нюансы сборки Вес образа 76MB

  54. FROM ubuntu:18.04 RUN apt update && apt install -y golang-go

    git Нюансы сборки Вес образа 76MB +553MB
  55. FROM ubuntu:18.04 RUN apt update && apt install -y golang-go

    git ADD . /app/ WORKDIR /app Нюансы сборки Вес образа 76MB +553MB +1MB
  56. FROM ubuntu:18.04 RUN apt update && apt install -y golang-go

    git ADD . /app/ WORKDIR /app RUN go get -d Нюансы сборки Вес образа 76MB +553MB +1MB +3MB
  57. FROM ubuntu:18.04 RUN apt update && apt install -y golang-go

    git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB
  58. FROM ubuntu:18.04 RUN apt update && apt install -y golang-go

    git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB
  59. FROM ubuntu:18.04 RUN apt update && apt install -y golang-go

    git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB
  60. FROM ubuntu:18.04 RUN apt update && apt install -y golang-go

    git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB
  61. FROM ubuntu:18.04 RUN apt update && apt install -y golang-go

    git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB
  62. FROM ubuntu:18.04 RUN apt update && apt install -y golang-go

    git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] FROM alpine:3.9 Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB 6MB
  63. FROM ubuntu:18.04 as build RUN apt update && apt install

    -y golang-go git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] FROM alpine:3.9 Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB 6MB
  64. FROM ubuntu:18.04 as build RUN apt update && apt install

    -y golang-go git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] FROM alpine:3.9 COPY --from=build /app/main . Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB 6MB +9MB
  65. FROM ubuntu:18.04 as build RUN apt update && apt install

    -y golang-go git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] FROM alpine:3.9 COPY --from=build /app/main . Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB 6MB +9MB
  66. FROM ubuntu:18.04 as build RUN apt update && apt install

    -y golang-go git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] FROM alpine:3.9 COPY --from=build /app/main . CMD ["/app/main"] Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB 6MB +9MB
  67. FROM ubuntu:18.04 as build RUN apt update && apt install

    -y golang-go git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] FROM alpine:3.9 COPY --from=build /app/main . CMD ["/app/main"] Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB 6MB +9MB = 15MB
  68. FROM ubuntu:18.04 as build RUN apt update && apt install

    -y golang-go git ADD . /app/ WORKDIR /app RUN go get -d RUN go build -o main . CMD ["/app/main"] FROM alpine:3.9 COPY --from=build /app/main . CMD ["/app/main"] Нюансы сборки Вес образа 76MB +553MB +1MB +3MB +9MB = 644MB 6MB +9MB = 15MB 42 раза!
  69. Нюансы сборки Вес образа Количество слоёв

  70. FROM ubuntu:xenial RUN addgroup --system nginx RUN adduser --system --ingroup

    nginx nginx RUN apt-get update RUN apt-get install -y curl patch git build-essential libexpat-dev libgd-dev RUN curl -fSL http://nginx.org/download/nginx-$V.tar.gz -o nginx.tar.gz RUN tar -zx -f nginx.tar.gz RUN rm nginx.tar.gz RUN git clone https://github.com/haosdent/nginx-limit-upstream.git RUN patch -p1 < nginx-limit-upstream/nginx-1.12.1.patch RUN ./configure $C --with-debug RUN make -j$(getconf _NPROCESSORS_ONLN) RUN mv objs/nginx objs/nginx-debug RUN mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so RUN mv objs/ngx_http_image_filter_module.so bjs/ngx_http_image_filter_module-debug.so RUN mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so RUN mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so RUN ./configure $CONFIG RUN make -j$(getconf _NPROCESSORS_ONLN) RUN make install RUN rm -rf /etc/nginx/html/ RUN mkdir /etc/nginx/conf.d/ RUN mkdir -p /usr/share/nginx/html/ RUN install -m644 html/index.html /usr/share/nginx/html/ ... Нюансы сборки Вес образа Количество слоёв
  71. FROM ubuntu:xenial RUN addgroup --system nginx && \ adduser --system

    --ingroup nginx nginx && \ apt-get update && \ apt-get install -y curl patch git build-essential libexpat-dev libgd-dev curl -fSL http://nginx.org/download/nginx-$V.tar.gz -o nginx.tar.gz tar -zx -f nginx.tar.gz && \ rm nginx.tar.gz RUN git clone https://github.com/haosdent/nginx-limit-upstream.git && \ patch -p1 < nginx-limit-upstream/nginx-1.12.1.patch && \ ./configure $C --with-debug && \ make -j$(getconf _NPROCESSORS_ONLN) && \ mv objs/nginx objs/nginx-debug && \ mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so mv objs/ngx_http_image_filter_module.so bjs/ngx_http_image_filter_module-debug.so mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so ./configure $C && \ make -j$(getconf _NPROCESSORS_ONLN) && \ make install && \ rm -rf /etc/nginx/html/ && \ mkdir /etc/nginx/conf.d/ && \ mkdir -p /usr/share/nginx/html/ && \ install -m644 html/index.html /usr/share/nginx/html/ && \ ... Нюансы сборки Вес образа Количество слоёв
  72. FROM ubuntu:xenial RUN addgroup --system nginx && \ adduser --system

    --ingroup nginx nginx && \ apt-get update && \ apt-get install -y curl patch git build-essential libexpat-dev libgd-dev curl -fSL http://nginx.org/download/nginx-$V.tar.gz -o nginx.tar.gz tar -zx -f nginx.tar.gz && \ rm nginx.tar.gz RUN git clone https://github.com/haosdent/nginx-limit-upstream.git && \ patch -p1 < nginx-limit-upstream/nginx-1.12.1.patch && \ ./configure $C --with-debug && \ make -j$(getconf _NPROCESSORS_ONLN) && \ mv objs/nginx objs/nginx-debug && \ mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so mv objs/ngx_http_image_filter_module.so bjs/ngx_http_image_filter_module-debug.so mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so ./configure $C && \ make -j$(getconf _NPROCESSORS_ONLN) && \ make install && \ rm -rf /etc/nginx/html/ && \ mkdir /etc/nginx/conf.d/ && \ mkdir -p /usr/share/nginx/html/ && \ install -m644 html/index.html /usr/share/nginx/html/ && \ ... Нюансы сборки Вес образа Количество слоёв Дебаг
  73. FROM ubuntu:xenial RUN addgroup --system nginx && \ adduser --system

    --ingroup nginx nginx && \ apt-get update && \ apt-get install -y curl patch git build-essential libexpat-dev libgd-dev curl -fSL http://nginx.org/download/nginx-$V.tar.gz -o nginx.tar.gz tar -zx -f nginx.tar.gz && \ rm nginx.tar.gz RUN git clone https://github.com/haosdent/nginx-limit-upstream.git && \ patch -p1 < nginx-limit-upstream/nginx-1.12.1.patch && \ ./configure $C --with-debug && \ make -j$(getconf _NPROCESSORS_ONLN) && \ mv objs/nginx objs/nginx-debug && \ mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so mv objs/ngx_http_image_filter_module.so bjs/ngx_http_image_filter_module-debug.so mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so ./configure $C && \ make -j$(getconf _NPROCESSORS_ONLN) && \ make install && \ rm -rf /etc/nginx/html/ && \ mkdir /etc/nginx/conf.d/ && \ mkdir -p /usr/share/nginx/html/ && \ install -m644 html/index.html /usr/share/nginx/html/ && \ ... Нюансы сборки Вес образа Количество слоёв Дебаг
  74. FROM ubuntu:xenial RUN addgroup --system nginx && \ adduser --system

    --ingroup nginx nginx && \ apt-get update && \ apt-get install -y curl patch git build-essential libexpat-dev libgd-dev curl -fSL http://nginx.org/download/nginx-$V.tar.gz -o nginx.tar.gz tar -zx -f nginx.tar.gz && \ rm nginx.tar.gz RUN git clone https://github.com/haosdent/nginx-limit-upstream.git && \ patch -p1 < nginx-limit-upstream/nginx-1.12.1.patch && \ ./configure $C --with-debug && \ make -j$(getconf _NPROCESSORS_ONLN) && \ mv objs/nginx objs/nginx-debug && \ mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so mv objs/ngx_http_image_filter_module.so bjs/ngx_http_image_filter_module-debug.so mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so ./configure $C && \ make -j$(getconf _NPROCESSORS_ONLN) && \ make install && \ rm -rf /etc/nginx/html/ && \ mkdir /etc/nginx/conf.d/ && \ mkdir -p /usr/share/nginx/html/ && \ install -m644 html/index.html /usr/share/nginx/html/ && \ ... Нюансы сборки Вес образа Количество слоёв Дебаг
  75. FROM ubuntu:xenial RUN addgroup --system nginx && \ adduser --system

    --ingroup nginx nginx && \ apt-get update && \ apt-get install -y curl patch git build-essential libexpat-dev libgd-dev curl -fSL http://nginx.org/download/nginx-$V.tar.gz -o nginx.tar.gz tar -zx -f nginx.tar.gz && \ rm nginx.tar.gz RUN git clone https://github.com/haosdent/nginx-limit-upstream.git && \ patch -p1 < nginx-limit-upstream/nginx-1.12.1.patch && \ ./configure $C --with-debug && \ make -j$(getconf _NPROCESSORS_ONLN) && \ mv objs/nginx objs/nginx-debug && \ mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so mv objs/ngx_http_image_filter_module.so bjs/ngx_http_image_filter_module-debug.so mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so ./configure $C && \ make -j$(getconf _NPROCESSORS_ONLN) && \ make install && \ rm -rf /etc/nginx/html/ && \ mkdir /etc/nginx/conf.d/ && \ mkdir -p /usr/share/nginx/html/ && \ install -m644 html/index.html /usr/share/nginx/html/ && \ ... Нюансы сборки Вес образа Количество слоёв Дебаг
  76. FROM ubuntu:xenial RUN addgroup --system nginx && \ adduser --system

    --ingroup nginx nginx && \ apt-get update && \ apt-get install -y curl patch git build-essential libexpat-dev libgd-dev curl -fSL http://nginx.org/download/nginx-$V.tar.gz -o nginx.tar.gz tar -zx -f nginx.tar.gz && \ rm nginx.tar.gz RUN git clone https://github.com/haosdent/nginx-limit-upstream.git && \ patch -p1 < nginx-limit-upstream/nginx-1.12.1.patch && \ ./configure $C --with-debug && \ make -j$(getconf _NPROCESSORS_ONLN) && \ mv objs/nginx objs/nginx-debug && \ mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so mv objs/ngx_http_image_filter_module.so bjs/ngx_http_image_filter_module-debug.so mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so ./configure $C && \ make -j$(getconf _NPROCESSORS_ONLN) && \ make install && \ rm -rf /etc/nginx/html/ && \ mkdir /etc/nginx/conf.d/ && \ mkdir -p /usr/share/nginx/html/ && \ install -m644 html/index.html /usr/share/nginx/html/ && \ ... ? Нюансы сборки Вес образа Количество слоёв Дебаг
  77. Step 1/3 : FROM ubuntu:18.04 ---> 7698f282e524 Step 2/3 :

    RUN addgroup --system nginx && adduser --system --ingrou ---> Running in 1ea00c8fa53d ... Removing intermediate container 1ea00c8fa53d ---> f39a30da45b1 Step 3/3 : RUN git clone https://github.com/haosdent/nginx-limit- ---> Running in 473357642c3f ... The command 'git clone ...' returned a non-zero code: 1 Нюансы сборки Вес образа Количество слоёв Дебаг
  78. Step 1/3 : FROM ubuntu:18.04 ---> 7698f282e524 Step 2/3 :

    RUN addgroup --system nginx && adduser --system --ingrou ---> Running in 1ea00c8fa53d ... Removing intermediate container 1ea00c8fa53d ---> f39a30da45b1 Step 3/3 : RUN git clone https://github.com/haosdent/nginx-limit- ---> Running in 473357642c3f ... The command 'git clone ...' returned a non-zero code: 1 Нюансы сборки Вес образа Количество слоёв Дебаг
  79. Step 1/3 : FROM ubuntu:18.04 ---> 7698f282e524 Step 2/3 :

    RUN addgroup --system nginx && adduser --system --ingrou ---> Running in 1ea00c8fa53d ... Removing intermediate container 1ea00c8fa53d ---> f39a30da45b1 Step 3/3 : RUN git clone https://github.com/haosdent/nginx-limit- ---> Running in 473357642c3f ... The command 'git clone ...' returned a non-zero code: 1 $ docker run -ti f39a30da45b1 /bin/bash ... Нюансы сборки Вес образа Количество слоёв Дебаг
  80. Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки

  81. FROM python:3.4 ADD . /app WORKDIR /app RUN pip install

    -r requirements.txt Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки
  82. FROM python:3.4 ADD . /app WORKDIR /app RUN pip install

    -r requirements.txt Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки
  83. FROM python:3.4 ADD . /app WORKDIR /app RUN pip install

    -r requirements.txt Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки
  84. FROM python:3.4 RUN mkdir /app WORKDIR /app Нюансы сборки Вес

    образа Количество слоёв Дебаг Скорость сборки
  85. FROM python:3.4 RUN mkdir /app WORKDIR /app ADD requirements.txt /app/

    RUN pip install -r requirements.txt Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки
  86. FROM python:3.4 RUN mkdir /app WORKDIR /app ADD requirements.txt /app/

    RUN pip install -r requirements.txt ADD . /app Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки
  87. FROM python:3.4 RUN mkdir /app WORKDIR /app ADD requirements.txt /app/

    RUN pip install -r requirements.txt ADD . /app Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки
  88. FROM python:3.4 RUN mkdir /app WORKDIR /app ADD requirements.txt /app/

    RUN pip install -r requirements.txt ADD . /app Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки
  89. FROM python:3.4 RUN mkdir /app WORKDIR /app ADD requirements.txt /app/

    RUN pip install -r requirements.txt ADD . /app Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки
  90. FROM python:3.4 RUN mkdir /app WORKDIR /app ADD requirements-basic.txt /app/

    RUN pip install -r requirements-basic.txt ADD requirements.txt /app/ RUN pip install -r requirements.txt ADD . /app Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки
  91. Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки Много

    образов
  92. FROM php:7.3-fpm ADD sys/php-fpm.conf /etc/php/7.1/fpm/php-fpm.conf RUN mkdir -p /app/lib COPY

    index.php /app COPY lib /app/lib WORKDIR /app FROM nginx:latest ADD sys/nginx.conf /etc/nginx/nginx.conf ADD static/ /usr/share/nginx/html/ FROM php:7.3 RUN mkdir -p /app/consumer COPY consumer /app/consumer WORKDIR /app Dockerfile-backend Dockerfile-frontend Dockerfile-consumer Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки Много образов
  93. FROM php:7.3-fpm ADD sys/php-fpm.conf /etc/php/7.1/fpm/php-fpm.conf RUN mkdir -p /app/lib COPY

    index.php /app COPY lib /app/lib WORKDIR /app Dockerfile-backend FROM nginx:latest ADD sys/nginx.conf /etc/nginx/nginx.conf ADD static/ /usr/share/nginx/html/ FROM php:7.3 RUN mkdir -p /app/consumer COPY consumer /app/consumer WORKDIR /app Dockerfile-frontend Dockerfile-consumer #!/bin/bash docker build -f Dockerfile.frontend . -t frontend:latest docker build -f Dockerfile.backend . -t backend:latest docker build -f Dockerfile.consumer . -t consumer:latest Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки Много образов
  94. FROM nginx:latest ADD sys/nginx.conf /etc/nginx/nginx.conf ADD static/ /usr/share/nginx/html/ FROM php:7.3

    RUN mkdir -p /app/consumer COPY consumer /app/consumer WORKDIR /app Dockerfile-frontend Dockerfile-consumer FROM php:7.3-fpm ADD sys/php-fpm.conf /etc/php/7.1/fpm/php-fpm.conf RUN mkdir -p /app/lib COPY index.php /app COPY lib /app/lib WORKDIR /app Dockerfile-backend Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки Много образов
  95. FROM nginx:latest ADD sys/nginx.conf /etc/nginx/nginx.conf ADD static/ /usr/share/nginx/html/ FROM php:7.3

    RUN mkdir -p /app/consumer COPY consumer /app/consumer WORKDIR /app FROM php:7.3-fpm ADD sys/php-fpm.conf /etc/php/7.1/fpm/php-fpm.conf RUN mkdir -p /app/lib COPY index.php /app COPY lib /app/lib WORKDIR /app Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки Много образов
  96. FROM nginx:latest ADD sys/nginx.conf /etc/nginx/nginx.conf ADD static/ /usr/share/nginx/html/ FROM php:7.3

    RUN mkdir -p /app/consumer COPY consumer /app/consumer WORKDIR /app FROM php:7.3-fpm ADD sys/php-fpm.conf /etc/php/7.1/fpm/php-fpm.conf RUN mkdir -p /app/lib COPY index.php /app COPY lib /app/lib WORKDIR /app Dockerfile Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки Много образов
  97. FROM nginx:latest as frontend ADD sys/nginx.conf /etc/nginx/nginx.conf ADD static/ /usr/share/nginx/html/

    FROM php:7.3 as consumer RUN mkdir -p /app/consumer COPY consumer /app/consumer WORKDIR /app FROM php:7.3-fpm as backend ADD sys/php-fpm.conf /etc/php/7.1/fpm/php-fpm.conf RUN mkdir -p /app/lib COPY index.php /app COPY lib /app/lib WORKDIR /app Dockerfile Нюансы сборки Вес образа Количество слоёв Дебаг Скорость сборки Много образов
  98. FROM nginx:latest as frontend ADD sys/nginx.conf /etc/nginx/nginx.conf ADD static/ /usr/share/nginx/html/

    FROM php:7.3 as consumer RUN mkdir -p /app/consumer COPY consumer /app/consumer WORKDIR /app Нюансы сборки Вес образа Количество слоёв FROM php:7.3-fpm as backend ADD sys/php-fpm.conf /etc/php/7.1/fpm/php-fpm.conf RUN mkdir -p /app/lib COPY index.php /app COPY lib /app/lib WORKDIR /app Dockerfile #!/bin/bash docker build --target frontend . -t frontend:latest docker build --target backend . -t backend:latest docker build --target consumer . -t consumer:latest Дебаг Скорость сборки Много образов
  99. FROM nginx:latest as frontend ADD sys/nginx.conf /etc/nginx/nginx.conf ADD static/ /usr/share/nginx/html/

    FROM php:7.3 as consumer RUN mkdir -p /app/consumer COPY consumer /app/consumer WORKDIR /app Нюансы сборки Вес образа Количество слоёв FROM php:7.3-fpm as backend ADD sys/php-fpm.conf /etc/php/7.1/fpm/php-fpm.conf RUN mkdir -p /app/lib COPY index.php /app COPY lib /app/lib WORKDIR /app Dockerfile #!/bin/bash docker build --target frontend . -t frontend:latest docker build --target backend . -t backend:latest docker build --target consumer . -t consumer:latest Дебаг Скорость сборки Много образов
  100. Вес образа Количество слоёв Дебаг Скорость сборки Много образов

  101. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

  102. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible
  103. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker
  104. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка
  105. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка Распределенная сборка
  106. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка Распределенная сборка Автомагия
  107. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка Распределенная сборка moby/buildkit Автомагия
  108. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка Распределенная сборка moby/buildkit Автомагия
  109. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка Распределенная сборка moby/buildkit Автомагия
  110. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка Распределенная сборка moby/buildkit genuinetools/img Автомагия
  111. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка Распределенная сборка ? Автомагия
  112. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка Распределенная сборка ? Параллельная сборка Автомагия
  113. Вес образа Количество слоёв Дебаг Скорость сборки Много образов Mount

    Ansible Сборка без Docker Параллельная сборка Распределенная сборка ? Параллельная сборка Автомагия
  114. IaC run Docker Registry Kubernetes test Kubernetes production publish git

    image pull image pull deploy deploy Tests unit test test Docker-image Код IaC build build
  115. IaC run Kubernetes test Kubernetes production build Код IaC build

    git image pull image pull deploy deploy Tests unit test test Docker-image Docker Registry publish
  116. IaC run Kubernetes test Kubernetes production build Код IaC build

    git image pull image pull deploy deploy Tests unit test test Docker-image Docker Registry publish №1: Как тегировать образ?
  117. Почему это важно?

  118. Почему это важно?

  119. Почему это важно?

  120. Почему это важно? Следовать Gitflow #1

  121. Почему это важно? Следовать Gitflow Гарантировать воспроизводимость #1 #2

  122. Почему это важно? Следовать Gitflow Гарантировать воспроизводимость #1 #2 Определять

    происхождение #3
  123. Docker Registry myimage: v1.0 1.0 Стратегии тегирования git tag

  124. myimage: v1.0 Stage Docker Registry myimage: v1.0 1.0 Стратегии тегирования

    git tag
  125. myimage: v1.0 Stage Docker Registry myimage: v1.0 1.0 myimage: v1.0

    Production Стратегии тегирования git tag
  126. myimage: v1.0 Stage myimage: v1.0 Docker Registry 1.0 myimage: v1.0

    Production Стратегии тегирования git tag
  127. myimage: v1.0 Stage myimage: v1.0 Docker Registry master 1.0 myimage:

    v1.0 Production Стратегии тегирования git tag
  128. myimage: v1.0 Stage master myimage: v1.0 Docker Registry 1.0 myimage:

    v1.0 Production Стратегии тегирования git tag
  129. myimage: v1.0 Stage master myimage: v1.0 Docker Registry 1.0 myimage:

    v1.0 Production Стратегии тегирования git tag
  130. myimage: v1.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    git tag myimage: v1.0 Production Стратегии тегирования git tag
  131. IaC run Code IaC build git myimage: v1.0 Production myimage:

    v1.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0 git tag Стратегии тегирования git tag
  132. myimage: v1.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 build myimage: v1.0 Production Стратегии тегирования git tag
  133. myimage: v1.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 myimage: v2.0 2.0 publish myimage: v1.0 Production Стратегии тегирования git tag
  134. myimage: v1.0 Stage master myimage: v1.0 Docker Registry 1.0 myimage:

    v2.0 publish myimage: v1.0 Production 2.0 myimage: v2.0 2.0 Стратегии тегирования git tag
  135. myimage: v2.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 2.0 myimage: v1.0 Production Стратегии тегирования git tag
  136. myimage: v2.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 2.0 deploy myimage: v2.0 myimage: v1.0 Production Стратегии тегирования git tag
  137. myimage: v2.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 2.0 myimage: v1.0 Production Стратегии тегирования git tag
  138. myimage: v2.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 2.0 deploy myimage: v2.0 Production myimage: v2.0 Стратегии тегирования git tag
  139. myimage: v2.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 2.0 myimage: v2.0 Production Стратегии тегирования git tag
  140. myimage: v2.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 2.0 myimage: v2.0 Production 1. Поставить тег Стратегии тегирования git tag
  141. myimage: v2.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 2.0 myimage: v2.0 Production 1. Поставить тег 2. Протестировать Стратегии тегирования git tag
  142. myimage: v2.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 2.0 myimage: v2.0 Production 1. Поставить тег 2. Протестировать 3. Выкатить на прод Стратегии тегирования git tag
  143. myimage: v2.0 Stage master myimage: v1.0 Docker Registry 1.0 2.0

    myimage: v2.0 2.0 myimage: v2.0 Production Воспроизводимо, но жутко неудобно 1. Поставить тег 2. Протестировать 3. Выкатить на прод Стратегии тегирования git tag
  144. master 1.0 Стратегии тегирования git tag git commit + tag

  145. Docker Registry myimage 1.0 master 1.0 Стратегии тегирования git tag

    git commit + tag
  146. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Стратегии

    тегирования git tag git commit + tag
  147. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview Стратегии тегирования git tag git commit + tag
  148. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop Стратегии тегирования git tag git commit + tag
  149. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 Стратегии тегирования git tag git commit + tag
  150. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage: #c1 myimage #c1 publish build Стратегии тегирования git tag git commit + tag
  151. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop myimage: #c1 myimage publish build #c1 #c1 Стратегии тегирования git tag git commit + tag
  152. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop myimage #c1 #c1 Стратегии тегирования git tag git commit + tag
  153. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c1 deploy myimage: #c1 Стратегии тегирования git tag git commit + tag
  154. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c1 Стратегии тегирования git tag git commit + tag
  155. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c1 #c2 Стратегии тегирования git tag git commit + tag
  156. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c2 #c2 myimage #c2 Стратегии тегирования git tag git commit + tag
  157. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 Стратегии тегирования git tag git commit + tag
  158. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 release_1.1 Стратегии тегирования git tag git commit + tag
  159. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c3 Стратегии тегирования git tag git commit + tag
  160. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 release_1.1 myimage #c3 #c3 Стратегии тегирования git tag git commit + tag
  161. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Preview

    develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c3 Staging myimage: #c3 deploy myimage: #c3 Стратегии тегирования git tag git commit + tag
  162. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Preview

    develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c3 Staging myimage: #c3 Стратегии тегирования git tag git commit + tag
  163. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Preview

    develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 Staging myimage: #c3 #c3 Стратегии тегирования git tag git commit + tag
  164. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Preview

    develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 Staging myimage: #c3 #c3 Стратегии тегирования git tag git commit + tag
  165. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Preview

    develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 Staging myimage: #c3 Стратегии тегирования git tag git commit + tag
  166. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Preview

    develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c4 publish build Staging myimage: #c3 Стратегии тегирования git tag git commit + tag
  167. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c3 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 deploy myimage: #c4 myimage: #c4 Стратегии тегирования git tag git commit + tag
  168. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c4 Стратегии тегирования git tag git commit + tag
  169. ... Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0

    Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c4 Стратегии тегирования git tag git commit + tag
  170. ... Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0

    Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c4 Стратегии тегирования git tag git commit + tag
  171. ... Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0

    Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c4 Стратегии тегирования git tag git commit + tag
  172. ... Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0

    Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c4 Стратегии тегирования git tag git commit + tag
  173. ... Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0

    Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c4 Стратегии тегирования git tag git commit + tag
  174. ... Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0

    Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c4 #c25 Стратегии тегирования git tag git commit + tag
  175. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c24 #c25 myimage: #c25 publish build myimage #c25 ... Стратегии тегирования git tag git commit + tag
  176. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Production

    myimage: v1.0 Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 deploy myimage: #c25 Стратегии тегирования git tag git commit + tag
  177. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 myimage #c25 ... Стратегии тегирования git tag git commit + tag
  178. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 #c25 myimage #c25 ... Стратегии тегирования git tag git commit + tag
  179. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 myimage #c25 ... Стратегии тегирования git tag git commit + tag
  180. ... Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0

    Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 myimage #c25 #c25 Стратегии тегирования git tag git commit + tag
  181. ... Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0

    Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 myimage #c25 #c25 1.1 Стратегии тегирования git tag git commit + tag
  182. ... Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0

    Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 myimage #c25 #c25 1.1 1.1 Стратегии тегирования git tag git commit + tag
  183. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Production

    myimage: v1.0 Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 1.1 1.1 Стратегии тегирования git tag git commit + tag
  184. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Production

    myimage: v1.1 Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 1.1 deploy myimage: v1.1 1.1 Стратегии тегирования git tag git commit + tag
  185. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Preview

    develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 #c25 1.1 1.1 Production myimage: v1.1 Staging myimage: #c25 Стратегии тегирования git tag git commit + tag
  186. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Preview

    develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 #c25 1.1 1.1 Production myimage: v1.1 Staging myimage: #c25 Стратегии тегирования git tag git commit + tag
  187. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Preview

    develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 #c25 1.1 1.1 Production myimage: v1.1 Staging myimage: #c25 Стратегии тегирования git tag git commit + tag
  188. ... Docker Registry myimage 1.0 master 1.0 Preview develop #c1

    myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 #c25 1.1 Production myimage: v1.1 Staging myimage: #c25 myimage #c25 1.1 Стратегии тегирования git tag git commit + tag
  189. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Production

    myimage: v1.1 Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 1.1 1.1 Стратегии тегирования git tag git commit + tag
  190. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Production

    myimage: v1.1 Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 1.1 1.1 Стратегии тегирования git tag git commit + tag
  191. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Production

    myimage: v1.1 Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 1.1 1.1 И воспроизводимо, и удобно! Стратегии тегирования git tag git commit + tag
  192. myimage #c25 ... Docker Registry myimage 1.0 master 1.0 Production

    myimage: v1.1 Staging Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 1.1 1.1 И воспроизводимо, и удобно! Но, только fast forward! Стратегии тегирования git tag git commit + tag
  193. FROM ruby:2.3 as assets RUN mkdir -p /app WORKDIR /app

    COPY . ./ RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb FROM nginx:alpine COPY --from=assets /app/public /usr/share/nginx/www/public Стратегии тегирования Перезапись git tag git commit + tag Content addressable
  194. FROM ruby:2.3 as assets RUN mkdir -p /app WORKDIR /app

    COPY . ./ RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb FROM nginx:alpine COPY --from=assets /app/public /usr/share/nginx/www/public 8c62b065252f2bc1c6a859acd18df1bb2aba260c47a593d6a7de9b34239727e5 Стратегии тегирования git tag git commit + tag Content addressable
  195. FROM ruby:2.3 as assets RUN mkdir -p /app WORKDIR /app

    COPY . ./ RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb FROM nginx:alpine COPY --from=assets /app/public /usr/share/nginx/www/public 8c62b065252f2bc1c6a859acd18df1bb2aba260c47a593d6a7de9b34239727e5 ab738dd6e9a8fdf3808928b349ec93a2ed2eab03ebffb53cdcedc54f5419024a Стратегии тегирования git tag git commit + tag Content addressable
  196. FROM ruby:2.3 as assets RUN mkdir -p /app WORKDIR /app

    COPY . ./ RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb FROM nginx:alpine COPY --from=assets /app/public /usr/share/nginx/www/public 8c62b065252f2bc1c6a859acd18df1bb2aba260c47a593d6a7de9b34239727e5 ab738dd6e9a8fdf3808928b349ec93a2ed2eab03ebffb53cdcedc54f5419024a RUN mkdir -p /app WORKDIR /app Стратегии тегирования git tag git commit + tag Content addressable
  197. FROM ruby:2.3 as assets RUN mkdir -p /app WORKDIR /app

    COPY . ./ RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb FROM nginx:alpine COPY --from=assets /app/public /usr/share/nginx/www/public 8c62b065252f2bc1c6a859acd18df1bb2aba260c47a593d6a7de9b34239727e5 ab738dd6e9a8fdf3808928b349ec93a2ed2eab03ebffb53cdcedc54f5419024a RUN mkdir -p /app WORKDIR /app RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb Стратегии тегирования git tag git commit + tag Content addressable
  198. FROM ruby:2.3 as assets RUN mkdir -p /app WORKDIR /app

    COPY . ./ RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb FROM nginx:alpine COPY --from=assets /app/public /usr/share/nginx/www/public 8c62b065252f2bc1c6a859acd18df1bb2aba260c47a593d6a7de9b34239727e5 ab738dd6e9a8fdf3808928b349ec93a2ed2eab03ebffb53cdcedc54f5419024a RUN mkdir -p /app WORKDIR /app RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb COPY --from=assets /app/public/usr/share/ nginx/www/public Стратегии тегирования git tag git commit + tag Content addressable
  199. FROM ruby:2.3 as assets RUN mkdir -p /app WORKDIR /app

    COPY . ./ RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb FROM nginx:alpine COPY --from=assets /app/public /usr/share/nginx/www/public 8c62b065252f2bc1c6a859acd18df1bb2aba260c47a593d6a7de9b34239727e5 ab738dd6e9a8fdf3808928b349ec93a2ed2eab03ebffb53cdcedc54f5419024a RUN mkdir -p /app WORKDIR /app RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb COPY --from=assets /app/public/usr/share/ nginx/www/public 261d2204dfe93eb7e59ca7182c7e07d34f97336804679da 90a07e2c8a2ed6c24 SHA256 Стратегии тегирования git tag git commit + tag Content addressable
  200. FROM ruby:2.3 as assets RUN mkdir -p /app WORKDIR /app

    COPY . ./ RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb FROM nginx:alpine COPY --from=assets /app/public /usr/share/nginx/www/public 8c62b065252f2bc1c6a859acd18df1bb2aba260c47a593d6a7de9b34239727e5 ab738dd6e9a8fdf3808928b349ec93a2ed2eab03ebffb53cdcedc54f5419024a RUN mkdir -p /app WORKDIR /app RUN gem install bundler && bundle install RUN bundle exec rake assets:precompile CMD bundle exec puma -C config/puma.rb COPY --from=assets /app/public/usr/share/ nginx/www/public 261d2204dfe93eb7e59ca7182c7e07d34f97336804679da 90a07e2c8a2ed6c24 f0dac297477bfe0c3d0bf1d2bfed61101e4a72910fba90b01ae0c3c29807f252 SHA256 Стратегии тегирования git tag git commit + tag Content addressable
  201. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 myimage #c25 ... Стратегии тегирования git tag git commit + tag Content addressable
  202. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage #c1 myimage: #c18 #c2 myimage #c2 #c3 myimage #c3 release_1.1 #c4 myimage #c4 myimage: #c25 #c25 myimage #c25 ... #sig1 #sig2 #sig3 #sig4 #sig25 Стратегии тегирования git tag git commit + tag Content addressable
  203. #c1 #c2 #c3 #c4 #c25 Docker Registry myimage 1.0 master

    1.0 Production myimage: v1.0 Staging Preview develop myimage myimage: #sig18 myimage myimage release_1.1 myimage myimage: #sig25 myimage ... #sig1 #sig2 #sig3 #sig4 #sig25 #sig1 #sig2 #sig3 #sig4 #sig25 Стратегии тегирования git tag git commit + tag Content addressable
  204. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage myimage: #sig18 #c2 myimage #c3 myimage release_1.1 #c4 myimage myimage: #sig25 myimage ... #sig1 #sig2 #sig3 #sig4 #sig25 #sig1 #sig2 #sig3 #sig4 #c25 #sig25 #c26 #sig25 Стратегии тегирования git tag git commit + tag Content addressable
  205. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage myimage: #sig18 #c2 myimage #c3 myimage release_1.1 #c4 myimage myimage: #sig25 ... #sig1 #sig2 #sig3 #sig4 #sig1 #sig2 #sig3 #sig4 #c25 #sig25 #c26 #sig25 myimage #sig25 Стратегии тегирования git tag git commit + tag Content addressable
  206. Docker Registry myimage 1.0 master 1.0 Production myimage: v1.0 Staging

    Preview develop #c1 myimage myimage: #sig18 #c2 myimage #c3 myimage release_1.1 #c4 myimage myimage: #sig25 ... #sig1 #sig2 #sig3 #sig4 #sig1 #sig2 #sig3 #sig4 #c25 #sig25 #c26 #sig25 myimage #sig25 deploy myimage: #sig25 Стратегии тегирования git tag git commit + tag Content addressable
  207. Docker Registry myimage 1.0 master 1.0 Production myimage: #sig25 Staging

    Preview develop #c1 myimage myimage: #sig18 #c2 myimage #c3 myimage release_1.1 #c4 myimage myimage: #sig25 ... #sig1 #sig2 #sig3 #sig4 #sig1 #sig2 #sig3 #sig4 #c25 #sig25 #c26 #sig25 myimage #sig25 Стратегии тегирования git tag git commit + tag Content addressable
  208. Docker Registry myimage 1.0 master 1.0 Production myimage: #sig25 Staging

    Preview develop #c1 myimage myimage: #sig18 #c2 myimage #c3 myimage release_1.1 #c4 myimage myimage: #sig25 ... #sig1 #sig2 #sig3 #sig4 #sig1 #sig2 #sig3 #sig4 #c25 #sig25 #c26 #sig25 myimage #sig25 Стратегии тегирования git tag git commit + tag Content addressable
  209. Docker Registry myimage 1.0 master 1.0 Production myimage: #sig25 Staging

    Preview develop #c1 myimage myimage: #sig18 #c2 myimage #c3 myimage release_1.1 #c4 myimage myimage: #sig25 ... #sig1 #sig2 #sig3 #sig4 #sig1 #sig2 #sig3 #sig4 myimage #sig25 #c25 #sig25 #c26 #sig25 Стратегии тегирования git tag git commit + tag Content addressable
  210. Docker Registry myimage 1.0 master 1.0 Production myimage: #sig25 Staging

    Preview develop #c1 myimage myimage: #sig18 #c2 myimage #c3 myimage release_1.1 #c4 myimage myimage: #sig25 ... #sig1 #sig2 #sig3 #sig4 #sig1 #sig2 #sig3 #sig4 myimage #sig25 #c25 #sig25 #c26 #sig25 SHA256 ??? Стратегии тегирования git tag git commit + tag Content addressable
  211. ? Стратегии тегирования git tag git commit + tag Content

    addressable
  212. stage image Стратегии тегирования git tag git commit + tag

    Content addressable
  213. master Code git IaC build Стратегии тегирования git tag git

    commit + tag Content addressable
  214. master Code from git beforeInstall install beforeSetup setup IaC build

    Стратегии тегирования git tag git commit + tag Content addressable
  215. master beforeInstall Code from git beforeInstall install beforeSetup setup IaC

    build Стратегии тегирования git tag git commit + tag Content addressable
  216. master beforeInstall Code git install beforeSetup setup IaC build #sig1

    from beforeInstall Стратегии тегирования git tag git commit + tag Content addressable
  217. master beforeInstall Code git install beforeSetup setup IaC build from

    beforeInstall #sig1 id образа SHA256 Стратегии тегирования git tag git commit + tag Content addressable
  218. master beforeInstall #sig1 Code from git beforeInstall install beforeSetup setup

    IaC build Стратегии тегирования git tag git commit + tag Content addressable
  219. master beforeInstall #sig1 git archive Code from git beforeInstall install

    beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  220. master beforeInstall #sig1 git archive Code from git beforeInstall install

    beforeSetup setup IaC build #sig2 Стратегии тегирования git tag git commit + tag Content addressable
  221. master beforeInstall git archive from git beforeInstall install beforeSetup setup

    IaC build #sig1 Code #sig2 SHA256 Стратегии тегирования git tag git commit + tag Content addressable
  222. master beforeInstall #sig1 git archive #sig2 Code from git beforeInstall

    install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  223. master beforeInstall #sig1 git archive #sig2 install #sig3 Code from

    git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  224. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup #sig4

    Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  225. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup setup

    #sig5 #sig4 Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  226. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup setup

    #sig5 #sig4 Code from git beforeInstall install beforeSetup setup IaC build image Стратегии тегирования git tag git commit + tag Content addressable
  227. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup setup

    #sig5 #sig4 Code from git beforeInstall install beforeSetup setup IaC build image tag Стратегии тегирования git tag git commit + tag Content addressable
  228. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup setup

    #sig5 #sig4 image tag Стратегии тегирования git tag git commit + tag Content addressable
  229. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup #sig4

    setup #sig5 image tag Стратегии тегирования git tag git commit + tag Content addressable
  230. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup #sig4

    setup #sig5 image tag Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  231. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup #sig4

    setup #sig5 git patch #sig6 image tag Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  232. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup #sig4

    setup #sig5 git patch #sig6 image tag Code from git beforeInstall install beforeSetup setup IaC build diff Стратегии тегирования git tag git commit + tag Content addressable
  233. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup #sig4

    setup git patch image tag from git beforeInstall install beforeSetup setup IaC build SHA256 (diff) #sig5 #sig6 Code Стратегии тегирования git tag git commit + tag Content addressable
  234. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup #sig4

    setup #sig5 git patch #sig6 image tag Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  235. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup #sig4

    setup #sig5 git patch #sig6 image tag image tag Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  236. master beforeInstall #sig1 git archive #sig2 install #sig3 beforeSetup #sig4

    setup #sig5 git patch #sig6 image tag image tag Стратегии тегирования git tag git commit + tag Content addressable
  237. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag Стратегии тегирования git tag git commit + tag Content addressable
  238. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  239. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  240. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag git patch #sig7 Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  241. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag git patch #sig7 Code from git beforeInstall install beforeSetup setup IaC build diff Стратегии тегирования git tag git commit + tag Content addressable
  242. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag git patch #sig7 beforeSetup #sig8 Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  243. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag git patch #sig7 beforeSetup #sig8 setup #sig9 Code from git beforeInstall install beforeSetup setup IaC build Стратегии тегирования git tag git commit + tag Content addressable
  244. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag git patch #sig7 beforeSetup #sig8 setup #sig9 Code from git beforeInstall install beforeSetup setup IaC build image tag Стратегии тегирования git tag git commit + tag Content addressable
  245. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag git patch #sig7 beforeSetup #sig8 setup #sig9 image tag Стратегии тегирования git tag git commit + tag Content addressable
  246. beforeSetup #sig4 master setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 image tag image tag git patch #sig7 beforeSetup #sig8 setup #sig9 image tag Docker Registry Stages Storage Стратегии тегирования git tag git commit + tag Content addressable
  247. master image tag image tag image tag Docker Registry beforeSetup

    #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1 git archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage Стратегии тегирования git tag git commit + tag Content addressable
  248. master image tag image tag image tag Docker Registry beforeSetup

    #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1 git archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage Стратегии тегирования git tag git commit + tag Content addressable
  249. master beforeSetup #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage image tag image tag image tag Docker Registry Стратегии тегирования git tag git commit + tag Content addressable
  250. master beforeSetup #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage image tag image tag image tag Docker Registry Стратегии тегирования git tag git commit + tag Content addressable
  251. master beforeSetup #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1

    git archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage image tag image tag image tag Docker Registry Стратегии тегирования git tag git commit + tag Content addressable
  252. IaC run Kubernetes test Kubernetes production build Код IaC build

    git image pull image pull deploy deploy Tests unit test test Docker-image Docker Registry publish
  253. IaC run Kubernetes test Kubernetes production build Код IaC build

    git image pull image pull deploy deploy Tests unit test test Docker-image Docker Registry publish
  254. test build Код IaC build git image pull image pull

    Tests unit test IaC run Docker-image Docker Registry Kubernetes test Kubernetes production deploy deploy rgstr.exm.pl/some/image/name:<tag> + annotations! publish
  255. IaC run Kubernetes test Kubernetes production build Код IaC build

    git image pull image pull deploy deploy Tests unit test test Docker-image Docker Registry publish
  256. IaC run Kubernetes test Kubernetes production build Код IaC build

    git image pull image pull deploy deploy Tests unit test test Docker-image Docker Registry publish №2: Очистка
  257. Docker Registry Repo

  258. Docker Registry Repo latest layer layer layer

  259. Docker Registry Repo latest layer layer layer latest layer

  260. Docker Registry Repo latest layer layer layer latest layer

  261. Docker Registry Repo layer layer latest layer layer

  262. Docker Registry Repo layer layer layer latest layer

  263. Docker Registry Repo layer layer layer latest layer Garbage Collection

  264. Docker Registry Repo v1.0 v1.1 v1.2 v2.0 v2.1 v3.1 layer

    layer layer layer layer layer layer layer layer layer layer layer layer layer layer layer
  265. Docker Registry Repo v1.0 v1.1 v1.2 v2.0 v2.1 v3.1 layer

    layer layer layer layer layer layer layer layer layer layer layer layer layer layer layer
  266. Docker Registry Repo v1.0 v1.1 v1.2 v2.0 v2.1 v3.1 layer

    layer layer layer layer layer layer layer layer layer layer layer layer layer layer layer Удаление старых тегов
  267. Стратегии очистки Не чистить

  268. Стратегии очистки Не чистить Полный сброс

  269. Стратегии очистки Не чистить Полный сброс Blue-green

  270. Стратегии очистки Не чистить Полный сброс Blue-green По времени

  271. Стратегии очистки Не чистить Полный сброс Blue-green По времени Вручную

  272. Стратегии очистки Полный сброс Blue-green По времени Вручную Не чистить

  273. Стратегии очистки Полный сброс Blue-green По времени Вручную Не чистить

  274. ?

  275. None
  276. #1 Git head

  277. #1 Git head теги: 0.1, 0.2, 1.0

  278. #1 Git head теги: 0.1, 0.2, 1.0 бранчи: master develop

    release-1.0 hotfix-xxx feature-yyy
  279. #1 Git head теги: 0.1, 0.2, 1.0 бранчи: master develop

    release-1.0 hotfix-xxx feature-yyy
  280. #1 Git head теги: 0.1, 0.2, 1.0 бранчи: master develop

    release-1.0 hotfix-xxx feature-yyy Production myimage: v1.0 Staging Preview myimage: #c18 myimage: #c25
  281. Production myimage: v1.0 Staging Preview myimage: #c18 myimage: #c25 #1

    Git head теги: 0.1, 0.2, 1.0 бранчи: master develop release-1.0 hotfix-xxx feature-yyy #2 Выкачено сейчас pod
  282. Production myimage: v1.0 Staging Preview myimage: #c18 myimage: #c25 #1

    Git head теги: 0.1, 0.2, 1.0 бранчи: master develop release-1.0 hotfix-xxx feature-yyy #2 Выкачено сейчас #3 “Было” выкачено старые ReplicaSet’ы (deploy) helm-релизы pod
  283. #1 Git head теги: 0.1, 0.2, 1.0 бранчи: master develop

    release-1.0 hotfix-xxx feature-yyy #2 Выкачено сейчас #3 “Было” выкачено старые ReplicaSet’ы (deploy) helm-релизы pod whitelist
  284. beforeSetup #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1 git

    archive #sig2 install #sig3 image tag image tag git patch #sig7 beforeSetup #sig8 setup #sig9 image tag Docker Registry Stages Storage
  285. beforeSetup #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1 git

    archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage image tag image tag image tag Docker Registry
  286. beforeSetup #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1 git

    archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage image tag image tag image tag Docker Registry whitelist
  287. beforeSetup #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1 git

    archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage image tag image tag image tag Docker Registry whitelist
  288. beforeSetup #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1 git

    archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage image tag Docker Registry
  289. beforeSetup #sig4 setup #sig5 git patch #sig6 beforeInstall #sig1 git

    archive #sig2 install #sig3 git patch #sig7 beforeSetup #sig8 setup #sig9 Stages Storage image tag Docker Registry
  290. beforeInstall #sig1 git archive #sig2 install #sig3 git patch #sig7

    beforeSetup #sig8 setup #sig9 Stages Storage image tag Docker Registry beforeSetup #sig4 setup #sig5 git patch #sig6 сироты
  291. beforeInstall #sig1 git archive #sig2 install #sig3 git patch #sig7

    beforeSetup #sig8 setup #sig9 Stages Storage image tag Docker Registry beforeSetup #sig4 setup #sig5 git patch #sig6 сироты
  292. beforeInstall #sig1 git archive #sig2 install #sig3 git patch #sig7

    beforeSetup #sig8 setup #sig9 Stages Storage image tag Docker Registry
  293. None
  294. IaC run Kubernetes test Kubernetes production build Код IaC build

    git image pull image pull deploy deploy Tests unit test test Docker-image Docker Registry publish
  295. test IaC run Docker-image Docker Registry build publish Код IaC

    build git image pull image pull Tests unit test deploy deploy Kubernetes production Kubernetes test
  296. master IaC run git

  297. master IaC run git

  298. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels:

    app: nginx minReadySeconds: 5 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
  299. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels:

    app: nginx minReadySeconds: 5 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: 2019-05-25T14:54:22Z generation: 1 name: nginx-deployment namespace: default resourceVersion: "248221274" selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment uid: fb75f366-7efc-11e9-ac27-52540035a73b spec: minReadySeconds: 5 progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: nginx spec: containers: - image: nginx:1.7.9 imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 status: conditions: [ ... ] observedGeneration: 1 readyReplicas: 1 replicas: 1 unavailableReplicas: 1 updatedReplicas: 1
  300. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels:

    app: nginx minReadySeconds: 5 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: 2019-05-25T14:54:22Z generation: 1 name: nginx-deployment namespace: default resourceVersion: "248221274" selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment uid: fb75f366-7efc-11e9-ac27-52540035a73b spec: minReadySeconds: 5 progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: nginx spec: containers: - image: nginx:1.7.9 imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 status: conditions: [ ... ] observedGeneration: 1 readyReplicas: 1 replicas: 1 unavailableReplicas: 1 updatedReplicas: 1 Идентификаторы 1.
  301. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels:

    app: nginx minReadySeconds: 5 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: 2019-05-25T14:54:22Z generation: 1 name: nginx-deployment namespace: default resourceVersion: "248221274" selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment uid: fb75f366-7efc-11e9-ac27-52540035a73b spec: minReadySeconds: 5 progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: nginx spec: containers: - image: nginx:1.7.9 imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 status: conditions: [ ... ] observedGeneration: 1 readyReplicas: 1 replicas: 1 unavailableReplicas: 1 updatedReplicas: 1 Идентификаторы 1. Служебная информация 2.
  302. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels:

    app: nginx minReadySeconds: 5 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: 2019-05-25T14:54:22Z generation: 1 name: nginx-deployment namespace: default resourceVersion: "248221274" selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment uid: fb75f366-7efc-11e9-ac27-52540035a73b spec: minReadySeconds: 5 progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: nginx spec: containers: - image: nginx:1.7.9 imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 status: conditions: [ ... ] observedGeneration: 1 readyReplicas: 1 replicas: 1 unavailableReplicas: 1 updatedReplicas: 1 Идентификаторы 1. Служебная информация 2. Значения по-умолчанию 3.
  303. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels:

    app: nginx minReadySeconds: 5 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: 2019-05-25T14:54:22Z generation: 1 name: nginx-deployment namespace: default resourceVersion: "248221274" selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment uid: fb75f366-7efc-11e9-ac27-52540035a73b spec: minReadySeconds: 5 progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: nginx spec: containers: - image: nginx:1.7.9 imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 status: conditions: [ ... ] observedGeneration: 1 readyReplicas: 1 replicas: 1 unavailableReplicas: 1 updatedReplicas: 1 Идентификаторы 1. Служебная информация 2. Значения по-умолчанию 3. Статус 4.
  304. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels:

    app: nginx minReadySeconds: 5 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: 2019-05-25T14:54:22Z generation: 1 name: nginx-deployment namespace: default resourceVersion: "248221274" selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment uid: fb75f366-7efc-11e9-ac27-52540035a73b spec: minReadySeconds: 5 progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: nginx spec: containers: - image: nginx:1.7.9 imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 status: conditions: [ ... ] observedGeneration: 1 readyReplicas: 1 replicas: 1 unavailableReplicas: 1 updatedReplicas: 1 Идентификаторы 1. Служебная информация 2. Значения по-умолчанию 3. Статус 4. Admission webhook 5.
  305. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels:

    app: nginx minReadySeconds: 5 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: 2019-05-25T14:54:22Z generation: 1 name: nginx-deployment namespace: default resourceVersion: "248221274" selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment uid: fb75f366-7efc-11e9-ac27-52540035a73b spec: minReadySeconds: 5 progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: nginx spec: containers: - image: nginx:1.7.9 imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 status: conditions: [ ... ] observedGeneration: 1 readyReplicas: 1 replicas: 1 unavailableReplicas: 1 updatedReplicas: 1 Идентификаторы 1. Служебная информация 2. Значения по-умолчанию 3. Статус 4. Admission webhook 5. Контроллеры всех видов и планировщик 6.
  306. master IaC run git

  307. master IaC run git live

  308. master IaC run git live

  309. master IaC run git IaC run git live

  310. master IaC run git IaC run git new live

  311. master IaC run git IaC run git last-applied new live

  312. last-applied new live

  313. last-applied new live 1. Diff

  314. last-applied new live 1. Diff 2. Patch

  315. last-applied new live 1. Diff 2. Patch 2-way merge

  316. last-applied new live 1. Diff 2. Patch 2-way merge

  317. last-applied new live last-applied new live 1. Diff 2. Patch

    2-way merge 3-way merge
  318. last-applied new live 1. Что удалено? last-applied new live 1.

    Diff 2. Patch 2-way merge 3-way merge
  319. last-applied new live 2. Что добавлено или изменено? 1. Что

    удалено? last-applied new live 1. Diff 2. Patch 2-way merge 3-way merge
  320. last-applied new live 2. Что добавлено или изменено? 1. Что

    удалено? 3. Patch last-applied new live 1. Diff 2. Patch 2-way merge 3-way merge
  321. last-applied new live 2. Что добавлено или изменено? 1. Что

    удалено? 3. Patch last-applied new live 1. Diff 2. Patch 2-way merge 3-way merge
  322. 2-way merge 3-way merge

  323. 2-way merge 3-way merge Декларативный подход не так прост!

  324. 2-way merge 3-way merge Декларативный подход не так прост! Но

    без него всё сильно хуже.
  325. CI ...

  326. CI event

  327. CI event start job deploy

  328. CI event YAML or JSON templates start job deploy

  329. CI event YAML or JSON templates start job deploy Template

    Engine
  330. CI event YAML or JSON templates start job deploy Template

    Engine Jsonnet ... > sed > envsubst Helm
  331. CI event YAML or JSON templates start job deploy Template

    Engine
  332. CI event YAML or JSON templates start job deploy Template

    Engine images info
  333. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration
  334. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration apply Kubernetes API
  335. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration apply > kubectl apply > helm Kubernetes API ...
  336. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration apply Kubernetes API N-way merge magic
  337. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration apply Kubernetes API okay N-way merge magic
  338. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration apply Kubernetes API okay okay N-way merge magic
  339. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration apply Kubernetes API okay okay okay N-way merge magic
  340. CI event YAML or JSON templates start job deploy Template

    Engine images info Rendered Configuration apply Kubernetes API okay okay okay N-way merge magic Применено != Выкачено
  341. Rendered Configuration apply Frontend Backend MongoDB :v0.8.14 :v0.8.14

  342. Rendered Configuration apply Frontend Backend MongoDB N-way merge magic :v0.8.14

    :v0.8.14
  343. Rendered Configuration apply Frontend Backend MongoDB N-way merge magic :v0.8.14

    -> 0.8.15 :v0.8.14 -> 0.8.15
  344. Rendered Configuration apply Frontend Backend MongoDB N-way merge magic :v0.8.14

    -> 0.8.15 :v0.8.14 -> 0.8.15 okay
  345. Rendered Configuration apply okay okay Frontend Backend MongoDB N-way merge

    magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  346. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  347. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  348. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  349. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  350. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  351. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  352. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  353. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  354. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :v0.8.14 -> 0.8.15
  355. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :0.8.15
  356. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :0.8.15
  357. Rendered Configuration apply okay okay okay Frontend Backend MongoDB N-way

    merge magic :v0.8.14 -> 0.8.15 :0.8.15 Пуля вылетела, проблемы на вашей стороне!
  358. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration Kubernetes API
  359. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration Tracker Kubernetes API events logs
  360. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration Tracker Kubernetes API events logs
  361. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration Tracker Kubernetes API events logs apply N-way merge magic
  362. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration Tracker Kubernetes API events logs fail apply N-way merge magic fail fail
  363. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration Tracker Kubernetes API events logs apply N-way merge magic okay
  364. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration Tracker Kubernetes API events logs apply N-way merge magic okay okay
  365. CI event YAML or JSON templates start job deploy Template

    Engine Rendered Configuration Tracker Kubernetes API events logs apply okay
  366. okay apply CI event YAML or JSON templates start job

    deploy Template Engine Rendered Configuration Tracker Kubernetes API events logs okay okay
  367. okay apply CI event YAML or JSON templates start job

    deploy Template Engine Rendered Configuration Tracker Kubernetes API events logs okay okay 108 github.com/flant/kubedog kubedog Go library for “state tracking” simple CLI +
  368. Tracker Kubernetes API events logs

  369. Tracker events logs Frontend Backend MongoDB

  370. events logs Frontend Backend MongoDB

  371. events logs Frontend Backend MongoDB metadata: ... annotations: werf.io/fail-mode: IgnoreAndContinueDeployProcess

    FailWholeDeployProcessImmediately HopeUntilEndOfDeployProcess Deployment/StatefullSet YAML
  372. events logs FailWholeDeployProcessImmediately Frontend Backend MongoDB

  373. events logs FailWholeDeployProcessImmediately HopeUntilEndOfDeployProcess HopeUntilEndOfDeployProcess Frontend Backend MongoDB

  374. events logs metadata: ... annotations: werf.io/fail-mode: IgnoreAndContinueDeployProcess FailWholeDeployProcessImmediately HopeUntilEndOfDeployProcess Deployment/StatefullSet

    YAML Frontend Backend MongoDB
  375. events logs metadata: ... annotations: werf.io/fail-mode: IgnoreAndContinueDeployProcess FailWholeDeployProcessImmediately HopeUntilEndOfDeployProcess werf.io/failures-allowed-per-relplica:

    3 Frontend Backend MongoDB Deployment/StatefullSet YAML
  376. events logs metadata: ... annotations: werf.io/fail-mode: IgnoreAndContinueDeployProcess FailWholeDeployProcessImmediately HopeUntilEndOfDeployProcess werf.io/failures-allowed-per-relplica:

    3 werf.io/show-logs-until: PodIsReady ControllerIsReady EndOfDeploy Frontend Backend MongoDB Deployment/StatefullSet YAML
  377. А что мы вообще хотим?

  378. Надежная декларативность 1. А что мы вообще хотим? Реальный статус

    2.
  379. Надежная декларативность 1. А что мы вообще хотим? Реальный статус

    2. Логи (только полезные) 3.
  380. Надежная декларативность 1. А что мы вообще хотим? Реальный статус

    2. Логи (только полезные) 3. Прогресс 4.
  381. Надежная декларативность 1. А что мы вообще хотим? Реальный статус

    2. Логи (только полезные) 3. Прогресс 4. Автоматический откат 5.
  382. None
  383. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests unit test test
  384. IaC run Docker Registry Kubernetes test Kubernetes production publish git

    image pull image pull deploy deploy Tests unit test test Docker-image Код IaC build build
  385. IaC run Kubernetes test Kubernetes production build Код IaC build

    git image pull image pull deploy deploy Tests unit test test Docker-image Docker Registry publish
  386. test IaC run Docker-image Docker Registry build publish Код IaC

    build git image pull image pull Tests unit test deploy deploy Kubernetes production Kubernetes test
  387. IaC run Docker-image Docker Registry Kubernetes test Kubernetes production build

    publish Код IaC build git image pull image pull deploy deploy Tests unit test test
  388. Попробуйте werf.io Automagic Helm Tiller kubedog client-go single binary go-containerregistry

    сделано с во Фланте Оцените v1.0.1-beta.8 784 Дайте фидбек Присоединяйтесь
  389. None
  390. Всё сложнее, чем кажется с первого взгляда. Дьявол кроется в

    деталях!
  391. Всё сложнее, чем кажется с первого взгляда. Дьявол кроется в

    деталях! Любой софт – сырое и глючное говно... пока им не начнут пользоваться.
  392. Всё сложнее, чем кажется с первого взгляда. Дьявол кроется в

    деталях! Любой софт – сырое и глючное говно... пока им не начнут пользоваться. Давайте вместе добьем эту тему! И пойдем дальше, решать другие вопросы!
  393. Спасибо! Дмитрий Столяров dmitry.stolyarov@flant.com Тимофей Кириллов timofey.kirillov@flant.com Алексей Игрычев alexey.igrychev@flant.com

    Иван Михейкин ivan.mikheykin@flant.com Наш блог на Хабре habr.com/company/flant Наш YouTube-канал youtube.com/c/Флант github.com/flant/werf 784 werf.io