ááąá 27 áááşááąáˇáá˝ááş áá˝á˛ááąáŹáşááá áşá áááşáá áşáááŻááşá¸áĄááźá áş ááťááşá¸ááááˇáş DevOpsConf 2019 ááŽááŹááśá "á ááşáááşáááźááş ááąá¸áááŻáˇááźááşá¸" ááášáá áá áşá áááşáá áşáááŻááşá¸áĄááąááźááˇáşá Kubernetes áážá "werf - ááťá˝ááşáŻááşáááŻáˇá CI/CD áĄáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááááááŹ" áĄá áŽáááşááśá áŹááᯠááąá¸áĄááşáá˛áˇááŤáááşá áĄá˛ááŤáá˝áąáĄááźáąáŹááşá¸ááźáąáŹááąáᏠKubernetes ááᯠáĄááŻáśá¸ááźáŻááŹáá˝ááş áá°áááŻááşá¸ááźáŻáśáá˝áąáˇáááąáŹ ááźáżááŹááťáŹá¸áážááˇáş á áááşááąáŤáşáážáŻááťáŹá¸ááťááşááźááşá¸ááááŹáááşáážáŹá¸áááŻááşáááşáááŻááşááąáŹ áá˝á˛ááźáŹá¸áážáŻááťáŹá¸áĄááźááşá ááźá áşáááŻááşááťáąáážáááąáŹ ááźáąáážááşá¸ááťááşááťáŹá¸ááᯠáá˝á˛ááźááşá¸á áááşááźáŹááźááşá¸ááźááˇáş áááşá¸ááᯠOpen Source áá°á¸ááşáá áşááŻáá˝ááş áááşáááŻáˇááŻááşááąáŹááşááźáąáŹááşá¸ ááźáááŤáááşá .
áááşááźááťáááşáážá áá ááťá˝ááşáŻááşáááŻáˇá áĄááŻáśá¸áááşáážáŻ (ááááş dapp ááŻááąáŤáşáááş) áááş ááááŻááşá¸áááşáážááşáááŻááşáá áşááŻáááŻáˇ ááąáŹááşáážááá˝áŹá¸ááźáŽááźá áşáááşá GitHub áá˝ááş ááźááş áááá â DevOps áĄááşááťááşááŽááŹááťáŹá¸á á˝áŹáĄáá˝ááş áááşá¸á ááźáŽá¸áá˝áŹá¸ááŹááąááąáŹ ááŻáśá¸á á˝á˛áá°áĄáááŻááşá¸áĄáááŻááşá¸áááş ááááᯠáááŻáááŻáá˝ááşáá°ááŹá áąáááş ááťá˝ááşáŻááşáááŻáˇ ááťážáąáŹáşáááˇáşááŤáááşá

ááŽááąáŹáˇ ááááşáááşááąá¸ááŤáá
áą (~47 áááá
áşá ááąáŹááşá¸ááŤá¸áááş ááťáŹá¸á
á˝áŹáááŻá áĄááťááşáĄáááşááťáŹá¸) áážááˇáş áááşá¸ááž áĄááá ááŻááşááŻááşááťááşááᯠá
áŹááŹá¸ááŻáśá
áśááźááˇáş ááŻááşáá°ááŤá áá˝áŹá¸!
ááŻááşááᯠKubernetes áááŻáˇ ááąá¸áááŻáˇááźááşá¸á
ááąáŹááźáąáŹááťááşáááş werf áĄááźáąáŹááşá¸áááŻááşááąáŹáˇáᲠKubernetes áážá CI/CD áĄááźáąáŹááşá¸á ááťá˝ááşáŻááşáááŻáˇáááąáŹáˇááşáá˛ááşááᯠDocker áá˝ááşááááşááŹááťáŹá¸áá˝ááş ááŻááşáááŻá¸ááŹá¸ááźáąáŹááşá¸ áááŻáááŻáááş (ááŽáĄááźáąáŹááşá¸ááᯠááťá˝ááşááąáŹáşááźáąáŹáá˛áˇáááşá )áážááˇáş K8s áááŻáˇááᯠááŻááşááŻááşáážáŻáá˝ááş áĄááŻáśá¸ááźáŻáááşááźá áşáááşá (ááŽáĄááźáąáŹááşá¸ ááąáŹááşáááş ).
Kubernetes áá˝ááş ááąá¸áááŻáˇáážáŻááŻáśá áśá áááşáááŻáˇáážáááááşá¸á
- áááşá¸áááŻáááşááąáŹááşáááşáĄáá˝ááşááŻááşáážááˇáşáááşá¸áá˝ážááşááťááşááťáŹá¸ááŤáážáááąáŹ Git repository áá áşááŻáážááááşá áĄáááŽááąá¸áážááşá¸ááᯠDocker ááŻáśáá˝ááşáááşááąáŹááşááŹá¸ááźáŽá¸ Docker Registry áá˝ááşááŻááşááąááŹá¸áááşá
- áĄááŹá¸áá° áááŻáážáąáŹááşááŻáśáá˝ááş áĄáááŽááąá¸áážááşá¸ááᯠáĄááŻáśá¸ááťááŻáśáážááˇáş áááşáááşááŻáśáááŻááşáᏠáá˝ážááşááźáŹá¸ááťááşááťáŹá¸áááşá¸ ááŤáážááááşá áĄááŻáśá¸ááťáážáŻáĄáááˇáşáá˝ááşá á¤áá˝ážááşááźáŹá¸ááťááşááťáŹá¸ááᯠáážááşááŻáśáááşááźááşá¸ááž áĄáááŻáážáááąáŹááŻáśááᯠáááşááśááážáááźáŽá¸ áááşá¸ááᯠá áááşáááˇáş Kubernetes áááŻáˇ ááąá¸áááŻáˇááŤáááşá
- áááŻáˇáĄááźááşá ááťáŹá¸ááąáŹáĄáŹá¸ááźááˇáşá ááşá¸áááşáážáŻááťáŹá¸áážááááşá ááŻáśáá áşááŻáśááᯠáá˝ážááˇáşáááşáááˇáşáĄá፠áĄááťááŻáˇá ááŻááşááąáŹááşáááŻááşáááşá áááşáááş (áá°ááŽááąáŹáá˝ážááşááźáŹá¸ááťááşááťáŹá¸áĄáááŻááşá¸) áĄáááŽááąá¸áážááşá¸ááááášáá°ááᯠ(ááŽá¸ááźáŹá¸ K8s namespace áááŻáˇáááŻááş ááŽá¸ááźáŹá¸áĄá áŻáĄááąá¸áá áşááŻáá˝ááş) áĄááŻáśá¸ááťááźáŽá¸ áááŻááąááŹáá˝ááş á ááşá¸áááşáážáŻááťáŹá¸ááᯠááŻááşááąáŹááşáááŻááşáááşá
- ááąáŹááşááŻáśá¸áá˝ááşá áááşáááş Git (áááŻáˇáááŻááş áááŻááşáážáááşááźááşá¸) ááž áĄááźá áşáĄááťááşááťáŹá¸ááᯠáááşááśááážáááźáŽá¸ áááşáážááşááŹá¸ááąáŹ áĄáááˇáşáĄáŹá¸ááŻáśá¸ááᯠááąáŤáşáááş- áááşááąáŹááşááźááşá¸á ááŻááşááąááźááşá¸á ááźááˇáşááťááşááźááşá¸á á ááşá¸áááşááźááşá¸áááŻáˇááᯠááąáŤáşáááŻááąáŹ CI á áá áşáá áşáᯠáááŻáĄááşááŤáááşá

á¤ááąááŹáá˝ááş áĄááąá¸ááźáŽá¸ááąáŹ áážááşááťááşáĄááťááŻáˇáážáááŤáááşá
- ááŹááźáąáŹááˇáşáá˛áááŻááąáŹáˇ ááťá˝ááşááąáŹáşáááŻáˇáážáŹ áááźáąáŹááşá¸áá˛áááŻááşáá˛áˇ áĄááźáąááśáĄááąáŹááşáĄáĄáŻáśáá˝áą áážááááşá (áááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄááźáąááśáĄááąáŹááşáĄáŚ)áĄáááˇáşáĄáŹá¸ááŻáśá¸áá˝ááş áĄááŻáśá¸ááźáŻáááˇáş áĄáááŽááąá¸áážááşá¸ááŻáś (ááŹááşáá˝ážááşá¸á ááŻááşááŻááşááąá¸ á áááş)á áá áşááŻáážáááááşá. ááŽáĄááźáąáŹááşá¸áá˝áąááᯠáĄááąá¸á áááşáá˛áˇ áĽáááŹáá˝áąáá˛áˇ ááźáąáŹááźáá˛áˇáááşá .
- ááŹááźáąáŹááˇáşáá˛áááŻááąáŹáˇ ááťá˝ááşááąáŹáşáááŻáˇá áĄááźáąááśáĄááąáŹááşáĄáĄáŻáśááᯠááŻááşááťááşá¸áááşáážáŻáĄáááŻááşá¸ áááŻááşááŹáááşá (IaC)áĄáááŽááąá¸áážááşá¸ááŻááşá áááşáááşááźááşá¸áážááˇáş á áááşááźááşá¸áĄáá˝ááş áá˝ážááşááźáŹá¸ááťááşááťáŹá¸ ááźá áşáááˇáşáááşá repository áá áşááŻáá˛áážáŹ áĄáááĄááť. á¤áĄááźáąáŹááşá¸áááŻáááŻáááážááááŻááŤá ááźááˇáşááŤá .
- Delivery chain (áááŻáˇááąáŹááşáážáŻ) ááťá˝ááşáŻááşáááŻáˇ á¤áá˛áˇáááŻáˇ ááźááşááąáˇáážááááş- ááťážáąáŹááşáá˝ážáŹááᯠá áŻá ááşá¸ááźáŽá¸ á ááşá¸áááşá ááŻááşááąáá˛áˇáááşá (áá˝ážááşââááąáŹáşâáĄáááˇáşâ) ááŤááŤáᲠ- ááąá¸áááŻáˇáážáŻ ááźá áşááąáŤáşááŹááŤááźáŽá ááŤááąáááˇáş áááşáá˝áąáˇáážáŹááąáŹáˇ ááŻáśá¸á á˝á˛áá°á áááşááŻááşáááŻááşáá˛áˇáĄááŹááᯠááážáááźáŽá¸á áááŻááş áĄá˛ááŤááᯠááŻááşááŻááşááąá¸áᎠáĄááşáááŻááşáá˛áˇáĄááŤá áá°á áĄá˛ááŽááᯠáá˝áŹá¸ááźáŽá¸ááąáŹáˇ ááŽááŻááşááŻááşáážáŻá áĄááŻááşááźá áşáá˝áŹá¸áááşá ááŤááźáąáŹááˇáş áááŻáˇááąáŹááşááąá¸áá˝ááşá¸áááş ááźáŽá¸ááŻáśá¸áááşáááŻáˇ ááŻáśááźááşááŤáááşá áááşáááşáážáŻáĄáááˇáşáá˝ááşáᏠ(ááźáąá¸)ááŻááşááᯠááŻááşááŻááşááźááşá¸ááž áááşáážáŹá¸áááŻááşáááˇáşáĄááťáááşáá˝ááşáááş (áááşá¸ááᯠáĄáá áşáá áşááŻááźááˇáş áĄá áŹá¸áááŻá¸ááźááşá¸) áááŻáˇáááŻááş áááŻáˇáááşáááŻá áĄáááĄááťáááşá
Kubernetes áá˝ááş áĄáááşááąáŹáşááźá፠ááąá¸áááŻáˇáážáŻáĄá áŽáĄá ááşáááŻáˇ ááźááşáá˝áŹá¸ááźááŤá ááŻáˇ- áááşá¸ááᯠááťá˝ááşáŻááşáááŻáˇááŹááá á¤ááźáżááŹááᯠáááŻááşáá˝ááşááźáąáážááşá¸áá°áááŻááşá¸áážáááşá¸ á áŹááŹá¸áĄá ááŽáá˝ááşáá˛áˇááźááşá¸ááźá áşáááşá ááááşááąáŹáˇ ááŽááŻáśá áśááᯠáĄáᯠGitOps áááŻáˇááąáŤáşááŤáááşá (áĄááąáŤáşáĄááąáŤáşáážááˇáş áááşá¸ááąáŹááşáá˝ááşáážá áĄáá°áĄáááťáŹá¸áĄááźáąáŹááşá¸ áááŻáááŻáááşáážáŻáááŻááşááŤáááşá ). áĄá áŽáĄá áĽáşáĄáááˇáşáááˇáşááᯠááźááˇáşááźááĄáąáŹááşá
á ááşááźááˇáşáááşááąáŹááşááŤá
Dockerfiles áááŻáááşáá˛áˇáááŻáˇááąá¸ááźáŽá¸ run ááááşáááŻáá°áááŻááşá¸ááááąáŹáĄá፠2019 ááŻáážá
áşáá˝ááş Docker ááŻáśááťáŹá¸áááşááąáŹááşááźááşá¸áĄááźáąáŹááşá¸ááźáąáŹáááŻááşááŻáśááááşá docker build?.. á¤áá˝ááş ááťá˝ááşáŻááşáĄáŹááŻáśá
ááŻááşáááŻááąáŹ áá˝á˛ááźáŹá¸ááťááşááťáŹá¸áážáŹ-
- ááŻáśáĄááąá¸ááťáááş áĄááąá¸ááźáŽá¸ááŹáááŻáˇ ááŻáśá¸ááŤá ááŻááşááąáŹááşááťááşáĄáá˝ááş áĄáážááşááááşáááŻáĄááşááąáŹ áĄááşáááŽááąá¸áážááşá¸áááŻáᏠááŻáśáá˝ááşááŹá¸áá˛áˇááŤá
- áĄáá˝ážáŹáĄááąáĄáá˝ááş áá˝ááşá¸áááşááťáŹá¸áááąáŤááşá¸á
ááşááźááşá¸ááźááˇáş minimize ááŻááşáááŤáááşá
RUN- áĄáááášááŤááşáĄá áĄááááˇáşááąá¸áááşá - áááŻáˇááąáŹáşá á¤áĄááŹáááşááźáżááŹááťáŹá¸áááŻáááşááąáŹááşá¸áááşá áĄáážáŹá¸áážáŹááźááşá¸ááĄáááşááźáąáŹááˇáşáááŻááąáŹáş á ááşá¸ááąá¸áá˝á˛ááťááşáá˝áŹá¸ááąáŹáĄá፠ááźáżááŹááźá áşá áąááąáŹ áá˝ááşá¸áááşááž áážááşáááşááąáŹáĄááááˇáşááᯠáááşáážáŹáá˝áąááááşááźá áşáááşá
- á áŻááąá¸áážáŻáĄáážáááş áĄááźáąáŹááşá¸áĄáá˛ááťáŹá¸ááᯠáĄááźááşááŻááşááźáŽá¸ ááááşááťáŹá¸ááᯠááźááşáááŻááąáŹááźáąáŹááˇáş áĄááąá¸ááźáŽá¸ááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáşá áááşáááş áĄáááŽááąá¸áážááşá¸áá áşááŻáááşááąáŹááşáááˇáşáĄááŤáááŻááşá¸ ááŹááŹá ááŹá¸á áŹááźááˇáşáááŻááşááťáŹá¸áá˝ááş áážáŽáááŻáážáŻááᯠááźááşáááşáááşááąáŹááşáááŻááźááşá¸ááážáááŤá
- áááşáááŻáĄááşááąáŹ Git repository áá áşááŻáážáááźáŹáá ááŻáśááťáŹá¸á á˝áŹDockerfiles áĄá áŻáĄááąá¸ (áááŻáˇáááŻááş áááŻááşáá áşááŻáá˝ááş áĄáááˇáşááťáŹá¸áᯠáĄáááşááąá¸ááŹá¸áááˇáş) áážááˇáş áááşá¸áááŻáˇá áááˇáşáᲠá áŻááąá¸áážáŻáážááˇáşáĄáá° Bash script ááźááˇáş ááźáąáážááşá¸áááŻááşáááşá
á¤áááşáážáŹ áá°áááŻááşá¸áááşáááŻááşááááˇáş ááąáá˛ááąáŹááşááĄá á˝ááşáĄááťáŹá¸ááźá áşáááşá ááŤááąáááˇáş áĄáá°á¸áááźááˇáş áááźáŹá¸ááźáżááŹáá˝áą áážáááŤááąá¸áááşá
- ááááááşá ááşááźááˇáşáážáŹ áá áşááŻááŻáááŻáĄááşááąáááşáááşá ááąáŹááşááąáŤáş (áĽáááŹá apt áá˛áˇáááŻáˇ command áááááşááᯠthird-party directory áá˝ááş cache)á
- áááŻááťááşáááşá ááźááşáááá°á¸ shell áážáŹááąá¸áááˇáşáĄá áŹá¸
- áááŻááťááşáááşá Docker áááŤáá˛áááşááąáŹááşááŤá (ááťá˝ááşáŻááşáááŻáˇáááş áá˝ááşááááşááŹááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááŻááşáááˇáş Kubernetes áĄá áŻáĄááąá¸áá áşáᯠáážááážááˇáşááźáŽá¸ááąáŹáĄááŤá áááşá¸áĄáá˝ááş áĄááŹáĄáŹá¸ááŻáśá¸ááᯠá áŽá ááşáááşáážááşáááş áááŻáĄááşáááˇáş ááąáŹááşáááş virtual machine áá áşáᯠáááŻáĄááşááááşá¸á)
- ááźááŻááşáá° á áŻááąá¸ááá°ááŽááąáŹáááşá¸áááşá¸ááťáŹá¸ááźááˇáş ááŹá¸áááşáááŻááşáááş- Dockerfile ááž ááá°ááŽááąáŹ command ááťáŹá¸ (áĄáááˇáşááťáŹá¸á á˝áŹáááŻáĄááŻáśá¸ááźáŻááŤá)á áá°ááŽááąáŹ repository á commits ááťáŹá¸á á˝áŹá Dockerfiles ááťáŹá¸á á˝áŹá
- ááźááˇáşááťáŽááąá¸: "ááááşášá" ááźá áşááąáŹááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇáááş áĄááŹááášááŻááťáŹá¸ááᯠá áŻááąáŹááşá¸áááŻááŤáááşá áááşá¸áááŻáˇá cache ááťáąáŹááşáá˝áŹá¸áááşá áááŻáááŻáááşáážáŹ áááşá¸ááᯠááŽá¸ááźáŹá¸áá áşááąááŹáá˝ááş ááááşá¸áááşá¸ááŹá¸áááş áááŻáĄááşáááşá
- ááąáŹááşááŻáśá¸ááąáŹáˇ áááŻáĄááşááášááá˛áˇ áĄáá˝ááşáĄááááşáááŻáˇ ááąáŤáşáááşá áĄáąáŹáşáááŻáááşáá áş: repository áááŻáá˝áŹá¸ááźáŽá¸á command áá áşááťááŻáˇáááŻáááŻááşááźáŽá¸ áĄáááşáááˇáşááŻááşááŹá¸áá˛áˇááŻáśáááŻááá°ááŤá áááşáááŻááŻááşááááşáááŻááŹááᯠáážááşáááşá á˝áŹááŹá¸áááşáááąáŹááąáŤááşáĄáąáŹááş á áŻá ááşá¸ááŹá¸áᏠáĄááąáŹááşá¸ááŻáśá¸ááŤáá˛á áááŻáˇááąáŹáşá áá˝á˛ááźáŹá¸ááťááşááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠá¤áááşá¸ááźááˇáş ááźááŻááźááşáááŻááşáááşáᯠááťá˝ááşáŻááşáááŻááşáááŻááşáááş áááąááťáŹááŤá
á¤áááşáážáŹ áááąáŹááťááşááťáŹá¸ááźá áşáááş-
- â Docker Inc ááž áááşááąáŹááşáá° (Docker á áááşáážáááŹá¸áážááşá¸ááťáŹá¸áááŻáˇ ááąáŤááşá¸á ááşááŹá¸ááźáŽá¸) ááž á¤ááźáżááŹáĄáŹá¸ááŻáśá¸ááᯠááźáąáážááşá¸áááş ááźááŻá¸á áŹá¸ááąááŤáááşá
- â Docker áááŤáᲠáááşááąáŹááşáá˝ááˇáşááźáŻááąáŹ Google ááž áááşááąáŹááşáá°á
- â CNCF á áĄáááŻáĄááťáąáŹááş áážáąáŹáşáááŹááᯠáááşááŽá¸áááş ááźááŻá¸áááşá¸áážáŻ áážááˇáş áĄáá°á¸áááźááˇáş áĄáá˝ážáŹááťáŹá¸áĄáá˝ááş ááźááşáááş áĄááźáąá ááŻááşááźááşá¸ ááŤáááşááąáŹ á áááşáááşá áŹá¸áá˝ááş ááźáąáážááşá¸ááťááş á
- áážááˇáş áĄááźáŹá¸ááąáŹ áĄááŻáśá¸áĄááąáŹááşááťáŹá¸ááźá áşááąáŹá , ...
... GitHub áá˝ááş áááşá¸áááŻáˇ ááźááşáááşááťážáážááááşááᯠááźááˇáşááŤá áĄá˛ááŤáááąáŹáˇ ááááşá docker build áááşáážáááźáŽá¸ áá
áşááŻááŻááᯠááŻááşáááŻááşááąáááˇáş áááşáá˝áąáˇáážáŹááąáŹáˇ ááźáżááŹááᯠááŻáśá¸á áááźáąáážááşá¸áááŻááşááŤá - á¤áĄááťááşáááş ááźáżááŹááťáŹá¸á áĄá
áááşáĄáááŻááşá¸áá
áşááŻá
áŽááᯠááźáąáážááşá¸ááąá¸áááˇáş áĄá
áŹá¸áááŻá¸á
áŻááąáŹááşá¸áá°ááťáŹá¸á áĄááźááŻááşáá˝áśáˇááźááŻá¸áááŻá¸áááşáážáŻááźá
áşááźáąáŹááşá¸ áááşááąááźááŤáááşá
werf áá˝ááşá ááşá¸ááąá¸áá˝á˛
ááŽááąáŹáˇ ááťá˝ááşááąáŹáşáááŻáˇ ááá˛áˇááŤáááşá (ááááş dapp áá˛áˇáááŻáˇ) - ááťá˝ááşáŻááşáááŻáˇáážá áşááąáŤááşá¸ááťáŹá¸á á˝áŹááźáŻááŻááşáá˛áˇáááˇáş Flant ááŻáášáááŽááž open source utility áá áşááŻá áááşá¸áááş Dockerfiles á ááşá¸ááąá¸áá˝á˛ááᯠáĄááąáŹááşá¸ááŻáśá¸ááźá áşáĄáąáŹááşááźáŻááŻááşááąáŹ Bash scripts ááťáŹá¸ááźááˇáş áá˝ááşáá˛áˇááąáŹ 5 áážá áşá á áááşáá˛áˇááźáŽá¸ ááźáŽá¸áá˛áˇááąáŹ 3 áážá áşáá˝ááş áááşá¸ááááŻááşáááŻááş Git repository ááźááˇáş áááąáŹááťááşáá áşááŻá ááąáŹááşáĄáá˝ááşá¸á ááźááˇáşá áŻáśááąáŹáá˝áśáˇááźááŻá¸áááŻá¸áááşáážáŻááᯠááŻááşááąáŹááşáá˛áˇáááşá (áááááŻáśá¸ Ruby á ááźáŽá¸ááąáŹáˇ áá˝áŹá¸áááşá áá áşááťáááşáááşá¸áá˝ááş áĄáááşááźáąáŹááşá¸). werf áá˝ááş áááşáááˇáşá áŻááąá¸áážáŻááźáżááŹááťáŹá¸ááᯠááźáąáážááşá¸áááŻááşááááşá¸á

áĄááźáŹááąáŹááş áĄááááşááźáááˇáş ááźáżááŹááťáŹá¸ááᯠáĄááąáŹááşáĄáááşááąáŹáşááźáŽá¸ááźá
áşáááşá áĄááźááŻááşáááşááąáŹááşáážáŻááᯠáá°ááŽááąáŹáĄáááşáážááşáĄáá˝ááşá¸áá˝ááş ááŻááşááąáŹááşáá˛áˇááźáŽá¸ áĄááŤááąáŹááşááźááˇáş ááŽá¸ááąáŹááşá¸áááŻá¸ááźááŹá¸áááˇáş ááźáżááŹááťáŹá¸ááᯠáá˝áąááŹááŽáĄááŻááşáá˝ááş áĄááźáŽá¸áááşáááş á
áŽá
ááşááŹá¸áááşá
áážááşááŻáśáááşááźááşá¸áá˝ááş ááŻááşááąááźááşá¸áĄáááˇáş (ááŻááşááąááźááşá¸)
ááŤáááŻáˇááŻááşá¸ááąáŤáşáááşá docker push... - Registry áá˝ááş ááŻáśáá
áşááŻáśááᯠáĄááşááŻááşáááşááźááşá¸áĄáá˝ááş ááŹáĄáááşáĄáá˛áážááááŻááşááá˛á áááŻáˇááąáŹááş ááąá¸áá˝ááşá¸ááąáŤáşááŹáááşâ âááŻáśááąáŤáşáá˝ááş áᏠtag ááŹá¸ááááşáááşá¸á áĄá˛ááŤá ááŤáááŻáˇáážáŹ áážááááŻáˇ ááźá
áşááąáŤáşááŹááŹá Gitflow (áááŻáˇáááŻááş áĄááźáŹá¸ Git áááşá¸ááťá°ááŹ) áážááˇáş Kubernetes áážááˇáş Kubernetes áá˝ááş ááźá
áşááťááşááąáááˇáşáĄááŹááťáŹá¸áááş Git áá˝ááşááźá
áşááťááşááąáááˇáşáĄááŹááťáŹá¸ááᯠáááŻááşááŹááźáąáŹááşá¸ ááąááťáŹá
áąáááş á
ááşáážáŻááŻááşáááşá¸á ááźááŻá¸á
áŹá¸ááąááŤáááşá ááąáŹááşááŻáśá¸áá˝ááşá Git áááş ááťá˝ááşáŻááşáááŻáˇááá
áşááŻáááşá¸ááąáŹáĄáážááşáááŹá¸áĄáááşá¸áĄááźá
áşááźá
áşáááşá
ááŽáĄáá˝ááş ááŹáĄáááşáĄáá˛áážááááŻáˇáá˛á ááťááŻá¸áá˝áŹá¸áááŻááşá á˝ááşá¸ááąááťáŹááŤá áąá: áááŹááá˝ááş áááźáąáŹááşá¸áá˛áááŻááşááąáŹ Git áážá ááááá áşááŻááž (áááźáąáŹááşá¸áá˛áááŻááşááąáŹ)áĄáá°áá°ááŹá¸áááˇáşáááˇáş Docker ááŻáśáá áşááŻáááŻáˇá
ááťá˝ááşáŻááşáááŻáˇáĄáá˝ááşáááşá¸ áĄááąá¸ááźáŽá¸ááŤáááşá ááŹá áşááźá áşáááŻááŻáśá¸ááźááşááŤáKubernetes áá˝ááş ááŻááşááąáŹááşááąáááˇáş áĄáááŽááąá¸áážááşá¸ááᯠáááşáááˇáşáááááááşááźáŻááŹá¸áááşááᯠááťá˝ááşáŻááşáááŻáˇ ááŹá¸áááşáááŻááąáŹááźáąáŹááˇáşááźá áşáááş (áááŻáˇááąáŹááş ááťá˝ááşáŻááşáááŻáˇáááş áá˝á˛ááźáŹá¸áážáŻááťáŹá¸áážááˇáş áĄááŹá¸áá°áĄááŹááťáŹá¸ááᯠááŻááşááąáŹááşáááŻááşáááş)á
Tagging Strategies
ááááá
áşááŻá áááŻá¸áážááşá¸ááŤáááşá git tag. ááťá˝ááşáŻááşáááŻáˇáá˝ááş áĄáážááşáĄááŹá¸ááźáŻááŹá¸áááˇáş ááŻáśáá
áşááŻááŤáááˇáş áážááşááŻáśáááşáá
áşááŻáážááááşá 1.0. Kubernetes áá˝ááş á¤ááŻáśááᯠáĄááşááŻááşááŻááşááŹá¸áááˇáş áĄáááˇáşáážááˇáş ááŻááşááŻááşááąá¸ áážááááşá Git áá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áááááááşááťáŹá¸ ááźáŻááŻááşááźááźáŽá¸ áá
áşááťáááşááťáááşáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş tag ááŻááşááźáááşá 2.0. repository ááž áá˝ážááşááźáŹá¸ááťááşááťáŹá¸áĄáááŻááşá¸ áááşá¸ááᯠá
áŻááąáŹááşá¸ááźáŽá¸ tag ááźááˇáş registry áá˝ááş ááŹá¸áážáááŤá 2.0. áĄá˛ááŤááᯠá
ááşááąáŤáşáááşááźáŽá¸ áĄáŹá¸ááŻáśá¸áĄáááşááźáąáááş ááŻááşááŻááşááąá¸áĄááááąáŤáˇá

á¤ááťááşá¸áááşáážáŻáááźáżááŹáážáŹ ááťá˝ááşáŻááşáááŻáˇáááş tag áááŻáááááŻáśá¸áááşáᏠá
ááşá¸áááşááźáŽá¸áážáᏠááŻááşáá°áááŻááşááźááşá¸ááźá
áşáááşá áĄáááşááźáąáŹááşáˇ? ááááŚá¸á
á˝áŹá áááşá¸áááş áááŻá¸áááŻá¸áážááşá¸áážááşá¸ ááŻáášááááááşááŤ- ááťá˝ááşáŻááşáááŻáˇáááş ááťá˝ááşáŻááşáááŻáˇ áá
ááşá¸áááşáááąá¸ááąáŹ ááąáŹáˇááşáá˛ááŹá¸áážááşá¸ááᯠááŻááşááąá¸ááąáááş (á
á
áşááąá¸áááşáĄáá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş tag áá
áşááŻáááˇáşááŹá¸áááş áááŻáĄááşááąáŹááźáąáŹááˇáş áĄááźáŹá¸áááşá¸ááźááˇáş áááŻááşáááŻááşááŤ)á ááŻááááĄááťááşáážáŹá á¤áááşá¸ááźáąáŹááşá¸áááş Gitflow áážááˇáşááááŹááááźá
áşááŤá
ááŻááá option ááᯠ- git commit + tag. ááŹá
ááŹáĄáááŻááşá¸áĄáááşáá˝ááş tag áá
áşááŻáážááááşá 1.0; áááşá¸áĄáá˝ááş registry áá˝ááş - ááŻááşááŻááşáážáŻáá˝ááş ááźááˇáşááťááşááŹá¸ááąáŹ ááŻáśáá
áşááŻá áááŻáˇáĄááźááşá Kubernetes áĄá
áŻáĄááąá¸áá˝ááş áĄááźááŻááźááˇáşáážáŻááźááşá¸áážááˇáş áĄáááˇáşáááşáážááşááźááşá¸ááŻáśá
áśááťáŹá¸ ááŤáážááááşá áááşáááşá ááťá˝ááşáŻááşáááŻáˇáááş Gitflow ááᯠáááŻááşááŹáááş- áá˝áśáˇááźááŻá¸áááŻá¸áááşáážáŻáĄáá˝ááş áĄáááááŹááá˝á˛ (develop) ááťá˝ááşáŻááşáááŻáˇáááş áĄááşášááŤáááşáĄáá
áşááťáŹá¸ááᯠááźáŻááŻááşááźáŽá¸ identifier áážááˇáş áááááááşááźáŻááŤáááşá #c1. ááťá˝ááşáŻááşáááŻáˇ áááşá¸ááᯠá
áŻááąáŹááşá¸ááźáŽá¸ á¤áááşáážááşá
áá
áşááᯠáĄááŻáśá¸ááźáŻá áážááşááŻáśáááşááźááşá¸áá˝ááş ááŻááşááąááźááşá¸ (#c1) áá°ááŽááąáŹ identifier ááźááˇáş áĄá
ááşá¸ááźááˇáşáážáŻáááş ááŻááşááąá¸ááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááş áááááááşááťáŹá¸áážááˇáş áĄáá°áá°áááşááźá
áşáááşá #c2 и #c3.
ááŻáśááąáŹááşááąáŹáĄááşášááŤáááşááťáŹá¸áážáááźáąáŹááşá¸ ááťá˝ááşáŻááşáááŻáˇáááážáááŹááąáŹáĄááŤá ááťá˝ááşáŻááşáááŻáˇáááş áĄááŹáĄáŹá¸ááŻáśá¸ááᯠáááşááźáááşá
ááźáŻááŹáááşá Git áá˝ááş ááŹááá˝á˛áá
áşááŻáááşááŽá¸ááŤá release_1.1 (áĄááźáąááśááąáŤáşáážáŹ #c3 ááž develop) ááŽááŻááşáá˝ážááşáážáŻááᯠá
áŻááąáŹááşá¸áááŻáˇ ááááŻáĄááşáá°á¸áááŻááąáŹáˇ... áááşá¸ááᯠááááşáĄáááˇáşáá˝ááş ááźáŻááŻááşáá˛áˇáááşá áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸ááᯠááŹááşááźáąáŹááşá¸áááŻáˇ áááŻá¸áážááşá¸á
á˝áŹ ááźááˇáşááťáááŻááşáááşá ááťá˝ááşáŻááşáááŻáˇáááş bug ááťáŹá¸áááŻááźááşáááşá #c4 áĄááŹá¸áá° ááŹááşááŻáśáááŻáˇ áá˝ážááˇáşáááşááŤá áá
áşááťáááşáááşá¸áážáŹáááş áá˝áśáˇááźááŻá¸áááŻá¸áááşááąá¸ááᯠááąáŹááşáá˝ááşááťááşáážáááŤáááşá developáĄááźáąáŹááşá¸áĄáá˛ááťáŹá¸ááᯠáĄááŤáĄáŹá¸ááťáąáŹáşá
á˝áŹ áá°ááąáŹááşááŹááŤáááşá release_1.1. áá
áşááťáááşááťáááşáá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş ááťá˝ááşáŻááşáááŻáˇ ááťáąáááşáážá
áşáááşááąáŹ áááááźáŻááťááşááᯠá
áŻá
ááşá¸ááźáŽá¸ ááŹááşááŻáśáááŻáˇ áĄááşááŻááşááŻááşááááşá#c25).
áááŻáˇááąáŹááş ááťá˝ááşáŻááşáááŻáˇáááş áá˝ááşááźáąáŹááşááąá¸ááŹááá˝á˛ (áážáąáˇáááŻáˇ áĄááźááş) áážááˇáş ááąáŤááşá¸á
ááşá¸áááŻááşááŤáááşárelease_1.1) áááŹááźáŽá¸á ááťá˝ááşáŻááşáááŻáˇááẠᤠcommit áá˝ááş ááŹá¸áážááşá¸áĄáá
áşááźááˇáş tag áá
áşááŻáááşááŹá¸áááş (1.1) ááŤááąáááˇáş ááŽááŻáśááᯠregistry áážáŹ á
áŻááąáŹááşá¸ááŹá¸ááźáŽá¸ááźá
áşáááŻáˇ áĄá˛ááŤááᯠáááşáá
áŻááąáŹááşá¸áááŻáˇáĄáá˝ááşá áážáááźáŽá¸ááŹá¸ááŻáśáá˛ááᯠááŻááááááşáá
áşáᯠáááşáááˇáşáááŻááşááŻáśááŤáᲠ(áĄááŻááąáŹáˇ registry áá˛áážáŹ tags áá˝áąáážáááąááŤááźáŽá #c25 и 1.1) áĄá˛ááŽááąáŹááşáážáŹááąáŹáˇ ááťá˝ááşááąáŹáşáááŻáˇá áĄá˛ááŤááᯠááŻááşááŻááşáááŻáˇáĄáá˝ááş ááźááˇáşáááşá
ááŻáśáá
áşááŻáśáááşá¸áááŻáᏠááŹááşáá˝ážááşá¸áááŻáˇ áĄááşááŻááşááŻááşáááźááşá¸áážáŹ áĄáŹá¸áááşá¸ááťááşáá
áşáᯠáážáááŤáááşá#c25) áážááˇáş ááŻááşááŻááşáážáŻáá˝ááş áá˝á˛ááźáŹá¸áááş (1.1) áááŻáˇááąáŹáş "ááŻááşáááŻááşá¸áááŻááşááŹ" áááş áážááşááŻáśáááşááźááşá¸ááž áá°ááŽááąáŹááŻáśááźá
áşááźáąáŹááşá¸ ááťá˝ááşáŻááşáááŻáˇááááŤáááşá

á
á
áşáážááşááąáŹáĄáŹá¸áááşá¸ááťááşáážáŹ ááąáŤááşá¸á
ááşá¸ááźááşá¸áĄáá˝ááş áĄááąáŹááşáĄááśáˇááážáááąáŹááźáąáŹááˇáş ááťááşááźááşá
á˝áŹ áážáąáˇáááŻáˇááŻááşááąáŹááşááááşááźá
áşááŤáááşá
áážááˇáşáá˝ááşáá áşáᯠáááşááŻááşáááŻááşááŤáááş... áááŻá¸áážááşá¸ááąáŹ Dockerfile á áĽáááŹááᯠááźááˇáşááźááŤá ááŻáˇá
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áĄáąáŹááşá፠ááááŹááĄá áááşá¸ááž áááŻááşáá áşááŻááᯠáááşááąáŹááşááźááŤá ááŻáˇá
- áĄááŻáśá¸ááźáŻááŹá¸ááąáŹ ááŻáśááťáŹá¸á áá˝á˛ááźáŹá¸áááşáážááşáážáŻááťáŹá¸ááž SHA256 (
ruby:2.3иnginx:alpine) áááşá¸áááŻáˇááŤáááşáááˇáş áĄááźáąáŹááşá¸áĄááŹááťáŹá¸á ááťááşáááşáážááşááťáŹá¸ááźá áşáááşá - áĄáááşá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸ (
RUN,CMDááąáŹááş ... ááźáŽá¸ááąáŹáˇá); - áááˇáşááŹá¸ááąáŹáááŻááşááťáŹá¸ááž SHA256á
... ááźáŽá¸ááťážááşáááŻáá˛áˇáááŻáˇááąáŹáááŻááşááž checksum (SHA256 áá áşáááş) áááŻáá°ááŤá áᎠáááşáážááş Docker ááŻáśá áĄááźáąáŹááşá¸áĄááŹááťáŹá¸ááᯠáááşáážááşááąá¸áááˇáş áĄááŹáĄáŹá¸ááŻáśá¸á

ááŻáśááźááşá¸ááᯠááźááşáá˝áŹá¸ááźááˇáşááĄáąáŹááş áááááźáŻáááˇáşáĄá
áŹá¸ áááŻáá˛áˇáááŻáˇááąáŹ áááşáážááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááŤáááşá, i.e. áááşáážááşááťáŹá¸ááźááˇáş ááŻáśááťáŹá¸ááᯠtag ááŻááşááŤá

áĽáááŹáĄáŹá¸ááźááˇáşá ááŻááşááąáážáŻááž ááťá˝ááşá¸ááťááşáážáŻáĄáá áĄááźáąáŹááşá¸áĄáá˛ááťáŹá¸ááᯠááąáŤááşá¸á
ááşá¸áááş áááŻáĄááşááąáŹáĄááŤáá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş áĄáážááşááááş ááąáŤááşá¸á
ááşá¸áážáŻáá
áşááŻááᯠááŻááşááąáŹááşáááŻááşáááş- áááşá¸áá˝ááş áá˝á˛ááźáŹá¸ááąáŹ áá˝á˛ááźáŹá¸áááşáážááşáážáŻ áážáááąáŹáşáááşá¸ áá°ááŽááąáŹ áááşáážááşáážáááŤáááşá áá°ááŽááąáŹ identifier ááźááˇáş ááťá˝ááşáŻááşáááŻáˇáááş ááŻááşááŻáśááᯠááŻááşááŻááşáááşáĄáá˝ááş ááźááˇáşááťáŽááŤáááşá
áĄáŹá¸áááşá¸ááťááşáážáŹ ááŻááşááŻááşáážáŻáááŻáˇ áá˝ááşá¸áááŻáˇáá˛áˇáááˇáş áááááááşáĄááťááŻá¸áĄá áŹá¸ááᯠáááŻááŻáśá¸ááźááşáááş áááźá áşáááŻááşááąáŹáˇáᲠ- checksums áááş áŚá¸áááşááťááşáá áşááŻáááşá¸áá˝ááşáᏠáĄááŻááşááŻááşááŤáááşá á¤ááźáżááŹááᯠáááşááŹááąááŹááźááˇáş áááşááąáŹááşá¸áĄáá˝ážáŹáá áşááŻááźááˇáş ááźáąáážááşá¸áááş - ááŤáááşá¸ááᯠááąáŹááşáážááźáąáŹááźáááşá
werf áá˝ááş áááşááŻááşááźááşá¸á
werf áá˝ááşááťá˝ááşáŻááşáááŻáˇáááŻááá˝áŹá¸áá˛áˇááźáŽá¸á ááşáá áşááŻáááşá¸áá˝ááşááááşá¸áááşá¸ááźááşá¸ááážáááąáŹ cache ááźááˇáşááźááˇáşááąáááşááąáŹááşáááşááźááşáááşááąáááş... áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş Docker ááŻáśááťáŹá¸ááᯠáĄááťááŻá¸áĄá áŹá¸áážá áşááťááŻá¸ááźááˇáşáááşááąáŹááşááąáááşá á áẠи ááŻáśááááş.
werf Git repository áááş build á ááá°ááŽááąáŹ áĄáááˇáşááťáŹá¸ááᯠááąáŹáşááźááąáŹ build-specific áá˝ážááşááźáŹá¸ááťááşááťáŹá¸ááᯠááááşá¸áááşá¸áááş (ááááşáááşááŽ, install, ááááşáááşááŽ, áááşááąáŹááşáááş) ááááĄáááˇáşá checksum áĄááźá áş áááşáážááşááŹá¸ááąáŹ áááşáážááşááźááˇáş ááááĄáááˇáş ááŻááşááŻáśááᯠá áŻááąáŹááşá¸ááŤáááşá áááŻáˇááąáŹááş á ááşááźááˇáşááŻáśáĄáá áşáĄáá˝ááş áááşá¸á checksum ááᯠááťá˝ááşáŻááşáááŻáˇ áá˝ááşááťááşáááş... á¤ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠáĄáááˇáşáĄáŹá¸ááŻáśá¸áĄáá˝ááş áááşááŤááá˛áᲠááŻááşááąáŹááşáááşá ááááşáĄááąááźááˇáş á ááááşááŻáśááťáŹá¸ áĄá áŻáĄááąá¸ááᯠááážáááŤáááşá áááŻáˇááąáŹááş áááşá¸ááá°ááĄá áážááˇáşáááşáááşáááˇáş áááşááŹááąááŹááŤáááşáááˇáş ááąáŹááşááŻáśá¸ááŻáśááᯠááźáŻááŻááşáááşá ááťá˝ááşáŻááşáááŻáˇáááş á¤ááŻáśááᯠááá°ááŽááąáŹáááşá¸áááşá¸ááťáŹá¸ááźááˇáş tag (ááąáŹááşáážáĄááąá¸á áááşááąáŹáşááźáááş)á

áááşá¸ááźáŽá¸ááąáŹááş ááťážáąáŹááşáá˝ážáŹááŻááşáááŻáᏠááźáąáŹááşá¸áá˛ááŹá¸áááˇáş áá˝ááşáááˇáşáĄáá
áşáá
áşáᯠááąáŤáşááŹáááşáááŻááŤá
ááŻáˇá ááŹááźá
áşááá˛? ááŻááşáĄááźáąáŹááşá¸áĄáá˛áĄáá˝ááşá ááŹááąá¸áážáŻáá
áşáᯠáááşááŽá¸áááşááźá
áşááźáŽá¸ áĄáááˇáşááŻááşááŻáśáĄáá
áşááᯠááźááşáááşáááşááźá
áşáááşá áááşá¸á áááşáážááşááᯠá
ááááşááŻáśááąáŹááşá¸áážááˇáş ááŹááąá¸áážáŻáĄáá
áşá checksum áĄááźá
áş áááşáážááşáááşááźá
áşáááşá á¤ááŻáśááž ááąáŹááşááŻáśá¸ááŻáśáĄáá
áşááᯠáááşááŽá¸ááŤáááşá áĄááźáŹá¸áĄáááˇáşááťáŹá¸áá˝ááş ááźáąáŹááşá¸áá˛áážáŻááťáŹá¸áážááˇáşáĄáá° áĄááŹá¸áá°áĄááźáŻáĄáá°ááťáŹá¸ ááźá
áşááąáŤáşááŹáááşááźá
áşáááşá
áááŻáˇááźáąáŹááˇáşá á ááşááźááˇáşááŻáśááťáŹá¸áááş ááźááˇáşááąááááşá¸áááşá¸áááŻááşáááˇáş áááşáážáşáá áşááŻááźá áşááźáŽá¸ áááşá¸áážáááşááŽá¸ááźáŽá¸ááŹá¸ááŻáśááťáŹá¸ááᯠDocker Registry áááŻáˇ áĄááşááŻááşááŻááşááŹá¸áááşá

áážááşááŻáśáááşááᯠáááˇáşáážááşá¸ááąá¸ááŻááşááŤá
ááťááşáááŻááşáááˇáş tags ááťáŹá¸ááąáŹááşáá˝ááş áá˝á˛ááąááąáŹ áĄáá˝ážáŹááťáŹá¸ááᯠááťááşááźááşá¸áĄááźáąáŹááşá¸ ááťá˝ááşáŻááşáááŻáˇááźáąáŹááąááźááşá¸áááŻááşá፠- áááşá¸áááş Docker Registry áááŻááşáááŻááşá á áśáááşáážááşááťááşáá áşááŻááźá áşáááşá Docker tag áĄááťáŹá¸áĄááźáŹá¸á áŻááŻáśááąááťáááşáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸áááŻáˇáĄááťááŻáˇááᯠááááŻáĄááşááąáŹáˇááźáąáŹááşá¸ ááťá˝ááşáŻááşáááŻáˇááŹá¸áááşááąáŹáşáááşá¸ áááşá¸áááŻáˇáááş ááąááŹáá°áááş (áážááˇáş/áááŻáˇáááŻááş ááťá˝ááşáŻááşáááŻáˇ ááąá¸ááąáŹááşáááş)á
áááˇáşáážááşá¸ááąá¸ááťá°ááŹáá˝áąá ááŹáá˝áąáá˛á
- áááşá¸ ááŹáážááŻááşáááŻáˇáááá°á¸ ááááˇáşáážááşá¸ááŤáážááˇáş. áááŤáááśáá˝ááş ááźáŽá¸ááŹá¸ááąáŹ áĄáážáŻááşáĄáá˝áąá¸ááťáŹá¸ááᯠáážááşá¸ááŻááşáááşáááş áĄáááŻááąááŹáĄáá˝ááş áĄáááşá¸áááş ááąá¸ááťáąááźááşá¸áááş áĄáážááşááááşáááş áá˝ááşáá°ááŤáááşá ááŤááąáááˇáş ááŤá áĄáááŻááşá¸áĄááŹáá áşááŻáĄáááᏠáĄááŻááşááŻááşááŤáááşá
- áĄááźááˇáşáĄá ááźááşáááşáááşáážááşááŤá. ááŻáśááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠááťááşááźáŽá¸ CI á áá áşáážá áááşáážáááŻáśááťáŹá¸áááŻáᏠááźááşáááşáááşááąáŹááşááŤá ááźáżááŹáá áşáᯠááźá áşááŹáááŻááşáááşá áá˝ááşááááşááŹááᯠááŻááşááŻááşáážáŻáá˝ááş ááźááşáááşá áááşááŤáá áááşáá°áˇáááŻááťáž áá ááşá¸áááşáááąá¸ááąáŹ ááŻáśáĄáá áşáá áşááŻááᯠáááşááŤáááşá áááşá¸áááş áááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄááźáąááśáĄááąáŹááşáĄáĄáŻáś áĄáá°áĄáááᯠáááşáá áşáááşá
- á áááşá¸ááźáŹ. áážááşááŻáśáááşáá áşááŻáááş ááźááˇáşááťážáśááŹáááş - ááťá˝ááşáŻááşáááŻáˇáááş ááŻáśááťáŹá¸ááᯠáĄááźáŹá¸áááŻáˇ áĄááşááŻááşááŻááşááŤáááşá ááááşáááşá¸áááşá¸áá˝ááşáá˛áˇáááŻáˇ áá°ááŽááąáŹááźáżááŹ- ááźááˇáşááťážáśááąáááˇáş registry ááᯠáááşáááˇáşáĄááťááşáá˝ááş áááşáážááşá¸áááşá¸áááŻááşáááşáááşá¸á
- áĄááťáááşáĄáŹá¸ááźááˇáş. 1 ááááşááźáŽá¸ááąáŹ ááŻáśáĄáŹá¸ááŻáśá¸ááᯠááťááşáááŹá¸á ááŤááąáááˇáş áá áşáááąáŹááş áá˝ááşá¸ááśáá˝ááşá¸ááśááŹá¸áá˛áˇ áááşááąáŹááşáážáŻáá áşááŻááąáŹáˇ áážááážáŹ ááąááťáŹááŤáááş...
- áááşááźááˇáş ááťááşáááŻáˇáááźáŽááŹá¸áááŻááŹááᯠááŻáśá¸ááźááşááŤá
áĄáážááşááááş áĄááťáŻáśá¸áááşááąáŹ áá˝áąá¸ááťááşá áᏠáážá áşááŻáážááááş- ááááˇáşáážááşá¸á፠áááŻáˇáááŻááş á áááşá¸ááźáŹááąáŹááş + áááşááźááˇáş ááąáŤááşá¸á ááşááŤá ááąáŹááşááŻáśá¸áĄááźáąáĄááąáá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş áĄáąáŹááşááŤáĄááźáąáŹááşá¸ááťáŹá¸ááᯠááźáąáŹááąáááş- registry ááᯠáážááşá¸áááş áĄááťáááşáááşááźáŽáᯠááŹá¸áááşááąáŹáĄááŤá áááşáááş áĄáá áşáá áşááŻáááşááŽá¸ááźáŽá¸ áĽáááŹáĄáŹá¸ááźááˇáş áá áşáááŹááŹááĄáá˝ááşá¸ áááşá¸áá˝ááş ááŻáśáĄáá áşááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáááˇáşááŤá áá áşááĄááźáŹáá˝ááşá Kubernetes áážá áááşáááˇáş pods ááťáŹá¸áááş áážááşááŻáśáááşááźááşá¸áĄááąáŹááşá¸ááᯠáááşáááşáĄááŻáśá¸ááźáŻááąááąá¸áááşááᯠááźááˇáşáážáŻááźáŽá¸ áááşá¸áááŻáˇáááŻáááşá¸ áážááşááŻáśáááşáĄáá áşáááŻáˇ áá˝ážá˛ááźáąáŹááşá¸ááŤá
ááŤáááŻáˇááŹáá˝áąááąáŹááşááŹááŹáá˛á werf? ááťá˝ááşáŻááşáááŻáˇá áŻááąáŹááşá¸áááş-
- Git head - ááŻáśááťáŹá¸áá˝ááş Git áá˝ááşáááşááŹá¸ááąáŹáĄááŹáĄáŹá¸ááŻáśá¸áááŻáááŻáĄááşáááşááŻáá°áááŤá tags áĄáŹá¸ááŻáśá¸á áĄáááŻááşá¸áĄáááşááťáŹá¸áĄáŹá¸ááŻáśá¸ (áááŻáˇááźáąáŹááˇáşáááşá¸ááᯠGit áááŻááşáááŻááşááťááşáááşáááŻáĄááşáááş)
- áááşáážá Kubernetes áááŻáˇ á áŻááşááŻááşááąáááˇáş pods áĄáŹá¸ááŻáśá¸áááŻá
- ReplicaSets áĄááąáŹááşá¸ááťáŹá¸ (áááźáŹááąá¸ááŽá áá˝ááşáážááá˛áˇááąáŹ) áážááˇáş Helm ááŻááşááąáážáŻááťáŹá¸ááᯠá áááşááşáááşááźáŽá¸ áááŻááąááŹáá˝ááş ááąáŹááşááŻáśá¸ááŻáśááťáŹá¸ááᯠáá˝áąá¸ááťááşáááşáááşá¸ á áŽá ááşááŹá¸ááŤáááşá
... ááźáŽá¸ááťážááş á¤áĄá áŻááž áĄááźá°ááąáŹááşá áŹáááşá¸áá áşáᯠááźáŻááŻááşá፠- ááťá˝ááşáŻááşáááŻáˇ ááťááşáááşáááŻááşááąáŹ ááŻáśááťáŹá¸á áŹáááşá¸á ááťá˝ááşáŻááşáááŻáˇáááş áĄááźáŹá¸áĄááŹáĄáŹá¸ááŻáśá¸ááᯠáážááşá¸ááŻááşááźáŽá¸ááąáŹááş ááááá˛áˇááŹááşááŻáśááŻááşááŻáśááťáŹá¸ááᯠáá˝áąáˇáážáááźáŽá¸ áááşá¸áááŻáˇáááŻáááşá¸ ááťááşáá áşááŤáááşá
á ááşááąáŤáşááťááŹá¸ááŤá
ááŻáśááźááşá áááşááťáááąáŹááźáąááźáŹááťááş
ááźááˇáşááťááşááźááşá¸áá˝ááş ááťá˝ááşáŻááşáĄáŹááŻáśá ááŻááşáááŻááąáŹ ááááĄááťááşáážáŹ áá˝ááşá¸ááśááŹá¸ááąáŹ áááşá¸ááźá áşáá˝á˛áˇá ááşá¸áážáŻááŻáśá áśááᯠááźáąááźáŹááźááşá¸ááźá áşááźáŽá¸á áá˝ážááˇáşáááşááźááşá¸ááźá áşááŤáááşá Kubernetes áĄáááşá¸áĄááźá áşááťáŹá¸ááᯠááąáŹáşááźáááˇáş áá°áááşá¸ YAML á áŹáá˝ááşá áŹáááşá¸áááş áĄá áŻáĄááąá¸áá˝ááş áĄáážááşááááş ááŻááşááąáŹááşááąáááˇáş ááááşáážááˇáş áĄááźá˛áááşá¸ áá˝áŹááźáŹá¸ááŤáááşá Kubernetes áááş configuration áá˝ááşáááˇáşáá˝ááşá¸ááŹá¸ááąáŹááźáąáŹááˇáş-
- áá˝á˛ááźáŹá¸áááşáážááşáážáŻááťáŹá¸á
- áááşááąáŹááşáážáŻááááşá¸áĄááťááşáĄáááş;
- ááŻáśááąáááşáááŻá¸ááťáŹá¸á á˝áŹá
- áááşáážááĄááźáąáĄááąáážááˇáşáĄáááŻááşá¸á
- áááşáá˝ááˇáş webhook á áá áşá áááşáá áşáááŻááşá¸áĄááźá áş ááźáąáŹááşá¸áá˛áážáŻááťáŹá¸á
- áĄááťááŻá¸ááťááŻá¸ááąáŹ controllers (áážááˇáşáĄááťáááşáááŹá¸áá˝á˛) ááĄááŻááşáááááşá
áááŻáˇááźáąáŹááˇáşá áĄáááşá¸áĄááźá áşáá˝á˛áˇá ááşá¸ááŻáśáĄáá áşáá áşááŻááąáŤáşááŹááąáŹáĄá፠(áĄáá áş) ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸áážááˇáşáĄáá° áááşáážáá "áááŻááşáááŻááş" áá˝á˛áˇá ááşá¸áážáŻááŻáśá áśááᯠáá°á ááąá¸ááťááŻáśááťážáá (áĄáááşáážááşááąáŹ) ááŽáááŻááŻááşáááŻáˇ áážááŻááşá¸áááŤááááˇáşáááşá áĄáá áş ááąáŹááşááŻáśá¸áĄááŻáśá¸ááźáŻááŹá¸ááąáŹ áá˝á˛áˇá ááşá¸áážáŻááŻáśá áś (ááąáŹááşááŻáśá¸ááŻáśá¸ááŹá¸áááşá) áĄááąáŤáşááᯠáá°á¸ááąá¸ááŤá áĄáááşáážááşááąáŹ patch áááŻáááşááśááážááá˛áˇáááşá
á¤ááťááşá¸áááşáááşá¸ááŻááąáŤáşáááşá 2-áááşá¸ááąáŤááşá¸á ááşá¸. áĽáááŹáĄáŹá¸ááźááˇáş Helm áá˝ááşáĄááŻáśá¸ááźáŻáááşá
áááşá¸áážááááşá 3-áááşá¸ááąáŤááşá¸á ááşá¸á áá˝á˛ááźáŹá¸ááąáŹáĄááŹá
- áážááŻááşá¸áážááş ááąáŹááşááŻáśá¸ááŻáśá¸ááŹá¸áááşá и áĄáá áşááťááşáá áşáá˛áˇááŹááᯠááźááˇáşááŤá
- áážááŻááşá¸áážááş áĄáá Ạи áĄáááşáážááşááąáŹáááşáááˇáşááŹá¸áááş áááŻáˇáááŻááş ááźáąáŹááşá¸áá˛ááŹá¸áááşááᯠááťá˝ááşáŻááşáááŻáˇááźááˇáşáážáŻááŤá
- summed patch ááᯠáĄááŻáśá¸ááźáŻáááşá áĄáááşáážááşááąáŹ.
Helm ááźááˇáş áĄáááŽááąá¸áážááşá¸ááąáŤááşá¸ 1000+ ááᯠáĄááŻáśá¸ááźáŻááŹá¸ááąáŹááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇáááş 2-way ááąáŤááşá¸á ááşá¸ááźááşá¸ááźááˇáş áĄáážááşááááş áĄáááşáážááşááąááŤáááşá áááŻáˇááąáŹáşá áááşá¸áá˝ááş Helm ááŻáśáážááşáĄááŻááşááŻááşáááş áá°ááŽááąá¸áááˇáş ááťá˝ááşáŻááşáááŻáˇá ááŹááąá¸áážáŻááťáŹá¸ááźááˇáş ááťá˝ááşáŻááşáááŻáˇááźáąáážááşá¸áá˛áˇáááˇáş ááźáżááŹááťáŹá¸á á˝áŹáážááááşá
ááŻááşáá˝ážááˇáşáážáŻáĄááźáąáĄááąáĄáážááş
ááťá˝ááşáŻááşáááŻáˇá CI á
áá
áşáááş ááŹáááˇáşááźá
áşáááşáĄááąáŤáş áĄááźáąááśá Kubernetes áĄáá˝ááş áá˝á˛áˇá
ááşá¸áážáŻáĄáá
áşááᯠááŻááşááąá¸ááźáŽá¸ááąáŹááşá áááşá¸ááᯠáĄááŻáśá¸ááźáŻáááşáĄáá˝ááş ááŻááşáá˝ážááˇáşáááş (ááťážáąáŹááşááŹá¸) to a cluster - Helm áááŻáĄááŻáśá¸ááźáŻááźááşá¸ áááŻáˇáááŻááş kubectl apply. áááŻáˇááąáŹááşáá˝ááş ááąáŹáşááźááŹá¸ááźáŽá¸ááźá
áşááąáŹ N-way ááąáŤááşá¸á
ááşá¸áážáŻáááş Kubernetes API áááş CI á
áá
áşáážááˇáş áááşá¸ááᯠáĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áĄáááşááźáŻááťááşááźááˇáş ááŻáśáˇááźááşáááşá

áááŻáˇááąáŹáşá ááźáŽá¸ááŹá¸ááąáŹááźáżááŹáá
áşááŻáážááááşá áĄáąáŹááşááźááşááąáŹ áĄáááŽááąá¸áážááşá¸áááş áĄáąáŹááşááźááşá
á˝áŹ ááźááˇáşááťáááźááşá¸ááᯠááááŻáááŻááŤá. áĄáááşá Kubernetes áááş áááşáááˇáşááźáąáŹááşá¸áá˛áážáŻááťáŹá¸ááᯠáĄááŻáśá¸ááťááááşááᯠááŹá¸áááşááźáŽá¸ áááşá¸ááᯠáĄááŻáśá¸ááťááŤá ááááşáááş áááşáááŻáˇááźá
áşáááşááᯠááťá˝ááşáŻááşáááŻáˇ ááááááŻááşááŤá áĽáááŹáĄáŹá¸ááźááˇáşá áážáąáˇáááşá¸áá˝ááş ááąáŤáˇááşááťáŹá¸ááᯠáĄááşááááşááŻááşááźááşá¸áážááˇáş ááźááşáááşá
áááşááźááşá¸áááŻáˇáááş áĄáąáŹááşááźááşáááŻááşááąáŹáşáááşá¸ ááąáŹááşááśáá˝ááş áááŻááşáá˛á áááşáááşááąáááˇáş áĄáááŽááąá¸áážááşá¸ááŻáśááťáŹá¸á ááŹá¸áážááşá¸áĄááťááŻá¸ááťááŻá¸ááᯠááťá˝ááşáŻááşáááŻáˇ ááážáááŤáááşá
áĄááŹáĄáŹá¸ááŻáśá¸ááᯠáážááşáááşá á˝áŹááŻááşááąáŹááşáááşá á¤áĄá áŽáĄá áĽáşáááş Kubernetes API ááž áĄááźáąáĄááąáĄááťááşáĄáááşááťáŹá¸ááᯠáááşááśááážáááźáŽá¸ áĄááŹááťáŹá¸á ááááˇáşáĄááźáąáĄááąáážááşááᯠáááşááśáá˝á˛ááźááşá¸á áááşááźáŹáááşáĄáá˝ááş áááŻáˇáá˝ážááşáááˇáş áĄáá°á¸ááźáąááŹááśáááˇáşááşáá áşáᯠáááŻáĄááşááŤáááşá Go áá˝ááş Open Source á áŹááźááˇáşáááŻááşáá áşááŻááᯠááťá˝ááşáŻááşáááŻáˇ áááşááŽá¸áá˛áˇáááş- (áááşá¸áááźáąááźáŹááťááşáááŻááźááˇáşááŤá )á¤ááźáżááŹáááŻááźáąáážááşá¸ááąá¸ááźáŽá¸ werf áĄááźá áşáááşááąáŹááşááŹá¸áááşá
werf áĄáááˇáşáážá á¤ááźáąááŹááśááááááŹá áĄááźáŻáĄáá°ááᯠDeployments áááŻáˇáááŻááş StatefulSets áá˝ááş áááˇáşááŹá¸áááˇáş áážááşá
áŹááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá á
áŽá
ááşáááşáážááşááŹá¸áááşá áĄááá áážááşááťááş- fail-mode - áĄáąáŹááşá፠áĄáááášááŤááşááťáŹá¸ááᯠááŹá¸áááşáááşá
-
IgnoreAndContinueDeployProcessâ ááťá˝ááşáŻááşáááŻáˇáááş á¤áĄá áááşáĄáááŻááşá¸ááᯠááŻááşáá áşááźááşá¸á ááźáżááŹááťáŹá¸ááᯠááťá áşááťá°áážáŻááźáŽá¸ ááźááˇáşááťááşáážáŻááᯠáááşáááşááŻááşááąáŹááşááŤáááşá -
FailWholeDeployProcessImmediately- á¤áĄá áááşáĄáááŻááşá¸áážá áĄáážáŹá¸áá áşááŻáááş ááźááˇáşááťááşááźááşá¸ááŻááşáááşá¸á ááşááᯠáááşáááˇáşá áąáááşá -
HopeUntilEndOfDeployProcessâ ááźááˇáşááťááşáážáŻáĄááźáŽá¸áá˝ááş á¤áĄá áááşáĄáááŻááşá¸áááş áĄááŻááşááŻááşáááŻááşáááşáᯠááťá˝ááşáŻááşáááŻáˇ ááťážáąáŹáşáááˇáşááŤáááşá
áĽáááŹáĄáŹá¸ááźááˇáşá á¤áĄáááşá¸áĄááźá
áşááťáŹá¸áážááˇáş áážááşááťááşáááşáááŻá¸ááťáŹá¸ááᯠááąáŤááşá¸á
ááşááŹá¸áááşá fail-mode:

ááťá˝ááşáŻááşáááŻáˇ áááááŻáśá¸áĄááźáááş ááźááˇáşááťááşááąáŹáĄááŤá ááąááŹááąáˇá
áş (MongoDB) áááş áĄáááşáááˇáşáááźá
áşááąá¸á፠- ááźááˇáşááťááşáážáŻááťáŹá¸ ááťááşáá˝ááşáá˝áŹá¸ááŤáááşá áááŻáˇááąáŹáş áááşá¸á
áááşáááşáĄáááŻááşáĄáááˇáşááᯠáááşá
áąáŹááˇáşáááŻááşá¸áááŻááşááźáŽá¸ áááşááźááˇáşááťááŹá¸áážáŻááᯠáááşáááşááŻááşááąáŹááşáááşááźá
áşáááşá
werf áá˝ááş kubedog áĄáá˝ááş ááąáŹááşáááş áážááşá ᯠáážá áşáᯠáážáááŤáááş-
-
failures-allowed-per-replica- ááŻáśá áśáá°áá áşááŻá áŽáĄáá˝ááş áá˝ááˇáşááźáŻááŹá¸ááąáŹ ááźá˝áąááťáĄááąáĄáá˝ááşá -
show-logs-untilâ áážáááˇáşááŹá¸ááąáŹ pods ááťáŹá¸áĄáŹá¸ááŻáśá¸ááž werf (stdout) áážááşáááşá¸ááťáŹá¸ááźááááˇáşáĄáááŻááşáĄáááˇáşááᯠááááşá¸áážáááŤá ááŻáśááąááŹá¸PodIsReady(ááŹááşáĄáá˝áŹá¸áĄááŹá áááşáááˇáşáĄááťáááşáá˝ááş ááťá˝ááşáŻááşáááŻáˇááááŻááŹá¸áááˇáşá áŹááťáŹá¸ááᯠááťá áşááťá°áážáŻáááş)á áááŻáˇááąáŹáş áááşáááŻá¸ááťáŹá¸áááşáááşá¸ áĄááťáŻáśá¸áááşáááş-ControllerIsReadyиEndOfDeploy.
ááźááˇáşááťááşáážáŻáááą ááąáŹááşáááş ááŹáááŻááťááşááąá¸áá˛á
ááąáŹáşááźááźáŽá¸ááŹá¸ áĄááťááşáážá áşááťááşáĄááźááşá
- ááźááş áá áşááŻáśá¸ááťáŹá¸ - áááŻáĄááşááąáŹáá°ááťáŹá¸áááŻáᏠáááşáááŻááşááŻááşááŤá
- áá áşááŻááş áááŻá¸áááşááźááşá¸áĄáááşááźáąáŹááˇáşáááŻááąáŹáş áĄááŻááşáááş áááá áşáĄááąáŹáşááźáŹ "ááááşááááşá á˝áŹ" ááťáááşááŹá¸áááşáááŻááŤá áááŻááąááŹáá˝ááş ááźá áşááťááşááąáááşááťáŹá¸ááᯠááŹá¸áááşáááş áĄááąá¸ááźáŽá¸ááŤáááşá
- иПоŃŃ áĄáááŻáĄááťáąáŹááşááźááşáážááˇáşááźááşá¸á áá áşááŻáᯠáážáŹá¸áá˝ááşá¸áá˝áŹá¸ááŤá (áááŻáˇááźáąáŹááˇáş ááźááˇáşááťááşáážáŻá áĄááźáąáĄááąáážááşááᯠáááááş áĄááąá¸ááźáŽá¸áááş)á áá˝ážááşáááşáážáŻáááş áĄááŻááźá°ááŻáśá¸ááźá áşááááş- áĄááŻáśá¸áĄáááá˝áŹá¸áááşááźá áşá áąá áĄáŹá¸ááŻáśá¸áááş áááşá¸á ááááşáĄááźáąáĄááąáááŻáˇ ááźááşáá˝áŹá¸áááşááźá áşáááşá
ááááşááťáŹá¸áááŻ
ááŻáášáááŽáá áşááŻáĄááąááźááˇáş ááťá˝ááşáŻááşáááŻáˇáĄáá˝ááşá ááąá¸áááŻáˇááźááşá¸áááá°ááŽááąáŹáĄáááˇáşááťáŹá¸áá˝ááş ááąáŹáşááźááŹá¸ááąáŹ áá˝á˛ááźáŹá¸ááťááşááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáĄááąáŹááşáĄáááşááąáŹáşáááş (áááşááąáŹááşááźááşá¸á ááŻááşááąááźááşá¸á áĄááŻáśá¸ááťááźááşá¸)á CI á áá áşáážááˇáş áĄááŻáśá¸áááşáážáŻáááş ááŻáśááąáŹááşááŤáááşá .
ááááŻáśá¸ááťáŻááşááŹá

werf ááĄáá°áĄááŽááźááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş DevOps áĄááşááťááşááŽááŹááťáŹá¸áĄáá˝ááş ááźáżááŹáĄááťáŹá¸áĄááźáŹá¸ááᯠááźáąáážááşá¸ááŹáá˝ááş ááąáŹááşá¸áá˝ááşááąáŹáááŻá¸áááşáážáŻááᯠááážáááźáŽá¸ ááťááşááźááˇáşááąáŹáĄáááŻááşá¸áĄáááŻááşá¸áĄááąááźááˇáş áĄáááşá¸ááŻáśá¸ á¤áĄááŻáśá¸áááşáážáŻááᯠááŻááşááąáŹááşáááş ááźááŻá¸á
áŹá¸áá˛áˇááŤá áááşá¸ááźáąáŹááşááááŤáááşá áĄáá°ááá˝ ááááşááąáŹááşá¸áá
áşááŻááážááááş áááŻáááŻáá˝ááşáá°áááşááźá
áşáááşá
ááŽááŽáááŻááťáŹá¸áážááˇáş ááááŻááşááťáŹá¸
ááťáąáŹáşááźáąáá˝á˛ááž ááŽááŽááᯠ(~47 áááá áş)

áĄá áŽáááşááśá áŹáááşááźááťááş-
PS
ááťá˝ááşáŻááşáááŻáˇááááąáŹáˇááşáážá Kubernetes áĄááźáąáŹááşá¸ áĄááźáŹá¸áĄá áŽáááşááśá áŹááťáŹá¸-
- ÂŤÂť (Dmitry Stolyarov; á§ááźáŽá 27 áááşá 2019 âStrikeâ áá˝ááş);
- ÂŤÂť (Andrey Polovov; á§ááźáŽ 8á 2019 áá˝ááş Saint HighLoad++);
- ÂŤÂť (Dmitry Stolyarov; áááŻáááşáᏠ8á 2018 áá˝ááş HighLoad++);
- ÂŤÂť (Dmitry Stolyarov; ááąá 28 áááşá 2018 áá˝ááş RootConf);
- ÂŤÂť (Dmitry Stolyarov; áááŻáááşáᏠ7á 2017 áá˝ááş HighLoad++);
- ÂŤÂť (Dmitry Stolyarov; áá˝ááşá 6á 2017 áá˝ááş RootConf).
source: www.habr.com
