ΠΠ»Ρ Kubernetes Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ²: apply, edit, patch ΠΈ replace. Π‘ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ Π΄Π΅Π»Π°Π΅Ρ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, Π΅ΡΡΡ ΠΏΡΡΠ°Π½ΠΈΡΠ°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ.
ΠΡΠ»ΠΈ kubectl patch
, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ apply
ΠΈ patch
. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ
.
Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠ΅ΡΡΡΡΠ° Kubernetes (ΡΠ΅ΡΠ²ΠΈΡΠ°, deployment, ingress ΠΈ Ρ.Π΄.) ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅, ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠΈΡΠ»ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊ.
Kubernetes CLI
ΠΡΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ Kubernetes ΡΠ΅ΡΠ΅Π· CLI, ΡΠΎ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ apply
ΠΈ edit
. ΠΠΎΠΌΠ°Π½Π΄Π° apply
ΡΠΈΡΠ°Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠ° ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΈ Π΄Π΅Π»Π°Π΅Ρ "upsert" Π² ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes, Ρ.Π΅. ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ΅ΡΡΡΡ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ, ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π΅Π³ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΠΎΠΌΠ°Π½Π΄Π° edit
ΡΠΈΡΠ°Π΅Ρ ΡΠ΅ΡΡΡΡ ΡΠ΅ΡΠ΅Π· API, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠΈΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠ° Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΡΠ΅ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ», kubectl
ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· API, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π±ΠΎΡΠ»ΠΈΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΡΡΡΡ.
ΠΠ΅ Π²ΡΠ΅ Π·Π½Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ patch
ΠΈ replace
. ΠΠΎΠΌΠ°Π½Π΄Π° patch
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΡΡΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ ΡΠ°ΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΠΎΠΌΠ°Π½Π΄Π° replace
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ edit
, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΡΡΠ½ΡΡ: Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΡΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ kubectl get -o yaml
, ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΅, Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ replace
Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ° ΠΏΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠΎΠΌΠ°Π½Π΄Π° replace
Π½Π΅ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΡΠ΅ΡΡΡΡΠ° ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
Kubernetes API
ΠΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ CoreV1().Pods().Update()
, replaceNamespacedService
ΠΈΠ»ΠΈ patch_namespaced_deployment
, Π΅ΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· PUT
ΠΈ PATCH
. ΠΡΠΈ ΡΡΠΎΠΌ update
ΠΈ replace
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ PUT
, Π° patch
, ΠΊΠ°ΠΊ Π±Ρ ΡΡΠΎ Π½Π΅ Π±ΡΠ»ΠΎ Π±Π°Π½Π°Π»ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ PATCH
.
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ kubectl
ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· API. ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, kubectl
β ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠ° ΠΏΠΎΠ²Π΅ΡΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Go, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ°Ρ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠ΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΠΌ ΠΈ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π² Π΄ΠΎΠ²Π΅ΡΠΎΠΊ ΠΊ ΡΡΠ°ΡΠ½ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ API. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΠΌΠ΅ΡΠΎΠ΄ apply
Π½Π΅ Π±ΡΠ» ΡΠΏΠΎΠΌΡΠ½ΡΡ Π²ΡΡΠ΅ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ Π°Π±Π·Π°ΡΠ΅. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ (ΠΌΠ°ΠΉ 2020, ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°) Π²ΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° kubectl apply
, Ρ.Π΅. ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠΎΠ΄Π° kubectl
. ΠΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΡΡΠΈΠ»ΠΈΡ apply
Π½Π° ΡΡΠΎΡΠΎΠ½Ρ API, Π½ΠΎ ΡΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ Π±Π΅ΡΠ°-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°ΡΠΏΠΈΡΡ Π½ΠΈΠΆΠ΅.
Patch ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ patch
, Π΅ΡΠ»ΠΈ Π²Ρ ΠΆΠ΅Π»Π°Π΅ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΡΡΡ. Π’Π°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ²Π΅ΡΡ
API Kubernetes, ΡΠ°ΠΊ ΠΈ kubectl
(Π½Π΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π²Π΅Π΄Ρ ΠΎΠ½ β ΠΎΠ±Π΅ΡΡΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°).
Π Π°Π±ΠΎΡΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΈ
ΠΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ kubectl
apply
, edit
ΠΈ patch
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ PATCH
Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ
HTTP Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠ»ΠΈ Π²Π½ΠΈΠΊΠ½ΡΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½Π΅Π΅ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠΎ Π²ΠΎ Π²ΡΠ΅Ρ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ patch
ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ Π½ΠΈΠΆΠ΅). ΠΠΎΠ΄Ρ
ΠΎΠ΄ strategic-merge patching ΠΏΡΡΠ°Π΅ΡΡΡ "ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ" ΠΏΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ. ΠΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΠΎΠ½ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠ°ΠΊ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ²Π»ΡΡΡΡΡ Π°Π΄Π΄ΠΈΡΠΈΠ²Π½ΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ patch
Ρ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° pod, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ΅Π΄Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠ΅Π΄Ρ, Π° Π½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡ
. ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² null Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ kubectl
Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ kubectl apply
, ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ kubectl apply
, ΡΡΠΎΠ±Ρ kubectl
ΠΌΠΎΠ³ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ apply
Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π΅ΠΌΡ Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ²Π½ΠΎ ΡΠ΄Π°Π»ΡΡΡΡΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ apply
Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠΎΠΌΠ°Π½Π΄Ρ edit
ΠΈ patch
Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ kubectl apply
ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΡΡ ΠΈ Π΄Π΅Π»Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· API Kubernetes, Π½ΠΎ Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ edit
ΠΈ patch
, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄ apply
, ΡΠΎ Π΅ΡΡΡ apply
Π½Π΅ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΈΡ
, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π²ΠΎ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ apply
(Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ edit
ΠΈ patch
Π΄Π΅Π»Π°ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
apply
, Π½ΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ β Π½Π΅Ρ).
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ apply
, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ edit
, ΡΠ°ΠΊ ΠΈ patch
, Π²ΡΠ±ΠΈΡΠ°Ρ ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ΄ Π²Π½ΠΎΡΠΈΠΌΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ. ΠΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° edit
Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊ apply
, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΡΠ»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ Π΅Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠ΄Π°Π»ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ· ΡΠ΅ΡΡΡΡΠ°. ΠΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² null Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ patch
, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ ΠΈΠ· ΡΠ΅ΡΡΡΡΠ°. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ strategic-merge patching ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½ΠΈΠΆΠ΅ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ
Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ².
Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, Π²Π΅Π΄ΡΡΠΈΠ΅ ΡΠ΅Π±Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ kubectl
, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ
Π²ΡΡΡΠ°Π²Π»ΡΡΡ content-type
Π² application/strategic-merge-patch+json
. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² null Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ kubectl patch
. ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌ.
ΠΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌ
Π Kubernetes ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄Π²Π° Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌ: kubectl patch --type=merge
. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ API Kubernetes ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ° PATCH
ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ content-type
Π² application/merge-patch+json
.
ΠΠΎΠ΄Ρ
ΠΎΠ΄ JSON patch Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ°ΡΡΠΈΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²Π½Π΅ΡΡΠΈ Π² ΡΠ΅ΡΡΡΡ, Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½ΠΎΡΠΈΠΌΠΎΠ³ΠΎ Π² ΡΠ΅ΡΡΡΡ. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΠΌΠΎΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²Π½ΠΎΡΠΈΠΌΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ Π·Π° ΡΡΠ΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ Π²Π½ΠΎΡΠΈΠΌΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ΄Π΅Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ, Π½Π΅ Kubernetes, ΡΠΎΡΠΌΠ°ΡΠ΅, Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΡΡΡΠ°. Π kubectl
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ JSON patch, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ kubectl patch --type=json
. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ API Kubernetes ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΏΡΠΎΡΠ° PATCH
ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ content-type
Π² application/json-patch+json
.
ΠΡΠΆΠ½Π° ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ replace
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»ΡΡΠ°ΡΡ
Π½ΡΠΆΠ½Π° ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΡΠ΅ΡΡΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ Π²Π½Π΅ΡΠ΅Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ° ΠΈ Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ. ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎΠΈΡ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΌΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ replace
. Π ΠΏΡΠΈΠΌΠ΅ΡΡ Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ConfigMap ΡΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌΡΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π²Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ patch
:
- A ΠΈ B ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° ΠΈΠ· API
- ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ "A" ΠΈΠ»ΠΈ "B" ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ "updated-by"
- Π ΡΡΡΡ Π±ΡΡΡΡΠ΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΡ
- B ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΡ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ A ΠΏΠΎΡΠ΅ΡΡΠ½ΠΎ. ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ patch
Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ, ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π΄Π²ΡΡ
, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ "updated-by" Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° "B" ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ "A". ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠΌ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° replace
:
- A ΠΈ B ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° ΠΈΠ· API
- ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ "A" ΠΈΠ»ΠΈ "B" ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ "updated-by"
- Π ΡΡΡΡ Π±ΡΡΡΡΠ΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΡ
- B ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΡΡΡ, Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅ΡΡΡ API, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π΅ΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠ° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
replace
Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΡΠ΅ΡΡΡΡΠ° Π² Kubernetes, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π΅ΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠ° Π±ΡΠ»Π° ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ replace ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ A.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΡΠ»ΡΡΠ°Π΅ B ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΡΠ΅ΡΡΡΡ, Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠ½ΠΎΠ²Π° ΡΠ΄Π΅Π»Π°ΡΡ replace
. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ Π½Π° Π΄Π²Π°, Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ "updated-by" Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ "AB" Π² ΠΊΠΎΠ½ΡΠ΅.
ΠΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ replace
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° Π²ΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΡΡΠ°. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ replace
, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠΉ, ΠΈΠ»ΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΠΊΠ°ΠΊ Π² apply
, Π° ΠΏΠΎΠ»Π½ΠΎΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ resourceVersion
Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ resourceVersion
ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π²Π°ΠΌΠΈ Π²Π΅ΡΡΠΈΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ, Π·Π°ΠΌΠ΅Π½Π° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π»ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ replace
β ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠ΅ΡΡΡΡ, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ kubectl
, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
$ kubectl get deployment my-deployment -o json
| jq '.spec.template.spec.containers[0].env[1].value = "new value"'
| kubectl replace -f -
ΠΡΠΈ ΡΡΠΎΠΌ ΡΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ deployment.yaml
Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ .metadata.resourceVersion
$ kubectl create -f deployment.yaml
$ kubectl replace -f deployment.yaml
ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΡΡΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ ΡΠΎΠΌΡ, ΠΎ ΡΠ΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π²ΡΡΠ΅, Ρ.Π΅. "Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ resourceVersion
Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ". Π£ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ ΡΠ°ΠΊ Π½Π΅Π²Π΅ΡΠ½ΠΎ? ΠΠ΅Ρ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅ΡΠ»ΠΈ kubectl
Π·Π°ΠΌΠ΅ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π½Π΅ ΡΠΊΠ°Π·Π°Π»ΠΈ resourceVersion
, ΠΎΠ½ ΠΏΡΠΎΡΠΈΡΠ°Π΅Ρ Π΅Π΅ ΠΈΠ· ΡΠ΅ΡΡΡΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²Π°ΠΌΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ replace
. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½Π°Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ, ΠΌΠ°Π³ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ kubectl
, Π½Π΅ ΡΡΠΎΠΈΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π½Π΅Π΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ
Ρ API. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠ°, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π΅Π΅ ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ PUT
Π·Π°ΠΏΡΠΎΡ.
ΠΠ΅Π»ΡΠ·Ρ ΡΠ΄Π΅Π»Π°ΡΡ patch β Π΄Π΅Π»Π°Π΅ΠΌ replace
ΠΠ½ΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π²Π½Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ API. Π ΡΡΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΡΡΡΡ, ΡΠ΄Π°Π»ΡΡ ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π΅Π³ΠΎ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ kubectl replace --force
. ΠΠ°ΠΏΡΡΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΡ
Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π API Π½Π΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° "ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ", Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ ΡΠ΅ΡΠ΅Π· API, Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°Π΄ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ΅ΡΡΡΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ Π΄Π»Ρ Π½Π΅Π³ΠΎ gracePeriodSeconds
Π² Π½ΠΎΠ»Ρ (0) ΠΈ propagationPolicy
Π² βBackgroundβ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΎΡ ΡΠ΅ΡΡΡΡ Ρ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ.
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ΅Π½, ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
Apply Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°
ΠΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π²ΡΡΠ΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Kubernetes ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ apply
ΠΈΠ· kubectl
Π² API Kubernetes. ΠΠΎΠ³ΠΈΠΊΠ° apply
Π΄ΠΎΡΡΡΠΏΠ½Π° Π² Kubernetes 1.18 ΡΠ΅ΡΠ΅Π· kubectl apply --server-side
ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· API, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ PATCH
Ρ content-type
application/apply-patch+YAML
.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: JSON ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ YAML, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π² Π²ΠΈΠ΄Π΅ JSON, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ
content-type
Π±ΡΠ΄Π΅Ρapplication/apply-patch+yaml
.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° kubectl
ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ΅ΡΠ΅Π· API, apply
Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΡ
Π·Π° ΠΏΠΎΠ»Ρ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π·ΡΠ΅ΡΠ°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π΄Π»Ρ Π΅Π΅ Π±Π΅ΡΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π΅ΡΠ»ΠΈ apply
Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, kubectl, Pulumi ΠΈΠ»ΠΈ Terraform, GitOps, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΌΠΎΠΏΠΈΡΠ½ΡΡ
ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΡΠΎΠ³ΠΈ
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎΡ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΡΠ°Π·Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ Π±ΡΠ» ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ Π²Π°Ρ. ΠΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠΈ Π½Π΅ ΠΏΡΠΎΡΡΠΎ apply ΠΏΡΠΎΡΠΈΠ² replace, Π²Π΅Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ apply, edit, patch ΠΈΠ»ΠΈ replace. ΠΠ΅Π΄Ρ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ»Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ replace, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ strategic-merge patch ΡΠ΅ΡΠ΅Π· apply. Π ΠΊΡΠ°ΠΉΠ½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Ρ Π½Π° ΡΠΎ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ Π΄ΠΎΠ²Π΅ΡΡΡΡ Google ΠΈΠ»ΠΈ StackOerflow ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ "kubernetes apply vs replace". ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΡΠ° ΡΡΠ°ΡΡΡ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΡΠ²Π΅Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com