ααααααΈ 27 ααα§αααΆ αα
ααΆαααααααααα·ααΈα DevOpsConf 2019 αααααααΆααααα‘αΎαααΆααααααααα·ααΈαα»ααα
α αΆααααΆααααΈααΆαααααΎαααααα αΆα α§αααααααααΎααααΆααααααααΎα (ααΈαα»αααααΌαααΆαααααααΆααααΆααΆ dapp) ααΆαααΆααααα ααα»α ααααΆααααΆαααααααα·ααΆααααααα ααααΆα 1000 αα ααΎ GitHub β ααΎααααααΉαααΆαα ααααα’αααααααΎααααΆααααααααα»αααΎαα‘αΎαααΉαααααΎα±ααααΈαα·αααΆααααααΆααααα½ααααααΆαααα·ααααα DevOps ααΆα αααΎαα
ααΌα
ααααααΌαααααΆα
αααααΌααααααΌααα Kubernetes
ααΆααα·ααΆααααΆααΉαααααα·ααΆαα’αααΈ werf αααα αΎα ααα»ααααα’αααΈ CI/CD αα
αααα»α Kubernetes ααααααααΆααααΆαααααα·ααΈααααααΎαααααΌαααΆαααα
αααα
αααα»α Docker containers (αααα»αααΆααα·ααΆαα’αααΈααΏαααααα
αααα»α
ααΎααΆαααΉααααααΌαααΎααα ααΌα α’αααΈαα αααα»α Kubernetes?
- ααΆαααααΆαα Git αααααΆααααααΌα αα·αααΆαααααΆααααααΆααααΆααααααΆα αααααα·ααΈαααααααΌαααΆααααααΎαα‘αΎαααΆααΌαααΆα Docker α αΎαααααΌαααΆαααααα»ααααα αααα»α Docker Registry α
- ααααΆααααΌα ααααΆααααΆαααΆαααααΆαα’αααΈααααααΆαααααααΆα αα·αααααΎαααΆααααααα·ααΈαααααα αα ααααΆααααΆαααΆαααααααΆα ααΆαααααΆαααΆαααααααααΌαααΆαααααΎαα ααΆαα Kubernetes αααααα½αααΌαααΆααααα ααααΆαααΈαααααΈααααα α αΎαααΎαααααΎαααΆαααΆα
- ααΎαααΈααααααααΆααααααΆααΆαααΆαααααΎαααααα ααΆαααααααααα’αΆα ααααΎααΆααα αααααααα»αααααΌαααΆαα α’αααααα’αΆα (ααααΎααΆαααΆαααααΆαααΌα ααααΆ) ααΆαααααααΆαα αααΆααα αααααααααααα·ααΈ (αα αααα»α namespace K8s α¬α αααααααΆα ααααα‘αα) α αΎαααααΎαααΆαααΆαααααΎααααααα ααΈαααα
- α α»αααααα α’αααααααΌαααΆααααααααα CI αααααα½αααααΉαααα·ααΆαααααΈ Git (α¬ααΆαα α»α αααΌαα»α) α αΎαα α ααααΆααααΆααααααΆααααααααΆααα’ααα αααααΎα ααααα»ααα αααααΆα ααΆαααααα
ααΆααααααα
αααΆαααααΆααααα½αα
ααα½ααα
ααΈαααα
- αααααΆαααααΎαααΆαα αααααΆαα
ααΆααααααααααααα·αα’αΆα
ααααΆααααααΌαααΆαα (α αααααΆαα
ααΆααααααααααααα·αα’αΆα
ααααΆααααααΌαααΆα)ααΌαααΆααααααα·ααΈαααααααΎαα
αααααααααΆααααΆα (ααααΆααααΆα ααΆαααα·αα ααααΌαααααΆααα½αα. αααα»αααΆααα·ααΆαα’αααΈααΏααααα±ααααΆαααα’α·α αα·αααΆαα½αα§ααΆα αααα
αα ααΈααα . - αααααΆαααααΎαααααΎααΆαα αααααΆαα
ααΆααααααααααΆαα·ααΈααΆαααααααΌα (IaC), ααΌααααααα·ααΈ ααα
ααααΈααααΆααααααΆααααΆααααααΌααααα»α αα·αααΆαααΎαααααΎαααΆαααΆαα½αααααΆ αααΆααα·αααααΆαααα
αααα»αααααΆαααα½αα. αααααΆααααααααΆαααααααα’αααΈααΏαααα ααΌαααΎα
αααΆαααΆααααααα . - αααααααααΆααααΉααααααΌα (ααΆαααΉααααααΌα) ααΆααααααΆααΎαααΎαααΆααΌα αααα αααααα·ααΈααααΌαααΆααααααΌααααα»α ααΆααααα α ααααααΆα (ααααΆααααΆαα ααααααΆα) α αΎααααα αΎαααΆααΆ - ααΆαααΉααααααΌαααΆαααΎαα‘αΎαα ααα»ααααααΆααα·α α’αααααααΎααααΆααααα½αααΆαα’αααΈαααα’αααααΆααααα ααα αα·αααΆα αααβαααβα’αααβαααααΌαβααΆβαα βααα·ααααα α αΎαβαααβαααβααΆααβα’αΆα βαα βααΈααα α αΎαβααα·αααααβαααβααααΎαααΆαα ααΌα ααααβαααα»αβααΏβααΆβααααβαααααΆααβααΉαβαααααΌαβααααΌαβαααα αα ααΆααααα ααααΆααααΆαααααα·ααααα·ααΆαααα»αααααα (ααα)α¬α αααΆααααΆαααααα ααα ααΌααααΈαααα αααααααα αααααααααααΌαααααΌαααΆαααα ααααΈααΆαααα·α (αααα½αααΆααααααααΌαααααΈ)α
α
αΌαααΎααααα‘αααα
ααααααα
ααα
αΆαααΆαααΎαα
αααα»α Kubernetesα ααΆααααΌαααΆααααααΎαα‘αΎααα·αααααΉαααααααα½αααΎαααα»ααααααα ααα»αααααααα’ααααααααααααΆααααααααααΆααααα αΆαααααΆαααααααααα ααΆααα·α ααααΌαααα₯α‘αΌαααααΌαααΆαααα α
ααΆ GitOps (α’αααα’αΆα
α’αΆαααααααα’αααΈααΆααα αα·ααααα·ααα
ααΈαααααααΆα
ααααΆααααΆαααΆαααα
ααΆα αΆααααΌα
ααΆα’αααα’αΆα
αα·ααΆαα’αααΈααΆααααααΎαααΌαααΆα Docker αα
ααααΆα 2019 αα
ααααααααα»ααααααααααααΆααΉαααΈααααααααα Dockerfiles αα·αααααΎαααΆαα docker build
?.. ααΆαααααααααααΆα
ααα»α
ααααααα»αα
ααααα
α·ααααα»αααΆααα
- ααααααααΌαααΆα ααααΆαα ααΌα
ααααααααΎ
αα α»ααααΆααααΆα ααΎααααΈαα»ααααα»αααΌαααΆααααααααα·ααΈααααα·αααΆα αΆαααΆα ααααααΆααααααα·ααααα·ααΆαα - α
ααα½ααααααΆαα ααααΌαααααααΌαααΆαααααα½αα’αααααααΆαααααΆααα½ααααα
αΌααααααααααΆαααα
RUN
- αααααΆαααα’ααααααα - αααααΆαααΆαααΆαααααααααααααααααα αΆ ααΆαααααα α»α, αααααΆααααα ααααααααΆααα½αααααα»αααααΆααΆαα, α’αααααααΌααααααααααααΆααααααααΆααααΉαααααΌαααΈαααααααααΆααααααααααΆαα±ααααΆααααα αΆα
- ααααΏαααα‘αΎα ααααΆαααααααααΎαα αααααα ααααΆαααααΆααααααΌααααΆαααΆαααα αα αα·αααΎαααααααα α§ααΆα ααα α’ααααα·αα αααααααΎαααΆαα’αΆααααααα αααα»ααααααΆαααααΆααΆα‘αΎααα·ααα ααΆααααααααα’ααααααααΎααααααα·ααΈα
- ααΆααΉαααΆααααΈααααΆαα Git αα½ααααα’αααααααΌαααΆα ααΌαααΆαααΆα αααΎαααααα’αΆα ααααΌαααΆααααααααΆαααααααα»ααα Dockerfiles (α¬ααΆαααααααααααΆααααΆααααα»αα―αααΆααα½α) αα·αααααααΈα Bash ααΆαα½αααΉαααΆααα½αααααα»αααααΆααΆαααααααααΆαααααααα½αααα
αααααααΆααααααΆα α»αααααΆααααΉααα αααααα»ααααααααααααΆααααααα»αα ααα»ααααααΆααααα αΆααααααααααΆαα·αααα
- ααΆααΉαααΆαααα ααααΆααααΆααα½αααααα»αααααΆααΎαααααΌαααΆαα’αααΈαα½α αααα (α§ααΆα ααα αααααΆαα»αααααααααααΆααααααααΆααΌα ααΆ apt αα αααα»αααααΆααΈααΈααΈ)α
- ααΎαα ααααΆα Ansible αααα½αα±ααααΆαααααααα αααα»ααααα
- ααΎαα ααααΆα ααΆαααααααααααΆα Docker (α ααα»α’αααΈααΆαααΆααΎαααααΌαααΆααααΆαααΈααα·αααα·ααααααα αααααΎαααααΌαααααααα ααΆααααααααα’αααΈααααααααΆααααααΆααααΆ αα ααααααααΎαααΆαα ααααα Kubernetes αααααΎαα’αΆα ααααΎαααΆααα»αααΊααααα½α α αΎα?)
- ααΆααααα»ααααΆαααΆα‘αααααα’αΆα αααααΆαααΆααα·ααΈααααααααααΆα ααΆααααααααΆααααααααααΆααΈ Dockerfile (ααααα·αααΎααΆαα αααΎαααααΆααααΆαααααΌαααΆαααααΎ) ααΆαααααααααΆα α·αααααΆα αααΎαααααααΆααααΌα ααααΆ Dockerfiles ααΆα αααΎαα
- ααΆααα½αααααα»αααααΆα ααα αΆαα ααΎαβα ααβαααααΌαβααααβαααβαααα»αβααβαααβααΆαβααααααβΒ«βαα·αβα ααβα ααβΒ»βαααααβ ααααΆαααααααΆαααααααα½αααααΆαα αααααΆααααααΆααΆααααΌααααααΆαα»ααα ααααααααΆαα½αααΆα ααααα‘ααα
- ααΈαααα»ααααα»αααΆαααΆαααααααααααΌαααααα ααααΈααααΆααααΆ ααααααααααααα·ααααα ααΆααΆααΆαααα’αααα»αααΆαα αΌααα ααΆααααααΆαα ααΆαααΆααααααααΆαα½αα ααα½α αα·αααα½αααΆαααΌαααΆααααααααααα½α ααΆααααα αααααΌααααα»ααααααΆααααααΉαα’αααΈαααα αα·αα’αααΈαααααααΌαααααΎα±ααααΆαααααΉαααααΌαα αααααΆαααΆαααΆααααα αααα»αααααΆαααα·αααααΆααααΆ nuances ααΆααα’ααα’αΆα ααααΌαααΆαααααΎαααΎααα»αααΆαα»αααΆααα·ααΈαααααα
α αΎααααααΊααΆααααααα
-
α§αααααα ααα / αααα ααααΆαααα - α’αααααΆααααααααΈ Docker Inc (ααΆααα½ααααα αΌααα αααα»ααααααα αα α»αααααααααα Docker) ααααααα»αααααααΆααΆααααααααΆααααα αΆααΆααα’αααααα -
ααΆααΈααΌ - α’αααααΆααααααΈ Google αααα’αα»ααααΆαα±ααα’ααααααααΎααααααααΆα Docker; -
Buildpacks.io - ααΆαααα»αααααααα CNCF ααΎααααΈαααααΎαααααααααααααααααααααααα· αα·αααΆαα·ααααααααααααΆααα½αα±ααα αΆααα’αΆααααααααΆαα½αααΉαααΆαααΆααα‘αΎααα·ααααααΆαααααααΆααα - αα·αα§αααααααααΎααααΆαααααααααααααΌα
ααΆ
ααααΆαααΆ ,truetools/img ...
... α αΎαααΎαααΆααΎαα½αααααΆαααΆααΆααα»ααααΆαααΆαααα
ααΎ GitHub α αααααΊαα
ααΎααααααΆαα docker build
ααΆαα αΎαα’αΆα
ααααΎα’αααΈαα½αααΆα ααα»ααααααΆααα·α αααα αΆαα·αααααΌαααΆααααααααΆαααΆαααααα»αααα - αααααα»ααΆααααααααΊααΆααΆαα’αα·ααααααααααααααΆααα’ααααααααΌααααα½α ααααααααααΈαα½αααααααααΆααααα αΆαα½αα
ααα½αα
ααΆααα½αααααα»αααααΆαα αααα»α werf
ααΌα
ααααααΎαααααΌααα
αααα αΆαααααΆαααααααααααααααααΌαααΆαα’αα»αααααα½α
α αΎα ααΆαααΆααααααααααααΆααααΌαααΆαααααΎα‘αΎααα
αααα»ααααΆαααΈααααα½α α αΎααααα αΆαααααααα·α
ααΆαααααΏαααααΌαααΆααααααααΉααααα
αααα
α
α»ααααΌααααα
α
ααααΆααααΆαααααΆαααααα»αααααααΆααααα»ααααααΈααααα (ααααα»ααα)
ααΎαααΆαα
α»α
docker push
... - ααΎβα’αααΈβα’αΆα
βααΆβααΆαβααααΆαβαααα»αβααΆαβαααα»αβα‘αΎαβααΌαααΆαβαα
βαααααΈβααααα? α αΎααααααΆαααααααα½αααΎαα‘αΎα: "ααΎαααα»ααα½αααΆααααααΆαα’αααΈαα
ααΎααΌαααΆα?" ααΆααΎαα‘αΎααααα ααα»αααααααΎαααΆα ααα αΌα (α¬αα»αααααΆααααα Git αααααααα) αα·α Kubernetes α αΎαα§ααααΆα αααααααα»αααααΆααΆαααΆααΆααΆα’αααΈαααααΎαα‘αΎααα
αααα»α Kubernetes ααααΎααΆαα’αααΈαααααΎαα‘αΎααα
αααα»α Git α αααΆαααΆαα·α Git ααΊααΆαααααααααΆααα·ααααα½ααααααααααΎαα
ααΎβααΆαβα’αααΈβαα·ααΆαβαααΆαβααα? ααΆααΆααΆαααααααΌαα ααΈααΆαααααααααΆα α·ααααα αααα»α Git ααααα·αα’αΆα ααααΆααααααΌαααΆααα αααα»αααααααΆαα· (αα·αα’αΆα ααααΆααααααΌαααΆα)αα ααΆααααΌαααΆα Docker ααααα½ααααααΆαα»αααΌα ααααΆα
ααΆααααααΆαααααααα ααααααΎα ααααααααααααΎααααβααΆαβααβααΎαβα ααβαααβααΆβαααααα·ααΈβαααβααααΎαααΆαβαα βαααα»α Kubernetes ααααΌαβααΆαβαααααΎαβα‘αΎαβααΈβααΆβααβα αΎα (αααααΆααβααβααΎαβα’αΆα βααααΎβααΆαβαα»αβααααΆ αα·αβα’αααΈβαααβααααααβααααΆ)α
αα»αααααΆαααααααΆααααααΆα
ααΈαα½αααΊααΆαααα ααααΆα git. ααΎαβααΆαβαααααΈβαααααβαααβααΆαβααΌαααΆαβαααβααΆαβααΆααβααααΆαβααΆβ 1.0
. Kubernetes ααΆαααααΆααααΆα αα·αααα·ααααα αααααΌαααΆααααααααΌαααΆααααα ααα αα
αααα»α Git ααΎαααααΎααΆααααααΆ α αΎααα
α
ααα»α
ααααααΎαααΆααααααΆα 2.0
. ααΎααααααΌαααΆααΆαααΆαααααΆαααΈααααΆααα αΎαααΆααααΆαα
αααα»ααααααΈαααααααΆαα½αααααΆα 2.0
. ααΎαβααααβααΆβα
ααβαα
βααΆα α αΎαβααααα·αβααΎβααα’βαααβαα
βααα·αααααα
αααα αΆβααΆαα½αβααΉαβαα·ααΈβαααβααΊβααααΌαβααΎαβααΆααβααααΆα α αΎαβααΆαβααβααΆαααααβα αΎαβααααβααΆβα
ααα α ααα»α’αααΈ? ααΈαα½α ααΆαα·αααα ααα»ααααα ααΎααααα»αα
αααααααααααα·ααΈαααααΎααα·αααΆααααΆαααΆααααααα
α‘αΎα (ααΎααα·αα’αΆα
ααααΎααΆαααΎαα·αααΌα
αααααα αααααααΎααααΈαα·αα·αααααΎα ααΎαααααΌαααΆααααααΆα)α ααΈααΈα ααααΌαααααα·αααααΌαααααΆααΆαα½α Gitflow ααα
αααααΎαααΈααΈαααΊα git commit + tag. ααΆααΆααααΆαααααΆα 1.0
; αααααΆααααΆαα
αααα»ααααααΈααααα - ααΌαααΆααααααααΌαααΆαααΆαααααααΆααα
ααα·αααααα ααΎαααΈααα α
ααααα Kubernetes ααΆαααΆαααΎαααΆαα»α αα·αααααααααααΆααααΆαα αααααΆααααΎαααααΎααΆα Gitflow: αα
αααα»αααΆααΆα
αααααααααΆααααΆαα’αα·αααααα (develop
) ααΎααααααΎααα»αααΆαααααΈα ααααααααΆαα±ααααΆαααΆαααααααααΆα
α·αααααΆαα½αα§ααααααααααα’ααααααααΆα #c1
. ααΎααααααΌαααΆ α αΎααααααααΆαααΆαα
αααα»ααααααΈααααααααααααΎα§ααααααααααΆααααα (#c1
) ααΆβαα½αβααΉαβααΆαβαααααβα’ααααααααΆαβααΌα
βααααΆβαααβααα ααΎαβα
ααβααΎααααΈβααΎαβααΆβαα»αβα ααΎαααααΎααΌα
ααααΆααΆαα½αααΉαααΆααααααΆ #c2
ΠΈ #c3
.
αααβααΎαβααΉαβααΆβααΆαβααααααβαααααααααΆαα ααΎαβα
αΆααβααααΎαβααααΎβα²ααβα’αααΈαβααΆαβαααα·αααΆαα αααααΎαααΆααΆαα
αααα»α Git release_1.1
(αα
ααΎααΌαααααΆα #c3
ααΈ develop
) αα·αα
αΆαααΆα
ααααααΌαααΆαα
ααααααΆααααααααααα ... αααααααΌαααΆαααααΎαα
ααα αΆααα»αα ααΌα
αααα ααΎαβα’αΆα
βααΆαβααΆβα
ααβαα
βααααβααααα ααΎααα½ααα»αααα α»ααα
αααα»α #c4
α αΎαααααααααααΆαααααα α
αΆααααααΎαααααΎαααΆαα αααααΉαααΉαααα ααΆαα’αα·αααααααααα»αααααΎαααΆα develop
αααααΆαααααααααααΆαααααΆααααααΌαααααΌαααΆαααααΆαααΆαααααα release_1.1
. αα
α
ααα»α
αααα ααΎαααα½αααΆαααΆααααααααΆαα½ααααααΆαα
ααααα αα·ααααα αααα
ααΆααααΆα αααααΎααααααΆαα
α·αααααΆαα½α (#c25
).
αααααΆααααααΎααααα
αΌαααααΆ (ααΆαα½αααΆααα
αα»αααΏα) ααΆααΆα
ααααααΆα (release_1.1
) αα
αααα»αααα ααΎαααΆααααααΆαααΆαα½αααααααααΈαα
ααΎααΆαααααααααΆα
α·αααααα (1.1
) ααα»ααααααΌαααΆααααααααΌαααΆααααααΌααα½α
α αΎααα
αααα»ααααααΈααααα ααΌα
ααααααΎααααΈαα»αα±αααααααΌαααΆααααααα ααΎαααααΆααααααααααααααΆαααΈααΈααα
ααΌαααΆααααααΆαααααΆαα (α₯α‘αΌααααααΆααΆαααααΆααα
αααα»ααααααΈααααα #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. ααααΆαααΌαααΆααααααΆαα αααααααΆα
α₯α‘αΌαααα αα
ααααααααΆα
αΆαααΆα
α ααΆα§ααΆα ααα ααΎααααΈαααα
αΌαααΆαααααΆααααααΌαααΈααΆαα
ααααααΆααα
ααΆαα ααΎαα’αΆα
ααααΎααΆααααα
αΌαααααΆαα·αααααΆααααΆαα ααΆααΉαααΆαααΆααααααΆαααααααααααΆ ααα»ααααα αααααααΆααΌα
ααααΆα ααΆαα½αβααΉαβα§αααααβαααααΆααβααΌα
ααααΆ ααΎαβααΉαβαααα αΆαβααΌαααΆαβαα
βααα·αααααα
αα»ααα·ααααα·ααΊααΆα₯α‘αΌααααααΆααΉααα·αα’αΆα αααααααΆααΎααΆαααααααααΆα α·αααααααααααΆαααααααΌαααΆααα»ααα ααα·ααααα - checksums ααααΎαααΆααααααα»ααα·ααα αα½αα αααα αΆαααααααΌαααΆααααααααΆαααααααααΆαααααααααααααΆααα·ααααααααααΆ - αααα»αααΉαααααΆααα’αααααααααααααα ααααααααα
ααΆαααΆααααααΆααα αααα»α werf
αα αααα»α werf ααΎαααΆααα ααααααααα α αΎααααα»ααααα αααΎααααΈαααααΎαααΆαα ααα αΆαααΆαα½αααΉαααααΆαααααααΆααααααα·αααααΌαααΆααααααΆαα»ααα ααΎαααΆαααΈααααα½α... ααΌα ααααααΎααααα»ααααααΎαααΌαααΆα Docker ααΈααααααα ααΎαα α ααΆααΆ ααΆα ΠΈ ααΌαααΆα.
ααααΆαα werf Git αααααΆαα»αααΆαααααΆαααΆααααΆααααααΆαααΆαααα ααααα·αααααΆα’αααΈααααΆααααΆαααααααααααΆααααΆαααΆαααα (αα»ααααααα‘αΎα, ααα‘αΎα, αα»ααααααα‘αΎα, ααΆαααα‘αΎα) ααΎααααααΌαααΌαααΆαααααΆααααΆαααααΌααααααΆαα αααααααΆαααααααΆααΆ checksum ααααα αΆαααααΌαα αααααΆαααα ααΎαααααααααΌαααααα αααααΆααααΌαααΆαααααΆααααΆαααααΈ ααΎαααααΆ checksum ααααααΆ... ααααα·ααααα·ααΆαααΆαααααααααΌαααΆαααααΎααααααααααααΆααααααΆααααΆαααΆααα’αα ααΆααααααααΎαααα½αααΆααααα»αααΌαααΆαααααΆααααΆαα αααααΆααααααΎααααααΎαααΌαααΆαα α»αααααα αααααΆααα·ααααααααααΆα’αααΈαααααααΎαααααααΆαααααα α αΎαααΎαααΆααααααΆαααΌαααΆααααααΆααα·ααΈααααααααααΆ (ααααααΆααααα’α·ααα αααααααα)α
α§αααΆααΆαααααΆααααΈαααααΆαααααααααΆα
α·αααααααΈααα
α‘αΎααααααΆααααααααΌααααααα·ααΈααα»ααααααααααααΌαααΆαααααΆααααααΌαα ααΎααΉαααΆαα’αααΈααΎαα‘αΎα? αααααΆααααΆαααααΆααααααΌαααΌα αααααα½αααΉαααααΌαααΆααααααΎα α αΎαααΌαααΆαααααΆααααΆαααααΈααΉαααααΌαααΆααααα
αα α αααααααΆααααααΆααΉαααααΌαααΆααααααααΆααΆ checksum ααααΌαααΆαααααΆααααΆαα
αΆαα αα·αααααααααΈα ααΌαααΆαα
α»ααααααααααΈαα½αααΉαααααΌαααΆααααααΎαα‘αΎαααΈααΌαααΆααααα α’αΆαααααα·αα·ααΆααααααααααΆααΉαααΎαα‘αΎαααΆαα½αααΉαααΆαααααΆααααααΌααα
αααα»αααααΆααααΆαααααααααα
ααΌα αααα ααΌαααΆαααααΆααααΆαααΊααΆααααΆαααααααΆαααααα’αΆα ααααΌαααΆααααααΆαα»ααααΆαα ααα αΆα α αΎαααΌαααΆααααααΆααααααΎααα½α α αΎαααΈααΆααααΌαααΆααααα»αα‘αΎααα ααΆαα Docker Registry α
ααΆααααα’αΆααααααΈααααα
ααΎααα·ααα·ααΆαα’αααΈααΆααα»ααααααΆααααααα αααααα½ααααααΆααααΈααΆααα»αααααΆααα - αααααΊααΆαααααααααααααΆααα Docker Registry αααα½αααΆααααΆααα ααΎααααα»ααα·ααΆαα’αααΈααααΆαααΆααα½ααα ααααααααααΆα Docker α αααΎααααα»α α αΎαααΎααααααΆααΎααααααααΌαααΆααα½αααΆαα½αα ααα½ααααα αΎα ααα»αααααα½αααααααααααααααα (αα·α/α¬ααΎαα αααΆααααααΆααααΆ)α
ααΎαα»αααααΆααααααααα’αΆαα’αααΈαααα?
- α’αααααααΆαααααα·αα’αΆα ααααΎα’αααΈααΆαααα αα·ααααα’αΆα. ααααααα ααΆαα·αααΆααΆααααα½ααααα»αααΆαα αααΆααα·α αα½α αααααΆααααα ααααααα ααΆααΆαααΆαααααΆαααααΆααααααΆαααΆαα ααααΌαα αααααα ααα»ααααβααΆβααααΎαααΆαβααααΉαβα ααα»α βααΆααααΆααβαα½αβααα»αααααα
- αααααα‘αΎααα·ααααααα. ααααα·αααΎα’ααααα»αααΌαααΆαααΆααα’αα α αΎααααααΎαα‘αΎααα·αααααΌαααΆααα αα α»αααααααα αααα»ααααααααα CI ααααααα αΆα’αΆα ααΉαααΎαα‘αΎαα ααααα·αααΎαα»αααΊαααααααΌαααΆαα αΆααααααΎαα‘αΎααα·ααα αααα»αααα·ααααα ααΌαααΆαααααΈααΉαααααΌαααΆααααα»ααααααΆααααΆ - αα½αααααα·αααΆααααααΌαααΆαααΆααααααααααααΆααααΆααα ααααααααΆαααααα·αααα αααααΆαα ααΆααααααααααααα·αα’αΆα ααααΆααααααΌαααΆαα
- ααααααα. αααααΈααααααα½αα αΆααααααΎαα αα - ααΎααααα»αααΌαααΆααα αα½ααααα αααα αΆααΌα ααααΆααΉααα·ααΈααΆααααααα»αα ααΎα’αααα’αΆα ααααααααααΈααααααααα αΆααααααΎαα ααα αααα αααααΆ?
- ααΆααααααααΆ. αα»αααΌαααΆαααΆααα’αααααα αΆααααΆα 1 αα? ααα»ααααβα αααΆααβααΆβααΉαβααΆαβααααΆβαα½αβαααβαα·αβααΆααβααΆαβα’αΆαααααβααααααβαα½αβααβ¦
- ααααα αααααα’αααΈαααα’αΆα ααααΌαααΆααα»ααα½α α αΎαα
ααΆαβαααααΎαβααΈαβαααβα’αΆα βααααΎβααΆαβαααΆαβαα·αβααααΆααα αα·αβααααΌαβαααα’αΆα α¬βααΆαβααααβαααβαααβαααα + αααααα αααα»αααααΈα α»ααααααααα ααΎααααα»ααα·ααΆαα’αααΈα ααα»α ααΆααααααα αα ααααααα’ααααααααΆααΆαααααααααααααΌααααα’αΆααααααΈααααα α’ααααααααΎαααααΈαα½α α αΎαααααααααΌαααΆαααααΈααΆααα’αααα ααΆαααα»αα’αα‘α»ααα½ααα α§ααΆα αααααΌα ααΆαα½αααα α αΎααααααΆααααΈαα½ααα ααΌαααΎα pods ααΆαα½ααα αααα»α Kubernetes αα ααααααΎαααααΈαααααα αΆαα α αΎαααααααα½αααΆαα αααααΈαααααααααΈαααααα
ααΎααΎαααΆαααααα’αααΈ werf? ααΎααααααΌαα
- ααααΆα Gitα ααααΆαααΆααα’αα αααααααΆααΆ - ααααααααΆααΎαααααΌαααΆαα’αααΈαααΆααα’αααααααααΌαααΆαααΆααααααΆααα αααα»α Git αα αααα»αααΌαααΆα (α αΎαααΎαα·αα’ααα αΉααα ααΎαααααΌααα»αααΆαα αααα»α Git ααααααα½αα―α);
- ααααΆααα’ααααααα αα α»ααααααααααΌαααΆαααΌαα αααα ααΆαα Kubernetes;
- ReplicaSets α αΆαα (α’αααΈαααααΎαααΉαα ααααααΆα) α αΎαααΎαααααΆααααααααααααααΆαα ααααααΆα Helm α αΎαααααΎαααΎαααΌαααΆαα α»αααααααααα»ααα ααΈαααα
... α αΎαααααΎαααααΈαααΈαααα»αααα - αααααΈααΌαααΆααααααΎαααΉααα·ααα»αα ααΎαβαααα’αΆαβα’αααΈαβαααααβααα αααααΆααβααβααΎαβααβααΎαβααΌαααΆαβααΆαβαα»ααΆαβααααααΆ α αΎαβαα»αβααΆβα ααβααβαααα
ααΆαααααααΆαααααΆααααΆα
ααα ααααΈαααααΆααααα’αΆα αα»αα α·αααααΆαα
α ααα»α ααααΌαααααααα»αα ααααΆααααΆαααΆαααα α·ααααα»αααΆαααααα»αααΆαααΆαααααααΆαααΊααΆαααΆααα±ααααααΎαααΆαααααΆαααααααα ααΆααααααααααααΆααααααΆαααααΎαα αα α»ααααααααΆααααααΆααααααΆαααααααααΆαα α―αααΆα YAML ααΎαααααα·αααααΆα’αααΈααααΆα Kubernetes ααααααα»αααααΆααααΆααααΈαααααααααααααΎαααΆααα αααα»αα αααααα αααααΆααα Kubernetes αααααααα ααΎααΆααααααα
- α’ααααααααΆα;
- ααααααΆαααααΆαααα;
- αααααααααΆαααΎαααΆα αααΎα;
- ααααααααααΆαααααΆαααΆααα αα α»αααααα;
- ααΆαααααΆααααααΌααααααΆαααααΎα‘αΎαααΆααααααα webhook α αΌαααα;
- ααααααααααΆαααΆαααααα§ααααααααααΆαααααα (αα·ααααααα·ααΈαααααααα) α
ααΌα αααααα ααααααααΆαααααααα ααΆααααααααααααΆαααααΈααα α‘αΎα (ααααΈ) ααΎαβαα·αβααααΆααβααβααβαα·αβαααααβααΆααβααΎβααΆαβαααααβαα ααΆβαααααααα "ααααβααααΆαα" ααΆαα½αβααΆ (ααααα ) ααΎααααΈααααΎααΌα αααααΎαααΉαααααΌααααααααα ααααΈ ααΆαα½αααΉαααΆαααααααααααΆαα’αα»ααααα α»αααααα (ααΆαα’αα»ααααα α»αααααα) α αΎαααααααΎ ααααα ααΆαααα½αααααα
αα·ααΈααΆααααααααααααΌαααΆαααα α ααΆ ααΆααα½ααααα αΌαααααΆ 2 ααααΌα. ααΆααααΌαααΆαααααααΎα§ααΆα ααααα αααα»α Helm α
ααααΆααααα ααΆααα½ααααα αΌαααααΆ 3 ααααΌαααααα»αααααΆαααααααΆα
- ααΆααααααααα ααΆαα’αα»ααααα α»αααααα ΠΈ ααααΈααΎαααΎαα’αααΈαααααααΌαααΆααα»α;
- ααΆααααααααα ααααΈ ΠΈ ααααα ααΎαααΎαα’αααΈαααααααΌαααΆααααααα α¬ααααΆααααααΌαα
- ααααααα»αααααΌαααΆαα’αα»αααααα ααααα .
ααΎαααΆαααααααΆααααααα·ααΈ 1000+ ααΆαα½α Helm ααΌα ααααααΎααα·αααΆααααα ααΆαα½αααΆααααα αΌαααααΆ 2 ααααΌαα αααααΈααΆαααΆαααΆααααα ααΆααΆααααα αΆαα½αα ααα½ααααααΎαααΆααααααααΆαααΆαα½αααΉαααααααααααΎα ααααα½αα±αα Helm ααααΎαααΆαααΆααααααΆα
ααααΆαααΆαβααΆαβα ααβααααΆαβαα·α
αααααΆααααΈαααααααα CI ααααααΎααααααΎαααΆαααααααα
ααΆααααααααααααΈαααααΆαα Kubernetes αααααα’ααααΎααααΉαααα·ααΆααααααααΆαα ααΆαααααΌαααΆαααααΆααααΆαααααΎααααΆαα (α’αα»αααα) αα
α
ααααα - αααααααΎ Helm α¬ kubectl apply
. αααααΆαααα ααΆααα½ααααα
αΌα N-way αααααΆααα·αααααΆαα½α
α αΎαααΎαα‘αΎα ααα Kubernetes API ααααΎαααααααααααααα
αααααααααααα CI α αΎαα
ααααα’αααααααΎααααΆααααααααΆα
ααααααΆαααΆαααααααΆααααα αΆαααααα½α: αααααΆααααΈααΆααα’ααα αααααα·ααΈααααααααααα·αααΆααααααΆααααΎαααΆααααααααααααα. ααααα·αααΎ Kubernetes αααααΈα’αααΈαααααααΌαα’αα»ααααααΆαααααΆααααααΌα αα·αα’αα»ααααααΆ ααΎααα
αααα·αααΉαααΆααααααααΉααα
ααΆαααΆαααΆαααααα α§ααΆα ααα ααΆαα’αΆααααα αα·αα
αΆααααααΎαααααα‘αΎααα·ααα
αααα»ααααααααΆααα»αα’αΆα
ααα½αααΆααααααα ααα»αααααα·αααααα
αααα»ααααααααΆαααααααα α αΎαααΎαααΉαααα½αααΆαααααααααααααααΆααααΌαααΆααααααα·ααΈααααααα»αααααΎαααΆαα
ααΎααααΈααααΎα’αααΈαααααααααΆαααΆαααααΉαααααΌα αααααααΆαααααααααααΌαα±ααααΆααααααααΆαααααααα - αααααα·ααΈααΆαααΆααα·ααααααααΉαααα½αααΆαααααααΆαααααΆαααΆαααΈ Kubernetes API α αΎααααααΌαααΆαααααΆααααΆααα·ααΆαααααααα’αααΈααααΆαααΆααα·αααααααα»α ααΎαααΆααααααΎααααααΆααααααααααΎαα
αα αα
αααα»α Go -
α₯αα·ααΆαααααααααααα·ααΈααΆαααΆαααααα
ααααα·α werf ααααΌαααΆαααααααα
ααΆαααααααααααααααΎα
αααΆααααααααααααααΌαααΆαααΆαααα
ααΎ Deployments α¬ StatefulSetsα α
αααΆαααααααααααΆαα - fail-mode
- αααα’ααααααααΌα
ααΆααααααα
-
IgnoreAndContinueDeployProcess
- ααΎααα·αα’αΎααΎααΉααααα αΆααααΆαααΆααα αααααΆαααΆαααα α αΎαααααααΆαααΆααα±ααααααΎααααΆααα -
FailWholeDeployProcessImmediately
- ααα α»ααα αααα»ααααΆαααΆαα»αααααααααααααΎαααΆαααΆαααααααΆαα -
HopeUntilEndOfDeployProcess
- ααΎααααααΉαααΆαααΆαααΆααααααΉαααααΎαααΆααα α α»ααααα ααααααΆαααΆαααααααΆαα
α§ααΆα ααα ααΆααα½ααααα
αΌαααααΆααααααΆα αα·ααααααα
αααΆααααααααααα fail-mode
:
αα
ααααααααΎαααΆαααααααΆαααΆααΎαααααΌα ααΌαααααΆααα·αααααα (MongoDB) αααα ααααΆαα·αααΆαααα½α
ααΆαααα
α‘αΎααα - ααΆαααΆαααααααΆαααΉααααΆαααα ααα»ααααα’αααα’αΆα
αααα
αΆααααααΆαααααααΆα
αΆααααααΎα α αΎαααΆαααΆαααααααΆαααΉααα
αααααααααΉααααα
α
ααΆαα αααΆαααααααααΈαααααααααααααααΆαα kubedog αα αααα»α werfα
-
failures-allowed-per-replica
- α ααα½αααααΆαααααΆαααααααααΌαααΆαα’αα»ααααΆααααααΆααααΆαα ααααααΈαα½αα; -
show-logs-until
- ααααααααααααααααΆαα αΌαααααααααα werf αααα αΆααααααα ααα» (αα αααα»α stdout) ααΈαααααααΆαααΆααα ααααΆααα’ααα ααααΆαααΎαααΊPodIsReady
(ααΎααααΈβαα·αβα’αΎααΎβααΆαβαααβααΎαβαααα ααβααΆβαα·αβα ααβααΆαβαα βαααβαααβα ααΆα αααβα αΆααβααααΎαβα αΌαβααβααΆααβαα) ααα»ααααβαααααβααβααΆαβαα»ααααΆαβααααControllerIsReady
ΠΈEndOfDeploy
.
ααΎααΎαα ααααΆαα’αααΈαααααΈααΆαααΆαααααααΆα?
ααααααααΈααΎα ααα»α ααΈααααααΆααα·αααααΆαα½α α αΎα ααΎαα ααααΆαα
- ααΎααααΈααΎα αααααα ααα» - α αΎαααΆαααα’αααΈαααα αΆαααΆα αααα»ααααα α αΎααα·ααααα’αααΈαααΆααα’ααααΆααααααΆααα
- αα αααααααΆαααΈαααααααααα·αααΎααΆαααΆααααα½α "ααααααααααααΆαα" ααΆα αααΎαααΆααΈ ααΆααΆααΆαααααΆααααΆαααααααααΌααααααΈα’αααΈααααααα»αααΎαα‘αΎααα ααΈαααα
- ααΆα ααΆααα·ααααα‘αααααα·ααααααααααααααααα· αααα»αααααΈααΆαα’αααΈαα½ααα»αααααααααΈ (α αΎαααΌα ααααααΆααΆαααΆααααααΆααααΆαααααα»αααΆαααΉαααΈααααΆαααΆααα·αααααΆαααΆαααααααΆα)α ααΆαααΆααα ααααααΌαααααΆα’αΆααΌαα·αα αααααΆααααααΆαααααααΈαααα αα α¬α’αααΈαααΆααα’αααααα‘αααα αααΆααα»αααααααΆαα·αα
αααααα
αααααΆαααα½αααΎαααΆαααα»αα αα»ααα½α ααΎααααΈα’αα»ααααααΆααααΆααα·αααααΆαααααΆααα·αααααΆαα
ααααΆααααΆαααααααααααΆααααΆαα
ααα
αΆα (ααΆαααα ααααα»ααα αααααΆα) αααααααα CI αα·αα§αααααααααΎααααΆααααΊαααααααααΆααα αΎαα
αααα½αα±ααααΆαααααα·ααααΆαα
αααααΆααααα½αααΈ werf ααΎαααΆαααααΎαααΆαααα’αααα»αααΆααααααααΆααααα αΆαα½αα
ααα½ααααααααΆαααα·ααααα DevOps α αΎαααΉαααΈαααΆαααααα·αααΎαα ααααααααΌααΆααααΆαα αα
ααΆααααΆαααΆαααααα§αααααααααΎααααΆααααααααα»ααααααααΆαα ααΆααΉαααΆααααααΆααααα½ααααα»αααΆααααααα
ααΆαααααααααα’ααΆαα½αααααΆα
ααΈααα’αΌ αα·αααααΆα
ααΈααα’αΌααΈααΆααααααα (~α€α§ ααΆααΈ)α
αααααα αΆααααααΆαααΆαααα
PS
αααΆαααΆαααααααααααα’αααΈ Kubernetes αα ααΎαααααααααααΎαα
- Β«
ααΆαααααΎααΆαααααααΆααααααααααααααααα· αα·αααΆααααααααααααααΆααα αααα»α Kubernetes Β» (Dmitry Stolyarov; ααααααΈ 27 ααααααΆααααΆα 2019 αα ααΎ "ααΌααααα"); - Β«
ααΆααααααΈα αα·αααααααααααα Kubernetes Β» (Andrey Polovov; ααααααΈ 8 ααααααΆ ααααΆα 2019 αα ααΎ Saint HighLoad++); - Β«
ααΌαααααΆααα·αααααα αα·α Kubernetes Β» (Dmitry Stolyarov; ααααααΈ 8 αααα·α ααα·ααΆααααΆα 2018 αα ααΎ HighLoad ++); - Β«
ααΆααααα½ααα·αα·ααα αα·α Kubernetes Β» (Dmitry Stolyarov; 28 α§αααΆ 2018 αα RootConf); - Β«
CI/CD ααΆαα’αα»ααααααα’αααα»αααΆαα½α Kubernetes αα·α GitLab Β» (Dmitry Stolyarov; ααααααΈ 7 αααα·α ααα·ααΆααααΆα 2017 αα ααΎ HighLoad ++); - Β«
αααα·αααααααααααΎαααΆαα½α Kubernetes αααα»αααααααααΌα α Β» (Dmitry Stolyarov; ααααααΈ 6 αααα·αα»ααΆ ααααΆα 2017 αα RootConf).
ααααα: www.habr.com