ááŸááºáá»ááºá áá¬áá¬ááŒááº- Kubernetes á¡ááá¯ááºážá¡ááá¯ááºážááœááºá GitOps áá¯áá±á«áºáá±á¬ áá±ááºáá±á
á®ážááŒá±á¬ááºážááẠáá»áœááºá¯ááºááá¯á·ááá¯ááºááá¯ááºááœá±á·ááŒááºáá²á·áááá·áºá¡ááá¯ááºáž áááá¬áááºááŸá¬ážáá±á¬áá±áááºážá
á¬ážáá¬áá«áááºá
ááœááºáá²á·áá±á¬ááŸá
áºááœááº, (á¡ááŸááºá¡á¬ážááŒáá·áºá á€áááºááŸá¬ 2017 áá¯ááŸá
ẠááŒáá¯ááºáááœáẠááŒá
áºááœá¬ážáá²á·ááẠ- ááá·áºááŸááºážááŒá± áá¬áá¬ááŒááºáá«áááºá) Kubernetes ááœáẠá¡ááá®áá±ážááŸááºážáá»á¬áž á¡áá¯á¶ážááŒá¯ááẠáá»ááºážáááºááŸá¯á¡áá
áºáá
áºáᯠááŸááá«áááºá áááºážááᯠGitOps áá¯áá±á«áºáááºá áááºážááẠá¡áá¯á¶ážááŒá¯ááŸá¯áá¬ážááŸááºážáá»á¬ážááᯠGit repository á áá¯á¶ááŒá¯á¶áá±á¬áááºáááºážáá»ááºááœáẠááŒá±áá¬áá¶áááºáá°áá±á¬ á¡ááŒá±áá¶á¡áá°á¡áá¡áá±á«áº á¡ááŒá±áá¶áá¬ážáááºá
á€áá»ááºážáááºááŸá¯á á¡áááá¡á¬ážáá¬áá»ááºáá»á¬ážááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºáááºá:
- ááŒáá·áºáá»ááºáá°ááœá²ááŸáá·áº ááŒá±á¬ááºážáá²ááŒááºážááŸááºáááºáž. á¡á á¯á¡áá±ážáá áºáá¯áá¯á¶ážá á¡ááŒá±á¡áá±á¡á¬áž Git ááá¯ááŸá±á¬ááºááŸá¯ááœáẠááááºážáááºážáá¬ážááŒá®áž ááŒáá·áºáá»ááºááŸá¯áá»á¬ážááᯠááœááºááá·áºáá»á¬ážááŸáá áºááá·áºáᬠá¡ááºááááºáá¯ááºáá¬ážáááºá ááá¯á·á¡ááŒááºá á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá¡á¬ážáá¯á¶ážááᯠcommit history ááᯠá¡áá¯á¶ážááŒá¯á ááŒá±áá¬áá¶ááá¯ááºáááºá
- áááºážááŸá®ážáá±á¬ Git ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááŒááºááŸáá·áºááŒááºážáá»á¬áž. ááá¯ážááá¯ážááŸááºážááŸááºáž
git reset
ááŒáá·áºáá»ááºááŸá¯áá»á¬ážááœáẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠááŒááºáááºáááºááŸááºááẠááá·áºá¡á¬áž ááœáá·áºááŒá¯áááºá ááááºááŒááºáááºáá»á¬ážááẠá¡ááŒá²ááŸáááá¯ááºáááºá - á¡áááºááá·áºáááºáá±á¬ááºááááºážáá»á¯ááºááŸá¯. áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá Git á áá áºááœáẠá¡áá±ážááŒá®ážáá±á¬áá±áá¬áá»á¬ážá áœá¬áá«ááŸááá±á¬ááŒá±á¬áá·áº áá¯áá¹ááá®á¡áá»á¬ážá á¯ááẠáááºážááá¯áá¬ááœááºááẠá¡áá°ážá¡á¬áá¯á¶á áá¯ááºááŒáááºá ááá¯á·ááŒá±á¬áá·áº á€á¡áá¬á¡ááœááºááẠááŒáá·áºáá»ááºááŒááºážááá¯ááºáᬠáá¯ááºáááºážáá»á¬ážááŸáá·áºáááºáž áááºááá¯ááºáá«áááºá
- ááŒáá·áºáá»ááºááŸá¯á¡ááœáẠáá°áá«ááá»á¬áž. Git á áá áºá¡áá»á¬ážá á¯ááẠáá¬áááœá²á¡ááá¯áẠáá°áá«ááá»á¬ážááᯠáá°áá¡á¬ážááŒáá·áº áá¶á·ááá¯ážáá±ážáááºâá¥ááá¬á ááœá²áááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážáᬠáá¬á áá¬ááᯠá¡ááºááááºáá¯ááºááá¯ááºááŒá®áž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠá¡ááŒá¬ážá¡ááœá²á·áááºá០ááŒááºáááºáá¯á¶ážáááºááŒá®áž áááºáá¶ááá«áááºá áááºáá±á¬ááºááááºážáá»á¯ááºááŸá¯ááŸáá·áºá¡áá°á áá°áá®áá±á¬áá°áá«ááá»á¬ážááẠááŒáá·áºáá»ááºá¡ááºááááºáá»á¬ážááŸáá·áº áááºááá¯ááºáá«áááºá
áááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºáž GitOps áááºážáááºážá¡ááœáẠá¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážá áœá¬ááŸááááºá ááŒá®ážáá²á·áá±á¬ááŸá áºááœááºá áá»ááºážáááºááŸá¯ááŸá áºáá¯ááẠá¡áá°ážáá±áááºážá á¬ážáá¬áá²á·áááºá áá áºáá¯á ááœááºážá¡á¬ážá¡ááŒá±áá¶ááŒá áºááŒá®áž áá±á¬ááºáá áºáá¯á ááœá²á¡á¬ážá¡ááŒá±áá¶áá«áááºá áááºážááá¯á·ááᯠáááŒáá·áºáá®á áá¯á¶ááŸáẠKubernetes ááŒáá·áºáá»ááºááŸá¯áá¯á¶á á¶ááᯠáŠážá áœá¬ááŒáá·áºááŒáá«á áá¯á·á
ááŒáá·áºáá»ááºáá±ážáááºážáááºážáá»á¬áž
áááŒá¬áá±ážáá®ááŸá áºáá»á¬ážá¡ááœááºážá Kubernetes ááẠááŒáá·áºáá»ááºááŒááºážá¡ááœáẠáááºážáááºážá¡áá»áá¯ážáá»áá¯ážááŸáá·áº áááááá¬áá»á¬ážááᯠáááºáá±á¬ááºáá²á·áááº-
- áá°áááºáž Kubernetes/Kustomize ááá°áá¬áá»á¬ážááᯠá¡ááŒá±áá¶áá¬ážáááºá. á€áááºááŸá¬ Kubernetes ááœáẠá¡ááá®áá±ážááŸááºážáá»á¬ážááᯠá¡áá¯á¶ážáá»ááẠá¡ááœááºáá°áá¯á¶ážáááºážáááºážááŒá
áºáááºá áá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬ááẠá¡ááŒá±áᶠYAML ááá¯ááºáá»á¬ážááᯠáááºáá®ážááŒá®áž áááºážááá¯á·ááᯠá¡áá¯á¶ážáá»áááºá áá°áá®áá±á¬áá¯á¶á
á¶áá»á¬ážááᯠá¡áááºáááŒááºááŒááºáááºáá±ážáá¬ážááŒááºážááᯠáááºááŸá¬ážááẠKustomize ááᯠáá®ááœááºáá²á·ááẠ(áááºážááẠKubernetes ááá°áá¬áá»á¬ážááᯠáá±á¬áºáá»á°ážáá»á¬ážá¡ááŒá
áºááá¯á· ááŒá±á¬ááºážáá²áááº)á ááŸááºáá»ááºá áá¬áá¬ááŒááº: Kustomize ááᯠkubectl ááŒáá·áº áá±á«ááºážá
ááºáá¬ážáááºá
Kubernetes 1.14 áá¯ááºáá±ááŸá¯ . - áá²á·á
ááºááá¬ážáá»á¬áž. Helm charts áá»á¬ážááẠtemplate-based áá»ááºážáááºááŸá¯ááẠááá¯ááá¯ááŒá±á¬ááºážááœááºááŒááºááœáẠá
áááºááŒáá¯ááºááœá±ážáá»ááºááŸá¯áá»á¬ážááŒáá·áº á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠá¡áá¯á¶ážáá»áááºá¡ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº áááºážáááááºá¡á
á¯á¶á init containersá sidecars á
áááºááá¯á·ááᯠáááºáá®ážááá¯ááºá
á±áá«áááºá á€áááºážáááºážááẠááá°áá¬áá¯á¶á
ᶠYAML ááá¯ááºáá»á¬ážááᯠá¡ááŒá±áá¶áá¬ážáááºá Helm ááẠáááºážááá¯á·á¡á¬áž á¡áá»áá¯ážáá»áá¯ážáá±á¬ ááá·áºáááºáá»ááºáá»á¬ážááŒáá·áº ááŒáá·áºáá±ážááŒá®ážáá±á¬áẠáááºážááá¯á·á¡á¬áž á¡á
á¯á¡áá±ážááá¯á· ááŒáá·áºáá»ááºááŒá®áž á¡ááºááááºáá»á¬ážááŸáá·áº ááŒááºááŸáá·áºááŸá¯áá»á¬ážááᯠááœáá·áºááŒá¯ááá·áº á¡á
á¯á¡áá±ážáá
áºáá¯ááŒá
áºááá·áº Tiller ááá¯á· áá±ážááá¯á·áááºá á¡áá±ážááŒá®ážáááºááŸá¬ Helm ááẠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº ááá¯áá»ááºáá±á¬áááºááá¯ážáá»á¬ážááᯠááá°áá¬áá¯á¶á
á¶áá»á¬ážáá²ááá¯á· ááá·áºááœááºážááŒá®áž ááá¬ážááá¯ážáá»áá»ááºážáááºáááºážá¡ááá¯ááºáž áá¯ááºáá±á¬ááºááá·áºá¡ááá¯ááºáž áááºážááá¯á·ááᯠá¡áá¯á¶ážáá»áááºá (áááºážá¡á¬ážáá¯á¶ážáá¡áá¯ááºáá¯ááºáá¯á¶ááŸáá·áºáá»áœááºá¯ááºááá¯á·ááááºážááá¯áááºáááºááá¯á·á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá¡ááŒá±á¬ááºážááá¯ááá¯áááºááŸá¯áá«á
Helm ááá±á¬ááºážáá«áž - ááá·áºááŸááºážááŒá± áá¬áá¬ááŒááºá). á¡áá¯ááºáá»á¬ážá áœá¬ááᯠá¡áá»á¯á¶ážáááºáá±á¬ á¡áááºááá·áºáá¯áẠHelm ááá¬ážáá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááŸááá«áááºá - á¡á á¬ážááá¯ážáááááá¬áá»á¬áž. á¡á á¬ážááá¯ážáááááá¬áá»á¬ážá áœá¬ááŸááááºá áááºážááá¯á·á¡á¬ážáá¯á¶ážááœáẠáá°áá®áá±á¬á¡áá¬ááŸá¬ á¡áá»áá¯á·áá±á¬ ááá°áá¬ááá¯ááºáá»á¬ážááᯠKubernetes-áááºááá¯ááºáá±á¬ YAML ááá¯ááºáá»á¬ážá¡ááŒá áºááá¯á· ááŒá±á¬ááºážááŒá®ážáá±á¬áẠáááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒá áºáááºá
áá»áœááºá¯ááºááá¯á·áá¡áá¯ááºááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá±ážááŒá®ážáá±á¬áááááá¬áá»á¬ážá¡ááœáẠHelm ááá¬ážáá»á¬ážááᯠá¡áááºáááŒááºá¡áá¯á¶ážááŒá¯ááẠ(áááºážááá¯á·ááœáẠá¡áá¬áá»á¬ážá áœá¬á¡áááºááá·áºááŸááá¬ážááŒá®ážááŒá áºáá±á¬ááŒá±á¬áá·áºá ááá¯ááá¯ááœááºáá°á á±áááº) ááŸáá·áº áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºá¡ááºááºáá®áá±ážááŸááºážáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯áááºá¡ááœáẠ"ááá·áºá ááºáá±á¬" Kubernetes YAML ááá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
ááœá² & ááœááºáž
áá»áœááºá¯ááºá áááŒá¬áá±ážáá®á ááá±á¬á·ááºááá¯á·á
áºáá»á¬ážááœáẠáá»áœááºá¯ááºááẠáááááá¬ááᯠááááºáááºáá±ážáá²á·áááºá
NB GitOps á¡áá¯á¶ážááŒá¯ááŒááºážá á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážá¡á¬ážáá¯á¶ážááẠáááºážáááºážááŸá áºáá¯á áá¯á¶ážá¡ááœáẠá¡áá°áá°áááºááŒá áºáá«áááºá
áá»ááºážáááºááŸá¯á¡áá±á«áº á¡ááŒá±áá¶á ááœá²áááºá
ááœá²áá°áá»ááºážáááºááŸá¯ááẠá¡ááŒá±á¬ááºážá¡áá²á¡á¬ážáá¯á¶ážááᯠá¡á
á¯á¡áá±ážá¡ááœááºážá០áááºáá±á¬ááºá
á±ááá·áºá¡áá»ááºá¡áá±á«áº á¡ááŒá±áá¶áááºá áááºá
áẠGit ááŸáá·áº Docker Registry repositories áá»á¬ážááᯠáá¯á¶ááŸááºá
á
áºáá±ážááá·áº á¡á
á¯á¡áá±ážá¡ááœááºáž á¡á±á¬áºááá±áá¬áá
áºáᯠááŸááá«áááºá áááºážááá¯á·á¡ááœáẠááŒá±á¬ááºážáá²ááŸá¯áá
áºá
á¯á¶áá
áºáᬠááŒá
áºáá±á«áºáá«áá á¡á
á¯á¡áá±ážá á¡ááŒá±á¡áá±á¡á¬áž á¡ááœááºážááá¯ááºážá á¡ááºááááºáá¯ááºáááºááŒá
áºáááºá áááºááá·áº ááŒááºááááá¯ááºážááá·áºáá»áŸ á¡á
á¯á¡áá±áž á
á®áá¶ááá·áºááœá²ááá¯ááºááœáá·áºááᯠáááºáá±á¬ááºááœáá·áºáááŸááá±á¬ááŒá±á¬áá·áº á€áá¯ááºáááºážá
ááºááẠáá±áá¯áá»á¡á¬ážááŒáá·áº á¡ááœááºáá¯á¶ááŒá¯á¶áááºáᯠáá°ááá«áááºá
á¡ááŒá áºááœá±:
- áááºááá·áº ááŒááºááááá¯ááºážááá·áºááœááºá០á¡á á¯á¡áá±ážááá¯á· á¡ááŒá±á¬ááºážá¡áá²áá»á¬áž ááŒá¯áá¯ááºááẠá¡ááœáá·áºá¡áá±ážáá»á¬áž áááŸááá«á á¡ááºááááºá¡á¬ážáá¯á¶ážááᯠá¡ááœááºážá០áá¯ááºááœáŸááºáá«áááºá
- á¡áá»áá¯á·áá±á¬áááááá¬áá»á¬ážááẠHelm ááá¬ážááœááºážáá¶ááŸá¯áá»á¬ážááᯠáá áºááŒáá¯ááºáááºážáá¯ááºáá±á¬ááºááá¯ááºááŒá®áž áááºážááá¯á·ááᯠá¡á á¯á¡áá±ážááá¯á· áá»áááºáááºááá¯ááºá á±áá«áááºá
- áá¬ážááŸááºážá¡áá áºáá»á¬ážá¡ááœáẠDocker Registry ááᯠá áááºááºáááºááá¯ááºáá«áááºá áá¯á¶á¡áá áºáá áºáá¯áááá¯ááºáá«áá Git ááá¯ááŸá±á¬ááºááŸá¯ááŸáá·áº á¡áá¯á¶ážáá»ááŸá¯ááᯠáá¬ážááŸááºážá¡áá áºááá¯á· á¡ááºááááºáá¯ááºáá¬ážáááºá
- Pull tools áá»á¬ážááᯠááá°áá®áá±á¬ Git repositories ááŸáá·áº ááœáá·áºááŒá¯áá»ááºáá»á¬ážááŒáá·áº ááá°áá®áá±á¬ namespace áá»á¬ážááœáẠááŒáá·áºáá±ááá¯ááºáá«áááºá áá®á¡ááœááºááŒá±á¬áá·áº Multitenant áá±á¬áºáááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá á¡ááœá²á· A ááẠnamespace A ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®ážá á¡ááœá²á· B ááẠnamespace B ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá¡ááœá²á·ááẠglobal space ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
- á ááºážáááºážá¡áá áááááá¬áá»á¬ážááẠá¡ááœááºáá±á«á·áá«ážáááºá
- á¡á±á¬áºááá±áá¬áá²á·ááá¯á·áá±á¬áááááá¬áá»á¬ážááŸáá·áºáá±á«ááºážá
ááº
Bitnami á¡áá¯á¶ááááºáá»áŸáá¯á·ááŸááºáá»ááºáá»á¬áž áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááᯠGit repository ááœáẠáá¯ááºááŸááºááŒá®áž á¡á á¯á¡áá±ážá¡ááœááºáž ááŒááºáááºááá°ááá¯ááºáááºá - á¡á á¯á¡áá±ážá¡ááœááºáž ááŒáá·áºáá»ááºááŸá¯áá»á¬áž ááŒá áºáá±á«áºáá¬áá±á¬ááŒá±á¬áá·áº CD ááá¯ááºááá¯ááºážáá»á¬ážááŸáá·áº áá»áááºáááºááŸá¯ áááŸááá«á
ÐОМÑÑÑ:
- Helm ááá¬ážáá»á¬ážá០ááŒáá·áºáá»ááºááŸá¯áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²áááºááŸá¬ áá¯á¶ááŸááºá¡áá¬áá»á¬ážááẠááá¯ááá¯áááºáá²áá«áááºá áááºážááá¯á·ááᯠááááŠážá áœá¬ áá¶ááááºáááºáá¬ážáá±á¬ áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážáᯠááá¯áá¬á ááá¯á·áá±á¬áẠá¡ááœááºážááá¯ááºážá¡á±á¬áºááá±áá¬á០á á¬ááŸááºáá¬ážáᬠáááºážááá¯á·ááᯠááœá²áá¯ááºááá·áºáááááá¬ááœáẠáááŸáááá¯ááºááá·áºá¡ááœááºááŒá±á¬áá·áº ááŒá áºáááºá ááá¯á·áá±á¬áẠá¡áá¯á¶ážááŒá¯áá¬ážááŒá®ážáá±á¬ áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááŸá áááºááá¯ážáá»á¬ážááŒáá·áº Helm ááœáẠáá¯ááºáá±ááŸá¯ááᯠáááºáá¯ááºáá±á¬ááºááá¯ááºáááºá á¡ááœááºáá¯á¶ážáááºážáááºážááŸá¬ ááŒáá·áºáá»ááºááŸá¯á¡ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº Helm áááºááá¯ážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá»áŸáá¯á·ááŸááºáááºáá®ážáááºá áááºážááᯠáá¯ááºááŸááºááŒá®áž Git ááá¯á· á¡ááºááŸá¶áááºááŒá áºáááºá
- ááœá²áááºážááᯠáá»ááºážáááºáá²á·á¡áá«á áááááá¬ááœá±ááᯠááœá²áá¯ááºááá¯á· áá»ááºááŸá±á¬ááºáá¶ááááºá áááºážááẠá¡á á¯á¡áá±ážáá áºáá¯á¡ááœááºáž ááŒáá·áºáá»ááºááŸá¯áá¯ááºáááºážá ááºááᯠá áááºááŒáá¯ááºááŒááºáááºááá¯ááºááŸá¯ááᯠááá·áºáááºáá¬ážáááºá á¥ááá¬á¡á¬ážááŒáá·áºá Kustomize ááẠáá±á¬ááºáá¯á¶áž templates áá»á¬ážááᯠGit ááá¯á·ááááºááŸááºáá® áááºážááᯠrun ááááºáá°áá±á¬á¡áá»ááºááŒá±á¬áá·áº ááŸá¯ááºááœá±ážáá«áááºá áááºááẠáá®ážááŒá¬ážáááááá¬áá»á¬ážááᯠááá¯á¶ážááá¯ááºáᯠáá«áááŒá±á¬áá±á¬áºáááºáž áááºážááá¯á·ááẠáááºáá¡áá¯á¶ážáá»ááŸá¯áá¯ááºáááºážá ááºááœáẠáá±á«ááºážá ááºážááẠááá¯ááááºáá²áááºá
Push based áá±ážáá«áááºá
ááœááºážá¡á¬ážáá±ážáá»ááºážáááºááŸá¯ááœááºá ááŒááºáá
áá
Ạ(á¡áááá¡á¬ážááŒáá·áº CD ááá¯ááºááá¯ááºážáá»á¬áž) ááẠGit ááá¯ááŸá±á¬ááºááŸá¯ááá¯á· áááááááºááŒá¯ááŒá®ážáá±á¬áẠááá¯á·ááá¯áẠáááẠCI ááá¯ááºááá¯ááºáž á¡á±á¬ááºááŒááºáá«á á¡á
á¯á¡áá±ážááá¯á· ááŒáá·áºáá»ááºáá»áá¬ážááŸá¯áá»á¬ážááᯠá
áááºáááºá á€áá»ááºážáááºááŸá¯ááœááºá á
áá
áºááẠá¡á
á¯á¡áá±ážááá¯á· áááºáá±á¬ááºááá¯ááºáááºá
ÐлÑÑÑ:
- áá¯á¶ááŒá¯á¶áá±ážááᯠGit repository á០áá¯á¶ážááŒááºááŒá®áž ááá¯ááºááá¯ááºážáááºáá±á¬ááºáááºá
- Helm ááá¬ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠááá¯ááá¯ááœááºáá°ááŒá®áž Helm ááááºá¡ááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
- áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááᯠááá¯ááºááá¯ááºážáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž Git ááœáẠá á¬ááŸááºááááºážáááºážáá¬ážááá¯ááºáá±á¬ááŒá±á¬áá·áº áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááẠááá¯ááá¯ááœááºáá°áá«áááºá
- áááºááá·áºá¡áá»áá¯ážá¡á á¬ážááá¯áááᯠáá¯á¶ážááá¯ááºáá±á¬ááŒá±á¬áá·áº áá®ážááŒá¬ážáááááá¬áá áºáá¯ááŸáá·áº áá»áááºáááºááŸá¯áááŸááá«á
- ááá¯ááºááá¯ááºážáááºáá±á¬ááºááŒááºážááŒáá·áº ááœááºááááºáá¬áá¬ážááŸááºážááœááºážáá¶ááŸá¯áá»á¬ážááᯠá áááºááá¯ááºáááºá
ÐОМÑÑÑ:
- á¡á á¯á¡áá±ážáááºáá±á¬ááºááœáá·áºáá±áá¬ááẠáááºáá±á¬ááºááŸá¯á áá áºá¡ááœááºážááŒá áºáááºá
- ááœá²áá°ááá·áº áá¯ááºáááºážá ááºááŒáá·áº á¡áá¯á¶ážááŒá¯ááá·áº ááœááºááááºáá¬áá»á¬ážááᯠá¡ááºááááºáá¯ááºááŒááºážááẠááá¯ááá¯ááœááºáá°áá«áááºá
- áá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáá±á¬ ááá¯ááºááá¯ááºážáá»á¬ážááẠGitlab Runners á¡ááœáẠáá°áá áá±ážáá¬ážáá¬ážáá±á¬ááŒá±á¬áá·áº CD á áá áºá¡áá±á«áº á¡ááœááºá¡áááºáž ááŸá®ááá¯áááŒá®ážá ááá¯á·áá±á¬áẠá¡ááœá²á·ááẠAzure DevOps ááá¯á·ááá¯áẠJenkins ááá¯á· ááŒá±á¬ááºážááœáŸá±á·ááẠáá¯á¶ážááŒááºááá¯ááºááŒá®áž áááºáá±á¬ááºááá·áº ááá¯ááºááá¯ááºážá¡áá»á¬ážá¡ááŒá¬ážááᯠááœáŸá±á·ááŒá±á¬ááºážááááºááŒá áºáá«áááºá
ááááºáá»á¬áž- ááœááºážáá« ááá¯á·ááá¯áẠááœá²ááá¬ážá
áá¯á¶ááŸááºá¡ááá¯ááºážáá«áá²á áá»ááºážáááºááŸá¯áá áºáá¯á á®ááá¯ááºážááŸá¬ áá°á·áá²á· á¡á¬ážáá¬áá»áẠá¡á¬ážáááºážáá»ááºááœá± ááŸááá«áááºá á¡áá»áá¯á·áá±á¬á¡áá¯ááºáá»á¬ážááẠáá áºáá¯ááŸáá·áºáá áºáᯠááŒá®ážááŒá±á¬ááºááẠááá¯ááá¯ááœááºáá°ááŒá®áž á¡ááŒá¬ážáá áºáá¯ááŸáá·áºáá áºáᯠááá¯ááá¯áááºáá²áááºá á¡á ááá¯ááºážááœáẠáá»áœááºá¯ááºááẠááŒáá·áºáá»ááºááŸá¯áá»á¬ážááᯠááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºáá±áá±á¬áºáááºáž Weave Flux ááŸáá·áºáááºáááºááá·áº áá±á¬ááºážáá«ážá¡áá»áá¯á·ááᯠááœá±á·ááŒá®ážáá±á¬áẠááá±á¬áá»ááºá¡á¬ážáá¯á¶ážá¡ááœáẠGitOps áá¯ááºáááºážá ááºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáá¯á¶ážááŒááºáá²á·áááºá á¡ááŒá±áᶠáááºážáááááºáá»á¬ážá¡ááœáẠáááºážááẠááœááºáá°áá±á¬áºáááºážá ááá¯á·áá±á¬ááºááœáẠHelm ááá¬ážáá»á¬ážááŒáá·áº á¡áááºá¡áá²áá»á¬ážááŸáá·áº á áááºáá²á·áááºá ááá¯á¡áá»áááºááœááºá Weave Flux ááẠHelm Chart á¡á±á¬áºááá±áá¬á á¡ááŒá±áá¶áá¬ážááŸááºážááá¯áᬠáááºážááŸááºážáá²á·áá±á¬áºáááºáž ááá¯á¡áá« á¡áá»áá¯á·áá±á¬á¡áá¯ááºáá»á¬ážááẠáá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááᯠááá¯ááºááá¯ááºáááºáá®ážááŒá®áž á¡áá¯á¶ážáá»ááẠááá¯á¡ááºááŒááºážááŒá±á¬áá·áºááẠááá¯ááá¯áááºáá²áá¬áá«áááºá ááœá²áá°áá»ááºážáááºááŸá¯ááẠá¡á á¯á¡ááœá²á·áá¡áá±á¬ááºá¡áá¬ážáá»á¬ážááᯠá¡á á¯á¡áá±ážááŒááºáááá¯á·áááºáá±á¬ááºáááááá¯ááºáá±á¬ááŒá±á¬áá·áº ááá¯ááá¯áá¯á¶ááŒá¯á¶áá±á¬ááŒá±á¬áá·áºá áááºážááẠá¡ááá¯á¡á¬ážáá¯ááºááá»áá¯ážáááºáá±á¬ááŒá±á¬áá·áº ááá¯ááá¯áá¯á¶ááŒá¯á¶áááºáᯠá á±á¬áááááºááá¯ááºáááºá
áá áºáá»áá¯á·á ááœá±ážááŒá®ážáá²á·á¡áá« ááááºááŸááºáá¬ážáá²á· áááá¯á¶ážáá»á¯ááºááᯠáá±á¬ááºááœá¬ážáááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒáá·áºáá¯á¶ážáá¬ááœááºááŸá¯ááá¯á¡ááºááá·áº á¡á áááºá¡ááá¯ááºážáá»á¬ážá¡ááŒá±á¬ááºáž ááŒá±á¬ááá¯áá«áá á€á á¬áááºážááœáẠáá»áŸáá¯á·ááŸááºááá¯ááŸá±á¬ááºááŸá¯á CI/CD á áá áºáá»á¬ážááŸáá·áº Git ááá¯ááŸá±á¬ááºááŸá¯áá»á¬áž áá«áááºáááºááŒá áºáááºá áááºážááá¯á·á¡ááœááºážááŸá á¡áá»ááºá¡áááºáá»á¬ážááẠá¡ááœááºááááá¯ááºááœááºááŒá®áž á¡ááŒáá·áºáá¯á¶ážáá¬ááœááºááŸá¯ ááá¯á¡ááºáá«áááºá ááá¯á·á¡ááŒááºá áá áºá á¯á¶áá áºáá±á¬ááºááẠáááºá Git repository áá²ááá¯á· áááºááœá¬ážááŒá®áž ááá¯áá±áá¬ááœáẠáá¯ááºááᯠááœááºážááá¯á·ááá¯ááºáá»áŸáẠáááºážááá¯á·ááẠáááºážááá¯á·á¡ááá¯ááŸááá±á¬ á¡áá¬ááᯠ(ááœá²áá¯ááºáááºááŒá áºá á±á ááœááºážáááºááŒá áºá á±) ááŸáá·áº á¡á á¯á¡ááœá²á·á á áá áºáá»á¬ážááᯠá ááá·áºáááºááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº áá¬ááœááºááẠááá¯á¡ááºáá±á¬ á¡áá±ážááŒá®ážáá¯á¶áž á¡á áááºá¡ááá¯ááºážáá»á¬ážááŸá¬ á¡á á¯ááá¯áẠá¡áá±á¬ááºá¡áá¬ážáá»á¬áž ááá¯ááºáá² Git repository ááŸáá·áº CI/CD á áá áºáá»á¬áž ááŒá áºáááºá ááá·áºááœáẠá€á áá áºá¡áá»áá¯ážá¡á á¬ážáá»á¬ážá¡ááœáẠáá±á¬ááºážááœááºá áœá¬ááœá²á·á ááºážáá¬ážáá±á¬ áá°áá«ááá»á¬ážááŸáá·áº áá¯á¶ááŒá¯á¶áá±ážááááºážáá»á¯ááºááŸá¯áá»á¬ážááŸáááŒá®ážá á¡á á¯á¡ááœá²á·á¡áá±á¬ááºá¡áá¬ážáá»á¬ážááᯠáá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážá¡ááŒá Ạááá¯ááºááá¯ááºážáá»á¬ážá¡ááœááºážáᬠáá¯ááºáá°áá«áá ááœá²áá°áá»ááºážáááºááŸá¯á áááºáá±á¬ááºážáá¯á¶ááŒá¯á¶áá±ážááẠáá°ááááºáá¬ážááá±á¬áẠáááºááá¯ážááŸááááºááá¯ááºáá«á
ááá¯á·ááŒá±á¬áá·áº ááœá²áá°áá»ááºážáááºááŸá¯ááẠá¡áá¯ááºááá¬ážááá¯á ááŒááºážáááºááŒá®áž áá¯á¶ááŒá¯á¶áá±ážá¡áá»áá¯ážá¡ááŒááºááᯠááá±ážáá«áá ááœááºážá¡á¬ážáá±ážáá»ááºážáááºááŸá¯ááá¯áᬠá¡áá¯á¶ážááŒá¯ááŒááºážááẠáá¯áá¹áááááºáááºááá¯ááºáá±á¬á ááá¯á·áá±á¬áº ááœááºážá¡á¬ážáá±ážáá»ááºážáááºááŸá¯ááœáẠáááºááẠCD á áá áºááŸáá·áº ááœááºáá²á áœá¬ áááºá ááºáá±ááŒá®ážá á¡áá¬áááºááœáẠááœáŸá±á·ááŒá±á¬ááºážááœá¬ážáá¬ááŸá¯áá»á¬ážááᯠááá¯ááá¯ááœááºáá°áá¬á á±ááẠáááºážááᯠááá¯ááºááŒááºážááẠááá¯áá±á¬ááºážáááºáᯠáá áºá á¯á¶áá áºáŠážá á á±á¬áááááºááá¯ááºáááºá
áá»áœááºá¯ááºáá¡ááŒááºá¡á (á¡ááŒá²áááºážá¡ááá¯ááºáž) áááºááẠáá®ážááŒá¬ážááá á¹á áááºáá áºáá¯á¡ááœáẠá¡ááá·áºáá±á¬áºáá¯á¶ážá¡áá¬ááᯠáá¯á¶ážááá·áºááẠááá¯á·ááá¯áẠáá±á«ááºážá ááºááá·áºáááºá ááá¯ááºááá¯ááºááá¯ááºáá»á áá»áœááºá¯ááºááẠáá»ááºážáááºááŸá¯ááŸá áºáá¯áá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯áááº- áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºáááºáá±á¬ááºááŸá¯áá»á¬ážá¡áá»á¬ážá á¯áá«áááºáá±á¬ ááœá²áááºá¡á¬ážá¡ááŒá±áá¶ááá·áº ááŒáá·áºáá»ááºááŸá¯á¡ááœáẠWeave Flux ááŸáá·áº Helm ááŸáá·áº plugins áá»á¬ážááŒáá·áº ááœááºážá¡á¬ážáá±ážááá·áºáá»ááºážáááºááŸá¯ááŒáá·áº Helm ááá¬ážáá»á¬ážááᯠá¡á á¯á¡áá±ážááœáẠá¡ááœááºááá°á¡áá¯á¶ážáá»ááá¯ááºááŒá®áž áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááᯠáá»á±á¬ááœá±á·á áœá¬áááºáá®ážááá¯ááºá á±áá«áááºá ááá á¹á áááºááá¯ááºážá¡ááœáẠááá·áºáá»á±á¬áºáá±á¬ á¡ááŒá±áá áºáá¯áá»áŸ ááŸááááºááá¯ááºáᯠáá»áœááºá¯ááºáááºáááºá á¡ááŒá±á¬ááºážááŸá¬á áááºážááá¯á·ááẠáááá»áá±á¬ á¡áá¯á¶ážáá»ááŸá¯á¡áá±á«áº áá°áááºá á¡ááŒá²áááºáž ááœá²ááŒá¬ážááŸá¯áá»á¬áž ááŸááá±áá±á¬ááŒá±á¬áá·áº ááŒá áºáááºá ááá¯ááá¯á·ááá¯ááá»áŸáẠáá»áœááºá¯ááºááẠGitOps ááᯠá¡áá°ážá¡ááŒá¶ááŒá¯ááá¯áá«ááẠ- áááºážááẠááááá¯ááá¯ááœááºáá°á á±ááŒá®áž áá¯á¶ááŒá¯á¶áá±ážááᯠááá¯ážáááºá á±áááºá
á€á¡ááŒá±á¬ááºážá¡áá¬ááŸáá·áºá ááºáá»ááºážááá·áº áá»áœááºá¯ááºáá¡ááœá±á·á¡ááŒá¯á¶ááẠááá·áºá¡á¬áž ááŒáá·áºáá»ááºááŸá¯á¡áá»áá¯ážá¡á á¬ážá¡ááœáẠáááºááá·áºáááºážáááºážááᯠááá¯ááá¯ááá·áºáá»á±á¬áºááŒá±á¬ááºáž áá¯á¶ážááŒááºááá¯ááºá á±ááẠáá°áá®áá±ážáááá·áºáááºáᯠáá»áŸá±á¬áºááá·áºááŒá®áž ááá·áºáááºááŒááºáá»ááºááᯠááŒá¬ážáááááá·áºá¡ááœáẠáááºážááŒá±á¬ááºáááá«áááºá
áá¬áá¬ááŒááºáá°áá¶á០PS ááŸááºáá»ááº
ááœá²áá°áá±á¬áºáááºá á¡á¬ážáááºážáá»ááºááŸá¬ Git ááœáẠááŒááºááá¯áá¬ážáá±á¬ ááá¯ááºáá±á¬áºááŸá¯áá»á¬ážááᯠááá·áºááœááºážááẠáááºáá²ááŒá±á¬ááºážá ááá¯á·áá±á¬áº ááœá²áá°áá±á¬áºáááºááŸá CD ááá¯ááºááá¯ááºážááẠáá¯ááºáá°ááŒááºážá០áá®ážááŒá¬ážá á®áá±ááá¯ááºááŒá®áž á¡áááá¡á¬ážááŒáá·áº á¡áá»áá¯ážá¡á á¬áž ááá¯ááºááá¯ááºážááŒá áºáá¬ááŒááºáž á¡á¬ážáááºážáá»ááºáááŸááá±á á ááºáááºáááŒáẠáá»áŸá±á¬ááºáá¬ážáá«á. ááá¯á·ááŒá±á¬áá·áºá ááŒáá·áºáá»ááºááŸá¯á¡á¬ážáá¯á¶ážá០áááºážááá¯á·á á¡ááá·áºá¡áááºážááᯠá á¯áá±á¬ááºážáááºááŸáá·áº CD á áá áºá¡á¬áž á¡ááá¯ážá¡áá¬ážááŒáá·áº ááŸááºáááºáž/á¡ááŒá±á¡áá±ááá¯á· áá áºáááºážáá áºáá¯á¶ áááºáá±á¬ááºááœáá·áºáá±ážááẠááá¯áááẠá¡á¬ážáá¯ááºááŸá¯ ááá¯á¡ááºáááºááŒá áºáááºá
á€ááá±á¬á¡áá ááœááºážá¡á¬ážáá±ážááá·áºáá¯á¶á á¶ááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž ááá¯ááºááá¯ááºážááááºáááºážááᯠáá¯ááºáá°ááá·áºáááºáááºážááŸáá·áº áá®áá»áŸáá±á¬ááŒá±á¬áá·áº ááŒáá·áºáá»áááŸá¯á á¡á¬ááá¶áá»ááºá¡áá»áá¯á·ááᯠáá»áœááºá¯ááºááá¯á·á¡á¬áž áá±ážáá±á¬ááºááá¯ááºá á±áá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠáá±á¬áºáááºááŸá áºáá»áá¯ážáá¯á¶ážááᯠá ááºážáááºááŒá®áž áá±á¬ááºážáá«ážáá±ážáá¬ážáá°áá²á·ááá¯á· áá°áá®áá±á¬ áááá¯á¶ážáá»á¯ááºáá»ááºáá»á¬áž áááŸááá²á·áá«áááºá
- ááœá²áá¯ááºáá¯á¶á
á¶ááẠá¡á
á¯á¡áá±ážá¡áá»á¬ážá¡ááŒá¬ážááœáẠá
áá
áºá¡á
áááºá¡ááá¯ááºážáá»á¬ážá ááœááºážáá¶ááŸá¯áá»á¬ážááᯠá
á¯á
ááºážááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠááá·áºáá»á±á¬áºááẠ(ááŒáá·áºááŸá¯áá«á
addon-operator á¡ááŒá±á¬ááºáž áá±á¬ááºážáá«áž ). - GitLab CI ááá¯á¡ááŒá±áá¶áá¬ážáá±á¬ push model ááẠHelm charts ááá¯á¡áá¯á¶ážááŒá¯á applications áá»á¬ážáá¯ááºáááºá¡ááœááºáá±á¬ááºážá
áœá¬ááá·áºáá»á±á¬áºáááºá áá
áºáá»áááºáááºážááŸá¬áááºá ááá¯ááºááá¯ááºážáá»á¬ážá¡ááœááºáž ááŒáá·áºáá»ááºáá»áá¬ážááŸá¯áá»á¬ážááᯠáááááá¬ááᯠá¡áá¯á¶ážááŒá¯á á
á±á¬áá·áºááŒáá·áºáá±áá«áááºá
werf . á áá¬ážáá ááºá áá»áœááºá¯ááºááá¯á·áá€ááá±á¬áá»ááºáá¡ááŒá±á¡áá±ááœáẠKubeCon Europe'19 ááœáẠáá»áœááºá¯ááºááá¯á·ááááºáááºáá»ááºááœáẠDevOps á¡ááºáá»ááºáá®áá¬áá»á¬ážá á¡áááááŒá¿áá¬áá»á¬ážááᯠááœá±ážááœá±ážáá±á¬á¡áá«ááœáẠá ááºáááºáááŒáẠ"GitOps" ááᯠááŒá¬ážááááºá
áá¬áá¬ááŒááºáá°áá¶á០PPS
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááœááºáááºážáááºáá«
- «
Kubernetes á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážááŸáá·áº ááŸáá·áºááœááºáá»á¬áž- á¡á á¯á¡áá±ážáá áºáá¯á¡ááœááºáž áá¯ááºáá±á¬ááºáá±ááá·áº á¡áááºážá¡ááŒá áºáá»á¬ážááᯠHelm 2 á á®áá¶ááá·áºááœá²ááŸá¯ááá¯á· ááœáŸá²ááŒá±á¬ááºážááŒááºážá "; - «
Kubernetes á¡áááºážá¡ááŒá áºáá»á¬ážááᯠááŒá±áá¬áá¶ááẠá á¬ááŒáá·áºááá¯ááºáá áºáᯠkubedog ááᯠááááºáááºáá±ážááŒááºážá "; - «
Kubernetes ááᯠááá¯ážáá»á²á·ááŒááºážááŸáá·áº ááŒáá·áºá áœááºááŒááºáž (ááŒááºáááºáá¯á¶ážáááºááŒááºážááŸáá·áº áá®áá®ááᯠá¡á á®áááºáá¶á á¬) "; - «
GitLab CI ááœáẠá áááºááŒáá¯ááºá¡áá¯ááºá¡ááœá¬ážá¡áá¬áá»á¬ážáááºáá®ážááẠá¡ááŒá¶ááŒá¯áá»ááºáá»á¬áž "á
á
á¬áááºážááœááºážá¡áá¯á¶ážááŒá¯áá°áá»á¬ážáᬠá
á
áºáááºážááœáẠáá«áááºááá¯ááºáá«áááºá
ááẠGitOps áá¯á¶ážáá±áá«ááá¬ážá
-
áá¯ááºáá²á·á áá»ááºážáááºáá«á
-
áá¯ááºáááºá ááœááºážáá«á
-
áá¯ááºáááºá ááœá² + ááœááºáž
-
áá¯ááºáááºá áááŒá¬ážá¡áá¬áá áºáá¯
-
á¡áááºáá°áá»áŸá
á¡áá¯á¶ážááŒá¯áá° 30 áŠáž áá²áá±ážáá²á·áááºá á¡áá¯á¶ážááŒá¯áá° 10 ááŸá±á¬ááºáá±áá²á·áá«áááºá
source: www.habr.com