Π‘Π»ΡΡΠΈΠ»ΠΎΡΡ ΡΠΎ, ΡΠ΅Π³ΠΎ ΠΌΡ (ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ) Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π°Π»ΠΈ:
ΠΡΠ»ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΊΠΎΡΠΎΡΠΊΠΎ, ΡΠΎ ΡΡΠ°Π²ΠΈΠΌ WERF_THREE_WAY_MERGE=enabled
β ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π΅ΠΏΠ»ΠΎΠΉ Β«ΠΊΠ°ΠΊ Π² kubectl apply
Β», ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡΠΌΠΈ Π½Π° Helm 2 ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅.
ΠΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½ΡΠΌ Ρ ΡΠ΅ΠΎΡΠΈΠΈ: ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ°ΠΊΠΎΠ΅ 3-way-merge-ΠΏΠ°ΡΡΠΈ, ΠΊΠ°ΠΊ Π»ΡΠ΄ΠΈ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ Ρ ΠΈΡ
Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ Π²Π°ΠΆΠ½Ρ Π² CI/CD-ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ
Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ Π½Π° Π±Π°Π·Π΅ Kubernetes? Π ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ β ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ 3-way-merge Π² werf, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΈΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ 3-way-merge-ΠΏΠ°ΡΡ?
ΠΡΠ°ΠΊ, Π½Π°ΡΠ½Π΅ΠΌ Ρ Π·Π°Π΄Π°ΡΠΈ Π²ΡΠΊΠ°ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ², ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² YAML-ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°Ρ , Π² Kubernetes.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Kubernetes API ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ: create, patch, replace ΠΈ delete. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Ρ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠΉ Π²ΡΠΊΠ°Ρ ΡΠ΅ΡΡΡΡΠΎΠ² Π² ΠΊΠ»Π°ΡΡΠ΅Ρ. ΠΠ°ΠΊ?
ΠΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 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
- ΠΈ Ρ.Π΄.
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Π·Π³Π»ΡΠ΄Π°. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
- ΠΠ³ΠΎ ΡΡΠΆΠ΅Π»ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ.
- ΠΠ°ΠΊ ΠΎΡΡΠ°Π·ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² Git? ΠΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ review ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ?
- ΠΠ°ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ΅?
- β¦
ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠ»ΠΎΡ
ΠΎ ΡΠΎΡΠ΅ΡΠ°Π΅ΡΡΡ Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄Π° (IaC; ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ create, get, replace ΠΈ delete
Π‘ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ: ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ create
Ρ kube api ΠΈ ΡΠ΅ΡΡΡΡ ΡΠΎΠ·Π΄Π°Π½. YAML-ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΡΡ Π² Git, Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ kubectl create -f manifest.yaml
.
Π‘ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ: ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΡ ΠΆΠ΅ manifest.yaml
ΠΈΠ· Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ kubectl delete -f manifest.yaml
.
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ replace
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠ° Π½Π° Π½ΠΎΠ²ΡΡ, Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΡΡΡ, Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ get
, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ replace
. Π kube apiserver Π²ΡΡΡΠΎΠ΅Π½ get
ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΡΡ, ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ replace
Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ.
Π§ΡΠΎΠ±Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² Git ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ replace, Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ get
, ΠΌΠ΅ΡΠΆΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ ΠΈΠ· GitβΠ° Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ replace
. Π¨ΡΠ°ΡΠ½ΠΎ kubectl ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ kubectl replace -f manifest.yaml
, Π³Π΄Π΅ manifest.yaml
β ΡΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΉ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ β ΡΠΌΠ΅ΡΠΆΠ΅Π½Π½ΡΠΉ) ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ merge ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠ², Π° ΡΡΠΎ Π΄Π΅Π»ΠΎ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠ΅β¦
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Ρ
ΠΎΡΡ manifest.yaml
ΠΈ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² Git, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π½Π°ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅, Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΅Π³ΠΎ β ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠΎΡΡ.
ΠΡΠΎΠ³ΠΎ: ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠΉ Π²ΡΠΊΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ create, replace ΠΈ delete, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ² Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π² GitβΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΉ CI/CD?
Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΠΌΠΎΠΆΠ΅ΠΌβ¦ ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ merge ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΎΠ±Π²ΡΠ·ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ:
- ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅,
- Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ°,
- ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ Π΅Π³ΠΎ.
ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π½Π°Π΄ΠΎ ΡΡΠ΅ΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΡΡ ΠΌΠΎΠ³ ΠΏΠΎΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ get
ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉ optimistic locking β Π΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
ΠΠ΄Π½Π°ΠΊΠΎ Π·Π°ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΡ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄, ΠΊΠΎΠ³Π΄Π° kube-apiserver ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ²: ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ patch
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ½ΠΈΠΌΠ°Π΅Ρ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ?
Patch
ΠΠΎΡ ΠΌΡ ΠΈ Π΄ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Π΄ΠΎ ΠΏΠ°ΡΡΠ΅ΠΉ.
ΠΠ°ΡΡΠΈ β ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π² Kubernetes. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ patch
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎ:
- ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ kube-apiserver ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π°ΡΡ ΠΏΠ°ΡΡ Π² JSON-Π²ΠΈΠ΄Π΅ ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ,
- Π° apiserver ΡΠ°ΠΌ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΡΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ Π΅Π³ΠΎ ΠΊ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΌΡ Π²ΠΈΠ΄Ρ.
Optimistic locking Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½Π°Ρ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ replace, Ρ ΠΎΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
create
ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ ΠΈΠ· GitβΠ°, - Ρ ΠΏΠΎΠΌΠΎΡΡΡ
delete
β ΡΠ΄Π°Π»ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, - Ρ ΠΏΠΎΠΌΠΎΡΡΡ
patch
β ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΡΠΈΠ²ΠΎΠ΄Ρ Π΅Π³ΠΎ ΠΊ Π²ΠΈΠ΄Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ Π² Git.
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠ°ΡΡ!
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠ°ΡΡΠΈ Π² Helm 2: 2-way-merge
ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΠ΅Π»ΠΈΠ·Π° Helm Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ create
Π΄Π»Ρ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ°ΡΡΠ°.
ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠ΅Π»ΠΈΠ·Π° Helm Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°:
- ΡΡΠΈΡΠ°Π΅Ρ ΠΏΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΡΠ΅ΡΡΡΡΠ° ΠΈΠ· ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ ΡΠ°ΡΡΠ° ΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΡΠ°ΡΡΠ°,
- ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠΎΡ ΠΏΠ°ΡΡ.
Π’Π°ΠΊΠΎΠΉ ΠΏΠ°ΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π½Π°Π·ΡΠ²Π°ΡΡ 2-way-merge patch, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠ°ΡΡΠ²ΡΡΡ 2 ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°:
- ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ΡΠ΅ΡΡΡΡΠ° ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΈΠ·Π°,
- ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ΡΠ΅ΡΡΡΡΠ° ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΡΡΠ°.
ΠΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ delete
Π² kube apiserver Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π΅, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ.
ΠΠΎΠ΄Ρ ΠΎΠ΄ Ρ 2 way merge patch ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: ΠΎΠ½ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΡΡΡΡΠ° Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΈ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Π² Git.
ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅
- Π Git, Π² ΡΠ°ΡΡΠ΅ Ρ
ΡΠ°Π½ΠΈΡΡΡ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ»Π΅
image
Ρ Deployment ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ubuntu:18.04
. - ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π·
kubectl edit
ΠΏΠΎΠΌΠ΅Π½ΡΠ» Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π½Π°ubuntu:19.04
. - ΠΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΌ Π΄Π΅ΠΏΠ»ΠΎΠ΅ ΡΠ°ΡΡΠ° Helm Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ»Π΅
image
Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅Π»ΠΈΠ·Π° ΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ°ΡΡΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ. - ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΠΏΠ»ΠΎΡ
image
ΠΎΡΡΠ°Π΅ΡΡΡubuntu:19.04
, Ρ ΠΎΡΡ Π² ΡΠ°ΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎubuntu:18.04
.
ΠΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΡΠ΅ΡΡΠ»ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΡΡΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ?
ΠΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΡΠ΅ΡΡΡΡΠ° Π² ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΈ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΠΈΠ· Git ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ/Π»Π΅ΠΉΠ±Π»Ρ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌΡΠ΅ ΠΈΠ· ΡΠ΅ΡΡΡΡΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ. ΠΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ Π½Π΅ Ρ ΠΎΡΠΈΠΌ Π΄Π΅ΡΠΆΠ°ΡΡ Π² Git. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ Π²ΡΠΊΠ°ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π»ΠΈ Π² GitβΠ΅, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°: ΠΏΡΠΈ Π²ΡΠΊΠ°ΡΠ΅ ΡΠ΅ΡΡΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ ΠΈΠ· GitβΠ° (ΠΈΠ»ΠΈ Π±ΡΠ»ΠΈ ΠΏΡΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ).
3-way-merge patch
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ
- Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΡΠ΅Π»Π΅Π²ΡΡ Π²Π΅ΡΡΠΈΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΡΠ°;
- ΡΠ°Π½Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π²ΡΠΈΠ΅ ΠΏΠΎΠ»Ρ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΉ β ΠΎΠ±Π½ΡΠ»ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΡΠ°;
- ΠΏΠΎΠ»Ρ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠ΅ΡΡ ΠΎΡ ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°, β ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΡΠ°.
ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΡΠΈ kubectl apply
:
- ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°,
- ΡΠ΅Π»Π΅Π²Π°Ρ β Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ YAML-ΡΠ°ΠΉΠ»Π°,
- ΡΠ΅ΠΊΡΡΠ°Ρ β ΠΈΠ· ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Ρ ΡΠ΅ΠΎΡΠΈΠ΅ΠΉ, ΠΏΠΎΡΠ° ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΆΠ΅ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π² werf.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² werf
Π Π°Π½Π΅Π΅ werf, ΠΊΠ°ΠΊ ΠΈ Helm 2, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» 2-way-merge-ΠΏΠ°ΡΡΠΈ.
Repair patch
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π½ΠΎΠ²ΡΠΉ Π²ΠΈΠ΄ ΠΏΠ°ΡΡΠ΅ΠΉ β 3-way-merge, β ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΠΌΡ Π²Π²Π΅Π»ΠΈ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ repair-ΠΏΠ°ΡΡΠΈ.
ΠΡΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ 2-way-merge-ΠΏΠ°ΡΡ, Π½ΠΎ werf Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π» ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² Git (ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅).
Π ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΠ½Ρ
ΡΠΎΠ½Π°, Π² ΠΊΠΎΠ½ΡΠ΅ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ WARNING Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠ°ΡΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π΄ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΠ΅ΡΡΡΡ ΠΊ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Π²ΠΈΠ΄Ρ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΡ ΠΏΠ°ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ werf.io/repair-patch
. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΊΠ°ΠΌΠΈ ΡΠ°ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡ ΡΡΠΎΡ ΠΏΠ°ΡΡ: werf Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ repair-ΠΏΠ°ΡΡΠ΅ΠΉ β ΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΡΡΠ°ΡΡ Π½Π° Π΄Π΅Π»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΡΠ΅ΠΉ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ 3-way-merge, Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΈ ΠΏΠ°ΡΡΠΈ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
3-way-merge patch ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ²
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ 1 Π΄Π΅ΠΊΠ°Π±ΡΡ 2019 Π³. beta- ΠΈ alpha-Π²Π΅ΡΡΠΈΠΈ werf Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ 3-way-merge-ΠΏΠ°ΡΡΠΈ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ Helm-ΡΠ΅Π»ΠΈΠ·ΠΎΠ², Π²ΡΠΊΠ°ΡΡΠ²Π°Π΅ΠΌΡΡ ΡΠ΅ΡΠ΅Π· werf. Π£ΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ 2-way-merge + repair-ΠΏΠ°ΡΡΠ°ΠΌΠΈ.
ΠΠ°Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π½ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ WERF_THREE_WAY_MERGE_MODE=onlyNewReleases
ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΠΈΡΠ° ΠΏΠΎΡΠ²Π»ΡΠ»Π°ΡΡ Π² werf Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ΅Π»ΠΈΠ·ΠΎΠ²: Π² Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π»Π΅ ΠΎΠ½Π° ΡΡΠ°Π»Π° Π³ΠΎΡΠΎΠ²ΠΎΠΉ Ρ Π²Π΅ΡΡΠΈΠΈ
3-way-merge patch Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ΅Π»ΠΈΠ·ΠΎΠ²
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ 15 Π΄Π΅ΠΊΠ°Π±ΡΡ 2019 Π³. beta- ΠΈ alpha-Π²Π΅ΡΡΠΈΠΈ werf Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ 3-way-merge-ΠΏΠ°ΡΡΠΈ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ΅Π»ΠΈΠ·ΠΎΠ².
ΠΠ°Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π½ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ WERF_THREE_WAY_MERGE_MODE=enabled
ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ.
ΠΠ°ΠΊ Π±ΡΡΡ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ²?
Π Kubernetes ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 2 ΡΠΈΠΏΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ: HPA (Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ) ΠΈ VPA (Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ).
ΠΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊ, Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ². Π ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊ, ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠ° (ΡΠΌ. spec.replicas
ΠΈΠ»ΠΈ spec.containers[].resources.limits.cpu
, spec.containers[].resources.limits.memory
ΠΈ
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΡΡΡΡ Π² ΡΠ°ΡΡΠ΅ ΡΠ°ΠΊ, ΡΡΠΎ Π² Π½Π΅ΠΌ Π±ΡΠ΄ΡΡ ΡΠΊΠ°Π·Π°Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΈΠ»ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΠΌ ΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° Π±ΡΠ΄ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π°Π²ΡΠΎΡΠΊΠ΅ΠΉΠ»Π΅ΡΡ, ΡΠΎ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄Π΅ΠΏΠ»ΠΎΠ΅ 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-ΠΏΠ°ΡΡΠ΅ΠΉ.
Adoption ΡΠ΅ΡΡΡΡΠΎΠ² Π² werf
ΠΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ 3-way-merge-ΠΏΠ°ΡΡΠ°ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΌ ΡΡΠ°Π·Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ ΡΠΈΡΡ, ΠΊΠ°ΠΊ adoption ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² Π² Helm-ΡΠ΅Π»ΠΈΠ·.
Helm 2 ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: Π½Π΅Π»ΡΠ·Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ ΡΠ°ΡΡΠ° ΡΠ΅ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅, Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Ρ Π½ΡΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° (ΡΠΌ. kubectl edit
):
"werf.io/allow-adoption-by-release": RELEASE_NAME
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΅ΡΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ Π² ΡΠ°ΡΡΠ΅ ΠΈ ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π΄Π΅ΠΏΠ»ΠΎΠ΅ werfβΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π° Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ΅ΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΡΡ Π² ΡΡΠΎΡ ΡΠ΅Π»ΠΈΠ· ΠΈ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΠΏΠΎΠ΄ Π΅Π³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠ° Π² ΡΠ΅Π»ΠΈΠ· werf ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° ΠΈΠ· ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ Π² ΡΠ°ΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ ΠΆΠ΅ 3-way-merge-ΠΏΠ°ΡΡΠΈ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π½Π°ΡΡΡΠΎΠΉΠΊΠ° WERF_THREE_WAY_MERGE_MODE
Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° adoption ΡΠ΅ΡΡΡΡΠΎΠ² β Π² ΡΠ»ΡΡΠ°Π΅ adoption Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ 3-way-merge-ΠΏΠ°ΡΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ β Π²
ΠΡΠ²ΠΎΠ΄Ρ ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΠΏΠ»Π°Π½Ρ
ΠΠ°Π΄Π΅ΡΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΡΡΠ°Π»ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ 3-way-merge-ΠΏΠ°ΡΡΠΈ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΊ Π½ΠΈΠΌ ΠΏΡΠΈΡΠ»ΠΈ. Π‘ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° werf ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°Π»Π° Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π½Π° ΠΏΡΡΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Helm-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π΄Π΅ΠΏΠ»ΠΎΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΡΡΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Helm 2. ΠΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΌ, Π±ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΡΠΈΡΠ° adoptionβΠ° ΡΠΆΠ΅ Π²ΡΠΊΠ°ΡΠ΅Π½Π½ΡΡ Kubernetes-ΡΠ΅ΡΡΡΡΠΎΠ² Π² Helm-ΡΠ΅Π»ΠΈΠ·.
Π Helm-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ Π΄Π΅ΠΏΠ»ΠΎΠ΅ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Go-ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², ΠΈ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈΡ ΡΠ΅ΡΠ°ΡΡ.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ adoptionβΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΠΉΡΠΈ Π½Π°
Helm 3
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ Π΄ΠΎΡΡΠΎΠΉΠ½Π°
Werf ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΆΠ΅ ΠΈΠ·Π±Π°Π²ΠΈΠ»ΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Tiller, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΠ»ΡΡ Π½Π° 3-way-merge ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ werf Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ Helm 3 Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ werf 1.1 ΠΈΠ»ΠΈ werf 1.2 (Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, Π³Π»Π°Π²Π½Π°Ρ Π²Π΅ΡΡΠΈΡ werf β 1.0; ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ werf ΡΠΌ.
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Π¦ΠΈΠΊΠ» Π·Π°ΠΌΠ΅ΡΠΎΠΊ ΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡΡ
Π² werf:
- Β«
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ werf Π΄Π»Ρ Π²ΡΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ Helm-ΡΠ°ΡΡΠΎΠ² Β»; - Β«
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° monorepo ΠΈ multirepo Π² werf ΠΈ ΠΏΡΠΈ ΡΡΠΌ Π·Π΄Π΅ΡΡ Docker Registry Β»; - Β«
Π‘ΠΎΠ±ΠΈΡΠ°ΡΡ Docker-ΠΎΠ±ΡΠ°Π·Ρ Π² werf ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΌΡ Dockerfile Β».
- Β«
- Β«
werf β Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ CI/CD Π² Kubernetes (ΠΎΠ±Π·ΠΎΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π°) Β»; - Β«
Π‘Π±ΠΎΡΠΊΠ° ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ werf ΠΈ GitLab CI Β»; - Β«
ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ Helm 3 Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com