áá»áœááºá¯ááºááá¯á· (áá¬áá áá»áœááºá¯ááºááá¯á·áá¬áá) á¡áá»áááºá¡ááŒá¬ááŒá®áž á
á±á¬áá·áºáá»áŸá±á¬áºáá±áá²á·áá±á¬ á¡áá¬áá»á¬áž ááŒá
áºáá»ááºáá²á·ááẠá
á¡áááºážááá¯áááºááá¯áááºáá±á¬á· áá»áœááºáá±á¬áºááá¯á· áááºáá±ážááá¯ááºáá«ááẠWERF_THREE_WAY_MERGE=enabled
- áá»áœááºá¯ááºááá¯á·ááẠááŒáá·áºáá»ááºááŸá¯ááᯠáááŸááááºâ kubectl apply
"ááŸáááŒá®ážáá¬áž Helm 2 áááºáááºááŸá¯áá»á¬ážááŸáá·áº á¡áááºážáááºááá¯á ááœá²áááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
áá«áá±ááá·áº áá®á¡áá¯áá®áá²á·á
ááŒáá¡á±á¬ááº- 3-way-merge patches á¡ááá¡áá»á áá¬áá²á áá°ááœá±á á¡á²áá«ááœá±ááᯠáá¯ááºáá±ážááá¯á· áááºááá¯áá»ááºážáááºáá¬ááá²á Kubernetes-based infrastructure áá²á· CI/CD áá¯ááºáááºážá
ááºááœá±ááŸá¬ áá¬ááŒá±á¬áá·áº á¡áá±ážááŒá®ážáá¬áá²á ááá¯á·áá±á¬ááºá werf ááœáẠ3-way-merge ááẠá¡áááºáááºážá áááºááá·áºáá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž áááºážááᯠá
á®áá¶ááá·áºááœá²ááááºááᯠááŒáá·áºááŒáá«á
áá¯á·á
3-way-merge patch ááá¯áá¬áá¬áá²á
ááá¯á·ááŒá±á¬áá·áºá YAML ááœáẠáá±á¬áºááŒáá¬ážááá·áº á¡áááºážá¡ááŒá áºáá»á¬ážááᯠKubernetes ááœáẠáá±á¬áºááŒááá·áº áá¯ááºáááºážáá¬áááºááŒáá·áº á áááºááŒáá«á áá¯á·á
á¡áááºážá¡ááŒá áºáá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáááºá¡ááœáẠKubernetes API ááẠá¡á±á¬ááºáá«á¡ááŒá±áá¶áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá±ážáá±á¬ááºáááº- áááºáá®ážááŒááºážá áá¬áá±ážááŒááºážá á¡á á¬ážááá¯ážááŒááºážááŸáá·áº áá»ááºááŒááºážá áááºážááá¯á·áá¡áá°á¡áá®ááŒáá·áº á¡á á¯á¡ááœá²á·ááá¯á· á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áááºááŒá±á áœá¬ á ááºáááºáááŒáẠááŒáá·áºáá»ááºáááºáá±á¬ááºááẠááá¯á¡ááºáááºáᯠáá°ááá«áááºá áááºááá¯áá²?
kubectl áááŸááááŒá áºááá¯á¡ááºáá±á¬á¡áááá·áºáá»á¬áž
Kubernetes ááŸá á¡áá¬ááá¹áá¯áá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááẠááááá¯á¶ážáááºážáááºážááŸá¬ á€á¡áá¬ááá¹áá¯áá»á¬ážááᯠáááºáá®ážáááºá ááŒááºáááºáááºááŸáá·áº áá»ááºááẠkubectl áááŸááááŒá áºááá¯á¡ááºáá±á¬ á¡áááá·áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááŒá áºáááºá ááá¯ážááá¯ážááŸááºážááŸááºážááŒá±á¬ááááº-
- á¡áááºážá¡ááœá²á·
kubectl run
Deployment ááá¯á·ááá¯áẠJob ááᯠáááºáá¯ááºáá±á¬ááºááá¯ááºáááº-kubectl run --generator=deployment/apps.v1 DEPLOYMENT_NAME --image=IMAGE
- á¡áááºážá¡ááœá²á·
kubectl scale
- áá¯á¶áá°á¡áá±á¡ááœááºááᯠááŒá±á¬ááºážáá²áá«kubectl scale --replicas=3 deployment/mysql
- á áááºááá¯á·ááá¯
á€áááºážáááºážááẠááááá áºáá»ááºááœáẠá¡áááºááŒá±áá¯á¶ááááºá ááá¯á·áá±á¬áºáááºáž ááŒá¿áá¬áá»á¬áž ááŸááá±ááẠá
- áááºáááºá á¡ááá¯á¡áá»á±á¬ááº.
- áááºááᯠconfiguration ááá¯áááºááẠGit ááŸá¬áá¬ážá á¡á á¯á¡áá±ážááœáẠááŒá áºáá»ááºáá±áá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠáááºááá¯á·áá¯á¶ážáááºááááºáááºážá
- áááºááá¯áá±ážáááá² áá»áá¯ážááœá¬ážááá¯ááºááŒááºáž ááŒááºáááºá áááºáá»áááºááœáẠááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá»á¬áž
- ...
á€áááºážáááºážááẠáá¯áẠ(IaC; ááá¯á·ááá¯ááºáááº) á¡ááŒá
Ạá¡ááá®áá±ážááŸááºážááŸáá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá»á¬ážááᯠááááºážáááºážááŒááºážááŸáá·áº áá±á¬ááºážá
áœá¬ áááá¯ááºáá®ááŒá±á¬ááºáž ááŸááºážáá«áááºá
áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºáá®ážá ááá°á á¡á á¬ážááá¯ážááŒá®áž áá»ááºáá«á
áá°ááááºážááŸáá·áº áááºáá®ážááŸá¯ ááá¯ážááŸááºážáááº- áá¯ááºáá±á¬ááºáá»ááºááá¯á· áááºáá®ážáááºá
áºááᯠáá±ážááá¯á·áá«á create
kube api ááŸáá·áº á¡áááºážá¡ááŒá
áºááᯠáááºáá®ážáá¬ážáááºá áááºáá®ážáááºá
áºá YAML ááá¯ááºá
á¬ážááŒá¯ááŸá¯ááᯠGit ááœáẠááááºážáááºážááá¯ááºááŒá®áž á¡áááá·áºááᯠá¡áá¯á¶ážááŒá¯á áááºáá®ážááá¯ááºáááºá kubectl create -f manifest.yaml
.
С áááºááŸá¬ážááŒááºáž also simple : á¡áá°áá° á¡á
á¬ážááá¯ážáá«á manifest.yaml
Git á០á¡ááœá²á·ááá¯á· kubectl delete -f manifest.yaml
.
á
á
áºáááºáá±áž replace
á¡áááºážá¡ááŒá
áºááᯠááŒááºáááºááááºáá®ážáá²á á¡áááºážá¡ááŒá
áºááœá²á·á
ááºážáá¯á¶á¡áá
áºáá
áºáá¯ááŸáá·áº áá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž á¡á
á¬ážááá¯ážááá¯ááºá
á±áá«áááºá ááá¯ááá¯áááºááŸá¬ á¡áááºážá¡ááŒá
áºáá
áºáá¯ááá¯á· ááŒá±á¬ááºážáá²ááŒááºážáááŒá¯áá®á áá¯ááºáá±á¬ááºááŸá¯ááŒáá·áº áááºááŸááá¬ážááŸááºážááᯠáá±ážááŒááºážááẠáá¯áá¹áááááºáá±á¬á¡áá»ááºááŒá
áºáááºá get
áááºážááᯠááŒá±á¬ááºážáá²ááŒá®áž áá¯ááºáá±á¬ááºáá»ááºááŒáá·áº á¡ááºááááºáá¯ááºáá«á replace
. kube apiserver ááœááºáááºáá±á¬ááºáá¬ážáááºá get
á¡áá¬ááá¹áá¯ááẠááŒá±á¬ááºážáá²ááœá¬ážáááºá ááá¯á·áá±á¬áẠáá¯ááºáá±á¬ááºáá»áẠreplace
á¡áá¯ááºáááŒá
áºáá«á
Git ááœáẠconfiguration ááᯠááááºážáááºážááŒá®áž replace ááᯠá¡áá¯á¶ážááŒá¯á á¡ááºááááºáá¯ááºáááºá áá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáá«áááºá get
Git á០config ááá¯áá»áœááºá¯ááºááá¯á·áááŸááá¬ážáá±á¬á¡áá¬ááŸáá·áºáá±á«ááºážá
ááºááŒá®áž execute replace
. áá°áááºážá¡á¬ážááŒáá·áº kubectl ááẠááá·áºá¡á¬áž á¡áááá·áºááᯠá¡áá¯á¶ážááŒá¯áááºáᬠááœáá·áºááŒá¯áááºá kubectl replace -f manifest.yaml
áááºááŸá¬ manifest.yaml
- ááá·áºááœááºážááẠááá¯á¡ááºáá±á¬ á¡ááŒáá·áºá¡áááŒááºáááºáá¬ážááŒá®áž (áá»áœááºá¯ááºááá¯á·áááá
á¹á
ááœááºá áá±á«ááºážá
ááºážááŒááºáž) áááºáá®ážáááºá
áºá á¡áá¯á¶ážááŒá¯áá°ááẠáá±á«ááºážá
ááºáá±á¬áºááŒáá»ááºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠááá¯á¡ááºááŒá±á¬ááºážá áááºážááẠá¡áá±ážá¡ááœá²ááá
á¹á
ááá¯ááºáá«...
áá«áááºáž ááŸááºáá¬ážááá¯ááºáá«áááºá manifest.yaml
Git ááœáẠááááºážáááºážáá¬ážááŒá®ážá áááºážááᯠá¡áá¬ááá¹áá¯áá
áºáᯠáááºáá®ážááẠááá¯á·ááá¯áẠá¡ááºááááºáá¯ááºááẠááá¯á¡ááºáááºááá¯áááºááᯠáá»áœááºá¯ááºááá¯á· ááŒáá¯áááºáááááá¯áẠ- áááºážááᯠá¡áá¯á¶ážááŒá¯áá°áá±á¬á·ááºáá²ááŒáá·áº áá¯ááºáá±á¬ááºááááºááŒá
áºáááºá
á á¯á á¯áá±á«ááºáž: á ááºáááºáááŒáẠááŒáá·áºáá»ááºáááºáá±á¬ááºááá¯ááºáá«ááá¬ážá áááºáá®ážááŒááºážá á¡á á¬ážááá¯ážááŒááºážááŸáá·áº áá»ááºááŒááºážáá»á¬ážááá¯áᬠá¡áá¯á¶ážááŒá¯á á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠááœá²á·á ááºážáá¯á¶ááœá²á·á ááºážáá¯á¶ááᯠGit ááœáẠáá¯ááºááŸáá·áºá¡áá° ááááºážáááºážáá¬ážááŒá®áž á¡áááºááŒá±áá±á¬ CI/CD ááᯠáá±áá»á¬á á±áá«ááá¬ážá
áá°á¡áá áá±á«ááºážá ááºáá¯ááºáá±á¬ááºááŸá¯ááᯠáááºá¡áá±á¬ááºá¡áááºáá±á¬áºááẠááá¯á¡ááºáááºááŒá áºáááºá áá±á¬áºááŒáá»ááºáá»á¬ážááŸáá·áº á¡áá»áá¯á·áá±á¬ á ááºážááŸá±á¬ááºááŸá¯ á¡áá»áá¯ážá¡á á¬ážáá»á¬áž
- á¡á á¯á¡áá±ážá¡ááœááºážááŸá á¡áá¬ááá¹áá¯áá áºáá¯á áá«áááºááŸá¯ááᯠá á áºáá±ážáááºá
- áááŠáž á¡áááºážá¡ááŒá Ạáááºáá®ážááŸá¯ááᯠáá¯ááºáá±á¬ááºááŒá®ážá
- á¡ááºááááºáá»á¬áž ááá¯á·ááá¯áẠáá»ááºáá«á
á¡ááºááááºáá¯ááºááá·áºá¡áá« áá»á±ážáá°ážááŒá¯á áááááŒá¯áá«á á¡áááºážá¡ááŒá
áºáá»á¬áž ááŒá±á¬ááºážáá²ááœá¬ážááá¯ááºáááºá áá±á¬ááºáá¯á¶ážááááºážá get
á¡áá±á¬ááºážááŒááºáá±á¬áá±á¬á·áááºááŒááºážááá
á¹á
áááºááᯠá¡ááá¯á¡áá»á±á¬ááºááá¯ááºááœááºáá« - áááºáá«ááá²áá² ááœááºážáá¶ááŸá¯áá»á¬áž ááŒá¯áá¯ááºáá«á
ááá¯á·áá±á¬áº kube-apiserver ááẠá¡áááºážá¡ááŒá
áºáá»á¬ážááᯠá¡ááºááááºáá¯ááºááẠá¡ááŒá¬ážáááºážáááºážáá
áºáᯠáááºážááŸááºážáá±á¬á¡áá« á¡áááºááŒá±á¬áá·áºáá®ážááᯠááŒááºáááºáá®ááœááºáááááºážá patch
áá±á¬áºááŒáá¬ážáá±á¬ ááŒá¿áá¬á¡áá»áá¯á·ááᯠá¡áá¯á¶ážááŒá¯áá°ááᯠáááºáá¬á
á±ááá·áºá¡áá¬á
áá«
á¡áᯠáá»áœááºáá±á¬áºááá¯á· áá¬áá±ážáá¬ááᯠáá±á¬ááºáá±áá«ááŒá®á
Patches áá»á¬ážááẠKubernetes ááŸá ááŸáááŒá®ážáá¬ážá¡áá¬áá»á¬ážáá±á«áºááœáẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááááááºážáááºážááŒá
áºáááºá á
á
áºáááºáá±áž patch
á€áá²á·ááá¯á·á¡áá¯ááºáá¯ááºáááº-
- kube-apiserver á¡áá¯á¶ážááŒá¯áá°ááẠJSON áá±á¬ááºááœáẠpatch áá áºáá¯ááᯠáá±ážááá¯á·ááŒá®áž á¡áá¬ááá¹áá¯ááᯠáááºááŸááºááẠááá¯á¡ááºáááºá
- ááŸáá·áº apiserver ááá¯ááºááá¯ááºá á¡áá¬ááá¹áá¯á áááºááŸáá¡ááŒá±á¡áá±ááᯠááá¯ááºááœááºááŒá±ááŸááºážááŒá®áž ááá¯á¡ááºáá±á¬áá¯á¶á á¶ááá¯á· áá°áá±á¬ááºáá¬áááºááŒá áºáááºá
á€ááá á¹á ááœáẠá¡áá±á¬ááºážááŒááºáá±á¬áá±á¬á·áááºááẠáááá¯á¡ááºáá«á á€áá¯ááºáá±á¬ááºáá»ááºááẠá¡á á¬ážááá¯ážááŒááºážááẠááá¯ááá¯ááŸááºážáááºážáá±á¬áºáááºáž á¡á ááœáẠá¡ááŒá¬ážáááºážáááºážáᯠáááºááá±á¬áºáááºážá
ááá¯á·ááŒá±á¬ááºá·:
- áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯
create
Git á០manifest á¡á object áá áºáá¯ááᯠáááºáá®ážááŒá®ážá - ááŒááº.
delete
- á¡áá¬ááá¹áá¯ááᯠáááá¯á¡ááºáá±á¬á·áá«á áá»ááºáá« - ááŒááº.
patch
- áá»áœááºá¯ááºááá¯á·ááẠáááºážááᯠGit ááœááºáá±á¬áºááŒáá¬ážááá·áºáá¯á¶á á¶ááá¯á· áá°áá±á¬ááºáá¬áᬠá¡áá¬ááá¹áá¯ááá¯ááŒá±á¬ááºážáá²áá«á
áá«áá±ááá·áº áá®ááá¯áá¯ááºááá¯á·á áááºáá®ážááá¯á· ááá¯áá«áááºá ááŸááºáááºáá±á¬ patch!
Helm 2: 2-way-merge ááœáẠáá¬áá±ážááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºáá¯á¶
ááŒáá·áºáá»áááŸá¯ááᯠáááºááááá¯á¶ážááá·áºááœááºážáá±á¬á¡áá«á Helm ááẠáá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºáááºá create
ááá¬ážá¡áááºážá¡ááŒá
áºáá»á¬ážá¡ááœááºá
á¡áááºážá¡ááŒá áºáá áºáá¯á á®á¡ááœáẠHelm ááœááºááŸáááŸá¯ááᯠá¡ááºááááºáá¯ááºáá±á¬á¡áá«-
- ááááºááá¬ážá០á¡áááºážá¡ááŒá áºáá¬ážááŸááºážááŸáá·áº áááºááŸáááá¬ážáá¬ážááŸááºážá¡ááŒá¬áž áá¬áá±ážááŸá¯ááᯠááá·áºááœááºážá ááºážá á¬ážáááºá
- ဠpatch ááá¯á¡áá¯á¶ážááŒá¯áááºá
áá«ááᯠpatch ááá¯á·áá±á«áºáááºá 2-áááºážáá±á«ááºážá ááºážáá¬áá±ážáááºážááááºáá®ážááŸá¯ááœáẠmanifestos 2 áá¯áá«áááºáá±á¬ááŒá±á¬áá·áº-
- ááááºáá¯ááºáá±ááŸá¯á០á¡áááºážá¡ááŒá áºáá±á¬áºááŒáá»ááºá
- áááºážááŒá áºááẠáááºááŸáá¡áááºážá¡ááŒá áºá០áááºááŸá¬ážáááºá
ááŒá¯ááºááá¯ááºáá¬áá²á· áááºáááºáá«áááºá delete
kube apiserver ááœáẠááááºáá¯ááºááœáŸááºááŸá¯ááœáẠááŒá±ááŒá¬áá¬ážáá±á¬ á¡áááºážá¡ááŒá
áºáá»á¬ážá¡ááœáẠáá±á«áºááá¯áá¬ážáá±á¬áºáááºáž áááºááŸáááœáẠáááŒá±ááŒá¬áá¬ážáá±á
2 way merge patch áá»ááºážáááºááŸá¯ááœáẠááŒá¿áá¬áá áºáá¯ááŸááááºá á¡á á¯á¡ááœá²á·ááŸá á¡áááºážá¡ááŒá áºá á¡á á áºá¡ááŸááºá¡ááŒá±á¡áá±ááŸáá·áº Git ááŸá áááºáá®ážáááºá áºááá¯á·ááŸáá·áº áááºáá°ááá»áá«á.
á¥ááá¬áá áºáá¯ááŒáá·áº ááŒá¿áá¬ááᯠááá¯ááºáá±á¬áºáááºá
- Git ááœááºá ááá¬ážáá
áºáá¯ááẠá¡ááœááºááœááºáá±á¬áºááŒáá±á¬ ááá¯ááºááᯠááááºážáááºážáá¬ážáááºá
image
ááŒáá·áºáá»ááºáá±ážááá á¹áubuntu:18.04
. - á¡áá¯á¶ážááŒá¯áá°ááŸáááá·áº
kubectl edit
á€á¡ááœááºááááºááá¯ážááᯠááŒá±á¬ááºážáá²áá²á·áááºáubuntu:19.04
. - Helm ááá¬ážááᯠááŒááºáááºá¡áá¯á¶ážááŒá¯áá±á¬á¡áá« patch áá
áºáá¯ááá¯ááºáá¯ááºáá«áá°ážááááºááœááºážááá¯á·á
image
áá¯ááºáá±ááŸá¯á ááááºáá¬ážááŸááºážááŸáá·áº áááºááŸáááá¬ážááœáẠáá°áá®áááºá - ááŒá®ážá០ááŒááºáááºááŒáá·áºáá»ááº
image
á¡ááŒáœááºážubuntu:19.04
ááá¬ážá ááá¯áá¬ážáá±ááá·áºáubuntu:18.04
.
áá»áœááºá¯ááºááá¯á·ááẠááœá²ááœá²ááŒá¬ážááŒá¬ážááŒá áºááŒááºážááᯠáááŸáááŒá®áž ááŒá±ááŒá¬ááá¯ááºááŸá¯ áá»á±á¬ááºáá¯á¶ážááœá¬ážáá«áááºá
áááºáá°ááŒá¯áá¬ážáá±á¬ á¡áááºážá¡ááŒá áºááá¯áááºááŸá¬ á¡áááºáááºážá
áá±áá°áá»á¡á¬ážááŒáá·áºááŒá±á¬áááẠááŒáá·áºáá±á¬ áá¯ááºáá±á¬ááºáá±ááá·áº á¡á á¯á¡áá±ážáá áºáá¯ááŸá á¡áááºážá¡ááŒá áºáááºáá®ážáááºá áºááŸáá·áº Git á០áááºáá®ážáááºá áºá¡ááŒá¬áž áá°áá®ááŸá¯ááᯠááá°ááẠáááŒá áºááá¯ááºáá«á á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áááá·áº manifest ááœáẠáááºáá±á¬ááºááŸá¯ááŸááºá á¬áá»á¬áž/á¡ááœáŸááºážáá»á¬ážá á¡ááá¯ááœááºááááºáá¬áá»á¬ážááŸáá·áº ááááºážáá»á¯ááºáá°á¡áá»áá¯á·á á¡áááºážá¡ááŒá áºá០ááá·áºááœááºážáᬠáááºááŸá¬ážáá¬ážáá±á¬ á¡ááŒá¬ážáá±áá¬áá»á¬áž ááŸáááá¯ááºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá áá»áœááºá¯ááºááá¯á·ááẠá€áá±áá¬ááᯠGit ááœáẠáááááºážáááºážáá»ááºáá«á ááá¯á·áá±á¬áºáááºážá áá»áœááºá¯ááºááá¯á·ááẠGit ááœáẠá¡ááá¡áááºážáááºááŸááºáá¬ážáá±á¬ ááœááºáááºáá»á¬ážááᯠá áááºáá±á¬ááºážáá»ááŒá®ážáá±á¬áẠááá·áºáá»á±á¬áºáá±á¬áááºááá¯ážáá»á¬ážááᯠááá°ááá¯áá«áááºá
áá«ááŒá±á¬áá·áºáá±áá¯áá»ááœááºááŸáá·áº áááºáá°ááŒá¯áá¬ážáá±á¬ á¡áááºážá¡ááŒá Ạá ááºážáá»ááºáž: áááºážááŒá áºáá áºáá¯áá¯ááºááá·áºá¡áá«á Git á០áááºáá®ážáááºá áºááœáẠá¡ááá¡áááºážáááºááŸááºáá¬ážááá·áº á¡ááœááºáá»á¬ážááá¯áᬠááŒá±á¬ááºážáá²ááá¯ááºááẠ(ááá¯á·ááá¯áẠááááºáá¬ážááŸááºážááœáẠáááºááŸááºáá¬ážááŒá®áž ááá¯á¡áá« áá»ááºááá¯ááºáááº)á
3-áááºážáá±á«ááºážá ááºážáá¬áá±áž
á¡ááááááºááœááºáá»ááº
- áá áºááŸááºáá¬ážááŸááºážááá¯á· áá±á«ááºážááá·áºáá¬ážáá±á¬ ááœááºáááºá¡áá áºáá»á¬ážááᯠáá¬áá±ážááŸá¯áá áºáá¯á¡áá¯á¶ážááŒá¯á ááá·áºááœááºážáá¬ážáááºá
- áá±á¬ááºáá¯á¶ážá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬áá¬ážááŸááºážááŸá ááááºááŸáááŒá®ážáá¬ážááœááºáááºáá»á¬ážááᯠáá áºááŸááºáá¬ážááŸááºážááœáẠááááºááŸááá±á¬ááœááºáááºáá»á¬ážááᯠáá¬áá±ážááŸá¯áá áºáá¯ááŒáá·áº ááŒááºáááºáááºááŸááºáá¬ážáááºá
- áááºáá®ážáááºá áºá áá áºááŸááºáá¬ážááŸááºážááŸáá·áº ááœá²ááŒá¬ážááá·áº á¡áá¬ááá¹áá¯á áááºááŸááá¬ážááŸááºážááŸá ááœááºáááºáá»á¬ážááᯠáá¬áá±ážááŒááºážá¡á¬áž á¡áá¯á¶ážááŒá¯á á¡ááºááááºáá¯ááºáá¬ážáááºá
áááºážááẠáá¬áá±ážááŸá¯áá»á¬ážááᯠáá¯ááºáá±ážááá·áº á€áá°á¡áááŒá
áºáááºá kubectl apply
:
- áááºáá®ážáááºá áºá áá±á¬ááºáá¯á¶ážá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ áá¬ážááŸááºážááᯠá¡áá¬ááá¹áá¯á ááŸááºá á¬ááœáẠááááºážáááºážáá¬ážáááºá
- áá áºááŸáẠ- áááºááŸááºáá¬ážáá±á¬ YAML ááá¯ááºááŸáá°áááºá
- áááºááŸááá áºáá¯ááẠáááºáááºáá±áá±á¬ á¡á á¯á¡áá±ážááŸááŒá áºáááºá
ááᯠáá»áœááºá¯ááºááá¯á·ááẠáá®á¡áá¯áá®ááᯠááœá²ááŒááºážá áááºááŒá¬ááŒá®ážáá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠwerf ááœáẠáá¯ááºáá±á¬ááºáá²á·áááºáá»á¬ážááᯠááá·áºá¡á¬áž ááŒá±á¬ááŒááẠá¡áá»áááºáá»áá±á¬ááºááŒá®ááŒá áºáááºá
werf ááœáẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážáá»ááŒááºážá
ááááºá Helm 2 áá²á·ááá¯á· werf ááẠ2-way-merge patches ááá¯á¡áá¯á¶ážááŒá¯áá²á·áááºá
ááŒá¯ááŒááºáá¬áá±ážááŒááºážá
áá¬áá±ážááŸá¯ á¡áá»áá¯ážá¡á á¬ážá¡áá áºááá¯á· ááŒá±á¬ááºážáááºá¡ááœáẠ- 3-way-merge - áá¯áá±á«áºáá±á¬ áááá¡ááá·áºááᯠááááºáááºáá±ážáá²á·áááºá ááŒá¯ááŒááºáá¬áá±ážááŸá¯áá»á¬áž.
ááŒáá·áºáá»ááºááá·áºá¡áá«á á ᶠ2-áááºáž-áá±á«ááºážá ááºážááá·áº patch ááá¯á¡áá¯á¶ážááŒá¯áááºá ááá¯á·áá±á¬áº werf ááẠGit ááœááºáá±ážáá¬ážáá¬ážááá·áºá¡áá¬ááŸáá·áº á¡áááºážá¡ááŒá áºáá¡á á áºá¡ááŸááºá¡ááŒá±á¡áá±ááᯠáááºáá°ááŒá¯ááá·áº patch ááá¯áá¯ááºáá±ážááẠ(á¡áááºáá±á¬áºááŒáá« áá°áá®áá±á¬áááºáá°áá»ááá·áºá¡áááºážá¡ááŒá áºá ááºážáá»ááºážááá¯á¡áá¯á¶ážááŒá¯á ဠpatch ááá¯áááºáá®ážáá¬ážáááº) .
ááœá²ááœá²ááŸá¯áá
áºáá¯ááŒá
áºáá±á«áºáá«áá á¡áá¯á¶ážááŒá¯áá°ááẠá¡áá¯á¶ážááŒá¯áá°ááẠá¡áááºážá¡ááŒá
áºááᯠáááºáá°ááŒá¯áá±á¬áá¯á¶á
á¶ááá¯á· áá°áá±á¬ááºáá¬áááºá¡ááœáẠáááºááá¯ááºáᬠáááºáá±á·áá»áºááŸáá·áº áá¬áá±ážááŸá¯ááŸáá·áºá¡áá° ááááá±ážáá»ááºááᯠáááºáá¶áááŸááááºááŒá
áºáááºá á€áá¬áá±ážááŸá¯ááᯠá¡áá°ážááŸááºá
á¬ááœáẠááŸááºáááºážáááºáá¬ážáááºá werf.io/repair-patch
. á¡áá¯á¶ážááŒá¯áá°ááááºáᯠáá°áááááºá ÑаЌ ဠpatch ááᯠá¡áá¯á¶ážááŒá¯áá«áááº- werf ááẠáááºážááᯠáá¯á¶ážá á¡áá¯á¶ážááŒá¯áááºááá¯ááºáá«á
ááŒá¯ááŒááºáá¬áá±ážááŸá¯áá»á¬áž áá¯ááºáá±ážááŒááºážááẠ3-way-merge áááá¬áááᯠá¡ááŒá±áá¶á áá¬áá±ážáááºáá®ážááŸá¯ááᯠá¡ááŸááºáááẠá ááºážáááºááá¯ááºá á±ááá·áº áá¬áá®ááá¯ááºážáá¬ááŸá¯áá áºáá¯ááŒá áºááŒá®áž á¡ááá¯áá« áá¬áá±ážááŸá¯áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠá¡áá¯á¶ážáááŒá¯áá«ááŸáá·áºá áá±á¬áá±á¬áááºááœááºá á€áááºáááºááŸá¯áá¯ááºááᯠáá°áááºážá¡ááá¯ááºáž ááœáá·áºáá¬ážáááºá
á¡áá áºááœááºááŸááá°áá»á¬ážá¡ááœááºáᬠ3-way-merge patch
áá®áááºáᬠ1á 2019 ááŸá áááºá werf á beta ááŸáá·áº alpha áá¬ážááŸááºážáá»á¬áž á áááºáá«áááºá áá°áá werf ááŸáááá·áºáá¯ááºáá¬ážáá±á¬ Helm ááŒáá·áºáá»áááŸá¯á¡áá áºáá»á¬ážá¡ááœááºáᬠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠá¡áá¯á¶ážáá»ááẠááŒáá·áºá á¯á¶áá±á¬ 3-áááºáž-áá±á«ááºážá ááºážááá·áº áááºááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á áááºááŸááá¯ááºáá±ááŸá¯áá»á¬ážááẠ2-way-merge + repair patches áá»ááºážáááºááŸá¯ááᯠáááºáááºá¡áá¯á¶ážááŒá¯áá«áááºá
á€áááºáááºááŸá¯áá¯ááºááᯠáááºáááºááŒáá·áº ááŒááºáá¬ážá
áœá¬ ááœáá·áºááá¯ááºáááºá WERF_THREE_WAY_MERGE_MODE=onlyNewReleases
ááá¯
ááœá±á¬ááá¯: á¡ááºá¹áá«áááºááẠáá¯ááºáá±ááŸá¯áá»á¬ážá
áœá¬á¡ááœáẠwerf ááœáẠáá±á«áºáá¬áááº- alpha áá»ááºáááºááœáẠáááºážááẠáá¬ážááŸááºážááŒáá·áº á¡áááºááá·áºááŒá
áºáá¬áááºá
ááŒáá·áºáá»áááŸá¯á¡á¬ážáá¯á¶ážá¡ááœáẠ3-way-merge patch
áá®áááºáᬠ15á 2019 ááŸá áááºá werf á beta ááŸáá·áº alpha áá¬ážááŸááºážáá»á¬ážááẠáá¯ááºáá±ááŸá¯á¡á¬ážáá¯á¶ážá¡ááœáẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠáá°áááºážá¡á¬ážááŒáá·áº 3-way-merge patch á¡ááŒáá·áºá¡á á¯á¶ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
á€áááºáááºááŸá¯áá¯ááºááᯠáááºáááºááŒáá·áº ááŒááºáá¬ážá
áœá¬ ááœáá·áºááá¯ááºáááºá WERF_THREE_WAY_MERGE_MODE=enabled
ááá¯
áááºážááŒá áºááᯠá¡ááá¯á¡áá»á±á¬áẠáá»á²á·ááœááºááŒááºážááŒáá·áº áá¬áá¯ááºáááá²á
Kubernetes ááœáẠá¡ááá¯á¡áá»á±á¬áẠá¡ááá¯ááºážá¡áᬠá áá»áá¯áž ááŸááááº- HPA (á¡áá»á¬ážááá¯ááº) ááŸáá·áº VPA (áá±á«ááºááá¯ááº)á
á¡áá»á¬ážááá¯áẠáá¯á¶áá°á¡áá±á¡ááœááºá áá±á«ááºááá¯áẠ- á¡áááºážá¡ááŒá
áºá¡áá±á¡ááœááºááᯠá¡ááá¯á¡áá»á±á¬ááºááœá±ážáá»ááºáááºá áá¯á¶áá°á¡áá±á¡ááœááºááŸáá·áº á¡áááºážá¡ááŒá
áºááá¯á¡ááºáá»ááºááŸá
áºáá¯áá¯á¶ážááᯠá¡áááºážá¡ááŒá
áºáááºáá®ážáááºá
áºááœáẠáááºááŸááºáá¬ážááẠ(á¡áááºážá¡ááŒá
áºáá±á¬áºááŒáá»ááºááᯠááŒáá·áºáá«)á spec.replicas
ááá¯á·ááá¯áẠspec.containers[].resources.limits.cpu
, spec.containers[].resources.limits.memory
О
ááŒá¿áá¬- á¡áááºá á¡áá¯á¶ážááŒá¯áá°áá áºáŠážááẠá¡áááºážá¡ááŒá áºáá»á¬áž ááá¯á·ááá¯áẠáá¯á¶áá°áá»á¬ážáá»á¬ážá¡ááœáẠá¡áá»áá¯á·áá±á¬áááºááá¯ážáá»á¬ážááᯠáááºááŸááºáá±á¬áºááŒáááºááŸáá·áº á€á¡áááºážá¡ááŒá áºá¡ááœáẠautoscalers ááá¯ááœáá·áºáá¬ážáá«áá á¡áá¯á¶ážááŒá¯áá°ááẠá¡áá¯á¶ážáá»ááŸá¯áá áºáá¯á á®ááŸáá·áº werf ááẠá€áááºááá¯ážáá»á¬ážááᯠáááºáá®ážáááºá áºáá¬ážáá»ááºááœááºáá±ážáá¬ážááá·áºá¡áá¬ááá¯á· ááŒááºáááºáááºááŸááºáááºááŒá áºáááºá .
ááŒá¿áá¬á¡ááœáẠááŒá±ááŸááºážáááºáž ááŸá áºáá¯ááŸááááºá á áááºáááºá ááá¬ážááœáẠáááºáá®ážáááºá áºááœáẠá¡ááá¯á¡áá»á±á¬áẠá¡ááá¯ááºážá¡áá¬áááºááá¯ážáá»á¬ážááᯠááŒááºáá¬ážá áœá¬ áááºááŸááºááŒááºážá០ááŸá±á¬ááºááŒááºááŒááºážááẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºáááºá á€ááœá±ážáá»ááºááŸá¯ááẠá¡ááŒá±á¬ááºážááŒáá»ááºáá áºáá¯áá¯á¡ááœáẠáááá·áºáá»á±á¬áºáá«á (á¥ááá¬á áááŠážá¡áááºážá¡ááŒá áºááá·áºáááºáá»ááºáá»á¬ážááŸáá·áº áá¯á¶á á¶áá°á¡áá±á¡ááœááºááᯠáááºááŸááºááẠá¡áááºááŒá±áá±á¬ááŒá±á¬áá·áº)á ááá¯á·áá±á¬áẠwerf á០á¡á±á¬ááºáá«ááŸááºáá»ááºáá»á¬ážááᯠáá±ážáá±á¬ááºáááº-
-
werf.io/set-replicas-only-on-creation=true
-
werf.io/set-resources-only-on-creation=true
ááá¯ááá¯á·áá±á¬ááŸááºáá»ááºáá áºáá¯ááŸááá±áá«áá werf ááẠááŒáá·áºáá»ááºááŸá¯áá áºáá¯á á®ááŸá áááºá ááºáááºááá¯ážáá»á¬ážááᯠááŒááºáááºáááºááŸááºáááºááá¯ááºáá±á¬áºáááºáž á¡áááºážá¡ááŒá áºááᯠáááŠážáááºáá®ážááá·áºá¡áá«ááŸáᬠáááºážááá¯á·ááᯠáááºááŸááºáá±ážáááºááŒá áºáááºá
á¡áá±ážá
áááºá¡áá»ááºá¡áááºáá»á¬ážá¡ááœáẠááá±á¬áá»ááºá
á¬ááœááºá
á¬áááºážáá»á¬ážááᯠááŒáá·áºáá«á
3-way-merge patch á¡áá¯á¶ážááŒá¯ááŒááºážááᯠáá¬ážááŒá áºáá«á
á¡áá¯á¶ážááŒá¯áá°ááẠáááºáááºážáá»ááºááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ááᯠá¡áá¯á¶ážááŒá¯á werf ááœáẠáá¬áá±ážááŸá¯á¡áá
áºáá»á¬ážá¡áá¯á¶ážááŒá¯ááŒááºážááᯠáá±á¬áá±á¬áááºáá¬ážááŒá
áºááá¯ááºáááºá WERF_THREE_WAY_MERGE_MODE=disabled
. ááá¯á·áá±á¬áº á
áááºáááºá 1 áá¯ááŸá
Ạáááºá 2020 áááºáá±á·ááŸá
á á€áá¬ážááŒá
áºáá»ááºááẠáááºáá±á¬ááºááŸá¯ááŸááá±á¬á·áááºááá¯ááºáá«á 3-way-merge patches áá»á¬ážááá¯áᬠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
werf ááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºáá¶ááŒááºážá
3-way-merge patch áá»á¬ážááŒáá·áº á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠá¡áá¯á¶ážáá»ááŒááºážáááºážáááºážááᯠáá»áœááºážáá»ááºá¡á±á¬ááºáá¯ááºáá±á¬ááºááŒááºážááŒáá·áº Helm release ááœáẠá¡á á¯á¡áá±ážááŸááááºážááŒá áºáá»á¬ážááᯠááá·áºááœááºážááŒááºážáá²á·ááá¯á·áá±á¬ á¡ááºá¹áá«áááºááᯠáá»ááºáá»ááºážá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºá á±áá«áááºá
Helm 2 ááœáẠááŒá¿áá¬ááŸááá±áááº- á€á¡áááºážá¡ááŒá
áºááᯠá¡á
ááŸááŒááºááááºáá®ážáá² á¡á
á¯á¡áá±ážááœáẠááŸáááŸáá·áºááŒá®ážáá¬ážááŒá
áºáá±á¬ ááá¬ážááœááºááœáẠáááºážááŒá
áºáá
áºáᯠááá·áºááááá« (ááŒáá·áºááŸá¯áá«á kubectl edit
):
"werf.io/allow-adoption-by-release": RELEASE_NAME
ááá¯á¡áá« á¡áááºážá¡ááŒá áºááᯠááá¬ážááœáẠáá±á¬áºááŒáááºááá¯á¡ááºááŒá®áž áá±á¬ááºáá áºááŒááẠwerf ááẠááá·áºáá»á±á¬áºáá±á¬á¡áááºááŒáá·áº áá¯ááºáá±ááŸá¯ááᯠááŒáá·áºáá»ááºááá·áºá¡áá« ááŸááááºážá áœá²áááºážááŒá áºááᯠá€áá¯ááºáá±ááŸá¯ááœáẠáááºáá¶ááŒá®áž áááºážáááááºážáá»á¯ááºááŸá¯á¡á±á¬ááºááœáẠáááºáááºááŸááá±áááºááŒá áºáááºá ááá¯á·á¡ááŒááºá áá¯ááºáá±ááŸá¯á¡ááœáẠáááºážááŒá áºáá áºáá¯ááᯠáááºáá¶ááŒááºáž áá¯ááºáááºážá ááºááœááºá werf ááẠáá°áá®áá±á¬ 3-way-merge patches ááŸáá·áº synchronized resource rule ááᯠá¡áá¯á¶ážááŒá¯á áááºáááºáá±áá±á¬ á¡á á¯á¡áá±ážá០á¡áááºážá¡ááŒá áºá áááºááŸáá¡ááŒá±á¡áá±ááᯠááá¬ážááœááºáá±á¬áºááŒáá¬ážááá·áº á¡ááŒá±á¡áá±ááá¯á· áá°áá±á¬ááºáá¬áááºááŒá áºáááºá
ááœá±á¬ááá¯: setting ááᯠWERF_THREE_WAY_MERGE_MODE
á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠááœá±ážá
á¬ážááŒááºážááᯠáááááá¯ááºá
á±áá« - ááœá±ážá
á¬ážááŒááºážááá
á¹á
ááœááºá 3-way-merge patch ááᯠá¡ááŒá²áááºážá¡áá¯á¶ážááŒá¯áááºá
á¡áá±ážá
áááºá¡áá»ááºáá»á¬áž
áááá¯á¶ážáá»á¬ážááŸáá·áº á¡áá¬áááºá¡á á®á¡á ááºáá»á¬áž
á€áá±á¬ááºážáá«ážá¡ááŒá®ážááœáẠ3-way-merge patches áá»á¬ážááẠá¡áááºááŒá±á¬áá·áº áááºážááá¯á·áá¶áá±á¬ááºáá¬áááºááᯠááá¯ááá¯ááŸááºážáááºážáá¬á á±ááẠáá»áŸá±á¬áºááá·áºáá«áááºá werf ááá±á¬áá»ááºá áááºááœá±á·áá»áá±á¬á¡ááŒááºááŸá áááºážááá¯á·á á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠHelm-like deployment ááᯠááá¯ááá¯áá±á¬ááºážááœááºáá¬á á±áááºá¡ááœáẠáá±á¬ááºáááºááŒá±ááŸááºážáá áºáá¯ááŒá áºáááºá ááᯠHelm 2 ááá¯á¡áá¯á¶ážááŒá¯áá±á¬á¡áá«ááœáẠáááŒá¬áá áá±á«áºáá±á«ááºáá²á·áá±á¬ ááœá²á·á ááºážááŸá¯ áááºáá°ááŒá¯ááŒááºážááá¯ááºáᬠááŒá¿áá¬áá»á¬ážááᯠáááºáá±á·ááœá¬ážááá¯ááºáá«áááºá áá áºáá»áááºáááºážááœááºá áá±á«ááºážáá¯ááºáá¯ááºááŒá®ážáá¬áž Kubernetes á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá á¡áá¯á¶ážáááºáá±á¬á¡ááºá¹áá«áááºá¡áá áºááᯠHelm áá¯ááºáá±ááŸá¯ááœáẠááá·áºááœááºážáá¬ážáá«áááºá
Go templates á¡áá¯á¶ážááŒá¯ááŒááºážáá²á·ááá¯á·áá±á¬ Helm áá²á·ááá¯á·áá±á¬ á¡áá¯á¶ážáá»ááŸá¯áá»á¬ážááœáẠááŒá¿áá¬áá»á¬ážááŸáá·áº á áááºáá±á«áºááŸá¯á¡áá»áá¯á· ááŸááá«áá±ážáááºá
á¡áááºážá¡ááŒá
Ạá¡ááºááááºáá¯ááºáááºážáá»á¬ážááŸáá·áº ááœá±ážá
á¬ážááŒááºážááá¯ááºáᬠá¡áá»ááºá¡áááºáá»á¬ážááá¯áááºáž ááœáẠááœá±á·ááá¯ááºáá«áááºá
áá²á·á áẠá
á¡áá°ážááŸááºáá¬ážááá¯ááºáá«áááºá
Werf ááẠáááºááŸáááœáẠTiller ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááᯠáááºááŸá¬ážááá¯ááºááŒá®áž 3-way-merge ááá¯á·ááŒá±á¬ááºážáᬠáá±á«ááºážááá·áºáá¬ážáááºá
ááá¯á·áá±á¬áºá Werf á Helm 3 codebase ááá¯á·ááŒá±á¬ááºážááŒááºážááẠáááœáŸá²áááŸá±á¬ááºáá¬ááŒá
áºááŒá®áž ááá±ážáá±á¬á·áá±á¬á¡áá¬áááºááœáẠááŒá
áºáá¬áááºááŒá
áºáááºá áááºážááẠwerf 1.1 ááá¯á·ááá¯áẠwerf 1.2 ááŒá
áºááẠ(ááá¯á¡áá»áááºááœááºá werf áá¡ááááá¬ážááŸááºážááŸá¬ 1.0 ááŒá
áºáááºá werf áá¬ážááŸááºážáá¯ááºáá¯ááºááá·áºáááááá¬á¡ááŒá±á¬ááºáž áá±á¬ááºáááºá¡áá»ááºá¡áááºáá»á¬ážá¡ááœáẠááŒáá·áºáá«á
PS
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááœááºáááºážáááºáá«
- werf ááœáẠáááºážáá
áºáá®ááœááºááŸá¯áá»á¬ážá¡ááŒá±á¬ááºáž á¡ááœá²ááá¯ááºááŸááºá
á¯áá»á¬áž-
- «
ááŸá¯ááºááœá±ážáá±á¬ Helm ááá¬ážáá»á¬ážááᯠáá¯ááºááẠwerf ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá "; - «
werf ááœáẠmonorepo ááŸáá·áº multirepo á¡ááœáẠáá¶á·ááá¯ážááŸá¯ ááŸáá·áº Docker Registry ááẠáááºážááŸáá·áº áááºááá¯ááºáááºá "; - «
ááᯠáááºááẠáá¯á¶ááŸáẠDockerfile ááᯠá¡áá¯á¶ážááŒá¯á werf ááœáẠDocker áá¯á¶áá»á¬ážááᯠáááºáá±á¬ááºááá¯ááºáá«ááŒá®á "á
- «
- «
werf - Kubernetes ááŸá CI/CD á¡ááœáẠáá»áœááºá¯ááºááá¯á·ááááááᬠ(ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºááŸáá·áº áá®áá®ááá¯á¡á á®áááºáá¶á á¬) "; - «
werf ááŸáá·áº GitLab CI ááŒáá·áº á¡áá»áá¯ážá¡á á¬ážáá° microservices áá»á¬ážááᯠáááºáá±á¬ááºááŒá®áž á¡áá¯á¶ážáá»áá«á "; - «
Helm 3 ááᯠááááºáááºááŒááºážá "á
source: www.habr.com