Kubernetes ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠΏΡΠΈΠΈ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ: ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅, ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ ΠΈ Π·Π°ΠΌΡΠ½Π°. ΠΠΌΠ° ΠΎΠ±ΡΡΠΊΠ²Π°Π½Π΅ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ ΠΈ ΠΊΠΎΠ³Π° Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. ΠΠ΅ΠΊΠ° Π΄Π° Π³ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ.
Π°ΠΊΠΎ kubectl patch
, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ Π²ΠΊΠ»ΡΡΠ²Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ apply
ΠΈ patch
. Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²ΡΡΠΊΠ° ΠΎΡ ΡΡΡ
.
ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΡΠ΅ΡΡΡΡ Π½Π° Kubernetes (ΡΡΠ»ΡΠ³Π°, Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅, Π²Π»ΠΈΠ·Π°Π½Π΅ ΠΈ Ρ.Π½.) ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΡΠΎΠ·ΠΈ ΡΠ΅ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ Π±Π΅Π»Π΅ΠΆΠΊΠ°, ΡΠ²Π΅Π»ΠΈΡΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π½Π°ΠΌΠ°Π»Π΅ΡΠ΅ Π±ΡΠΎΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅.
Kubernetes CLI
ΠΠΊΠΎ Π²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π½Π° Kubernetes ΡΡΠ΅Π· CLI, Π²Π΅ΡΠ΅ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ apply
ΠΈ edit
. ΠΠΊΠΈΠΏ apply
ΡΠ΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ° ΠΎΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΏΡΠ°Π²ΠΈ "upsert" ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes, Ρ.Π΅. ΡΡΠ·Π΄Π°Π²Π° ΡΠ΅ΡΡΡΡΠ°, Π°ΠΊΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ Π³ΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°, Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°. ΠΠΊΠΈΠΏ edit
ΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡΡ ΡΡΠ΅Π· API, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ° Π² Π»ΠΎΠΊΠ°Π»Π΅Π½ ΡΠ°ΠΉΠ», ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΎΡΠ²Π°ΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ ΠΈ Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ ΡΠ°ΠΉΠ»Π°, kubectl
ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΡΠ΅Π· API, ΠΊΠΎΠΉΡΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΊΡΠΌ ΡΠ΅ΡΡΡΡΠ°.
ΠΠ΅ Π²ΡΠ΅ΠΊΠΈ Π·Π½Π°Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ patch
ΠΈ replace
. ΠΠΊΠΈΠΏ patch
Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°ΡΡ ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄. ΠΠΊΠΈΠΏ replace
ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½ ΠΊΠ°ΡΠΎ edit
, Π½ΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΡΡΠ½ΠΎ: ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ kubectl get -o yaml
, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ replace
Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡ ΡΠΏΠΎΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΠΊΠΈΠΏ replace
Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ, Π°ΠΊΠΎ Π½Π°ΡΡΡΠΏΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ ΠΈ ΠΏΠΎΠ΄ΠΌΡΠ½Π°ΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ°.
API Π½Π° Kubernetes
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ 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
, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠΎ ΠΊΠ°ΠΊ ΠΈ Π΄Π²Π΅ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°Π±ΠΎΡΡΡ Π²ΡΡΡ
Ρ Kubernetes API ΠΈ kubectl
(Π½Π΅ Π΅ ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°ΡΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΡΠΈΠ±Π». ΠΏΡΠ΅Π²ΠΎΠ΄Π°Ρ).
Π Π°Π±ΠΎΡΠ΅ΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΈ
ΠΡΠΈΡΠΊΠΈ ΠΎΡΠ±ΠΎΡΠΈ kubectl
apply
, edit
ΠΈ patch
ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° PATCH
Π² HTTP Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠ΅ΡΡΡΡ. ΠΠΊΠΎ ΡΠ΅ Π·Π°Π΄ΡΠ»Π±ΠΎΡΠΈΡΠ΅ Π² ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ, ΡΠΎΠ³Π°Π²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° patch
ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈ (ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρ). ΠΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ Π·Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° "ΠΎΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠ°ΡΠ°" ΡΡΠ΅Π· ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΠΎ-ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΡΠΎΠΉ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° ΠΊΠ°ΠΊΡΠΎ ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ° ΡΠΊΠ»ΠΎΠ½Π½ΠΈ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° patch
Ρ Π½ΠΎΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π° pod, ΠΊΠ°ΡΠ° ΡΠ°Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°. ΠΠ° Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π΅ΡΠ΅ ΡΡΠ΅Π· ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π΄Π° Π±ΡΠ΄Π΅ Π½ΡΠ»Π° Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΠΎΠΉ ΠΎΡ ΠΎΡΠ±ΠΎΡΠΈΡΠ΅ 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
, ΠΊΠ°ΡΠΎ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, ΠΊΠΎΡΡΠΎ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π°ΡΠ° ΠΏΡΠΎΠΌΡΠ½Π°. ΠΠΎΠ³Π°ΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° BOM, Π΄Π²Π°ΡΠ° ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΡΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ. ΠΡΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΠ»ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ² edit
ΡΠ΅ Π΄ΡΡΠΆΠΈ ΠΊΠ°ΡΠΎ Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ apply
, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΊΠ°ΠΊΠ²Π° Π΅ Π±ΠΈΠ»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΉ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π΅ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ² ΠΎΡ ΡΠ΅ΡΡΡΡ. Π’ΡΡΠ±Π²Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π½Π° Π½ΡΠ»Π° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π·Π° patch
Π·Π° Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π΅ΡΠ΅ ΠΎΡ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠ΅ΠΌΠ°Ρ
Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΠΌΠ°ΡΠΈΠ² ΡΡΠ΅Π· ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ, Π·Π°ΡΠΎΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅. ΠΠΈΠΆΡΠ΅ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈ Π·Π° Π½Π°Π΄Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρ Π·Π° ΠΏΠΎ-ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΈ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΈ.
ΠΠ° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π΄ΡΡΠΆΠ°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ΠΏΠΎ-Π³ΠΎΡΠ΅ kubectl
, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ Π² Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ content-type
Π² application/strategic-merge-patch+json
. ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π΅ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΡΡΠ±Π²Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° null ΠΏΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½ kubectl patch
. ΠΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π΅ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΠΌΠ°ΡΠΈΠ², ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΊΡΠΌ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅.
ΠΡΡΠ³ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
Kubernetes ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π΄Π²Π° Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅: kubectl patch --type=merge
. ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ Kubernetes API, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° Π·Π°ΡΠ²ΠΊΠ° PATCH
ΠΈ ΠΌΠΎΠ½ΡΠ°ΠΆ content-type
Π² application/merge-patch+json
.
ΠΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ Π·Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ Π½Π° JSON, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°ΡΡΠΈΡΠ½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π² ΡΠ΅ΡΡΡΡΠ°, ΠΊΠ°ΡΠΎ ΠΌΠ°ΡΠΈΠ², Π² ΠΊΠΎΠΉΡΠΎ Π²ΡΠ΅ΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΠΌΠ°ΡΠΈΠ²Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Π² ΡΠ΅ΡΡΡΡΠ°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π΅ ΠΏΠΎ-Π³ΡΠ²ΠΊΠ°Π² ΠΈ ΠΌΠΎΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΈΠ·ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π½ΠΎ Ρ ΡΠ΅Π½Π°ΡΠ° Π½Π° ΠΈΠ·Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠΎΡΠΌΠ°Ρ, ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΎΡ Kubernetes, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΠ°ΡΡΠΈΡΠ½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠ°. IN kubectl
ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ JSON ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° kubectl patch --type=json
. ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Kubernetes API, ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° Π·Π°ΡΠ²ΠΊΠ° PATCH
ΠΈ ΠΌΠΎΠ½ΡΠ°ΠΆ content-type
Π² application/json-patch+json
.
ΠΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠ²Π΅ΡΠ΅Π½ΠΎΡΡ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ replace
Π Π½ΡΠΊΠΎΠΈ ΡΠ»ΡΡΠ°ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ, ΡΠ΅ Π½Π΅ ΡΠ° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π΄Π°Π΄Π΅Π½ ΡΠ΅ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ΡΡΡΡΡΡ Π΅ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½, ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½. Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π°ΡΠΎΠΌΠ΅Π½. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ, Π·Π° Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ replace
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ConfigMap Ρ Π±ΡΠΎΡΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ, ΡΠ΅ Π΄Π²Π° ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π±ΡΠΎΡΡΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π°Π³ΡΠ±Π° Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ°. ΠΠ° Π΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°ΡΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠΈ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° patch
:
- A ΠΈ B ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠ° ΠΎΡ API
- ΠΡΠ΅ΠΊΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ°, ΠΊΠ°ΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Π±ΡΠΎΡΡΠ° Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Ρ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ βAβ ΠΈΠ»ΠΈ βBβ ΠΊΡΠΌ Π±Π΅Π»Π΅ΠΆΠΊΠ°ΡΠ° βΠ°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΎΡβ.
- Π Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ΅ΡΡΡΡΠ° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ
- B Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ΅ΡΡΡΡΠ°
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ A ΡΠ΅ Π³ΡΠ±ΠΈ. ΠΠΎΡΠ»Π΅Π΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ patch
ΠΏΠ΅ΡΠ΅Π»ΠΈ, Π±ΡΠΎΡΡΡΡ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Ρ Π΅Π΄Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ Ρ Π΄Π²Π΅ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π±Π΅Π»Π΅ΠΆΠΊΠ°ΡΠ° "Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΎΡ" Π·Π°Π²ΡΡΡΠ²Π° Ρ "B" ΠΈ Π½Π΅ ΡΡΠ΄ΡΡΠΆΠ° "A". ΠΠ΅ΠΊΠ° ΡΡΠ°Π²Π½ΠΈΠΌ Π³ΠΎΡΠ½ΠΎΡΠΎ Ρ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° replace
:
- A ΠΈ B ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠ° ΠΎΡ API
- ΠΡΠ΅ΠΊΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ°, ΠΊΠ°ΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Π±ΡΠΎΡΡΠ° Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Ρ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ βAβ ΠΈΠ»ΠΈ βBβ ΠΊΡΠΌ Π±Π΅Π»Π΅ΠΆΠΊΠ°ΡΠ° βΠ°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΎΡβ.
- Π Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ΅ΡΡΡΡΠ° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ
- B ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ΅ΡΡΡΡΠ°, Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π΅ ΠΎΡΡ
Π²ΡΡΠ»Π΅Π½Π° ΠΎΡ API, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ° Π΅ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ°
replace
Π½Π΅ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠ° Π² Kubernetes, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ° Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π·Π° Π·Π°ΠΌΡΠ½Π° Π½Π° A.
Π Π³ΠΎΡΠ½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ B ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΡΠ΅ΡΡΡΡΠ°, Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π½ΠΎΠ²ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π΄Π° ΠΎΠΏΠΈΡΠ° ΠΎΡΠ½ΠΎΠ²ΠΎ replace
. Π’ΠΎΠ²Π° ΡΠ΅ Π½Π°ΠΊΠ°ΡΠ° Π±ΡΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ Ρ Π΄Π²Π΅ ΠΈ Π±Π΅Π»Π΅ΠΆΠΊΠ°ΡΠ° βΠ°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΎΡβ Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π° β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
ΠΈΡΠΊΠ°Π½Π΅.
ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΡΡΠΏΠΊΠ° β Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠΌ Π·Π°ΠΌΡΠ½Π°
ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½ΡΠΊΠΎΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΠΎΡ API. Π ΡΠ΅Π·ΠΈ ΡΠ»ΡΡΠ°ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠ°, ΠΊΠ°ΡΠΎ Π³ΠΎ ΠΈΠ·ΡΡΠΈΠ΅ΡΠ΅ ΠΈ ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ. Π’ΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° kubectl replace --force
. ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π³ΠΈ ΡΡΠ·Π΄Π°Π²Π° ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. Π API Π½ΡΠΌΠ° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡ Π·Π° βΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½Π° Π·Π°ΠΌΡΠ½Π°β ΠΈ Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π° ΡΡΠ΅Π· API, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΡΠ΅ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΡΠΈΠ΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠ°, ΠΊΠ°ΡΠΎ Π½Π°ΡΡΡΠΎΠΈΡΠ΅ Π·Π° Π½Π΅Π³ΠΎ gracePeriodSeconds
Π΄ΠΎ Π½ΡΠ»Π° (0) ΠΈ propagationPolicy
Π²ΡΠ² βΠ€ΠΎΠ½β ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΡΠΎΠ·ΠΈ ΡΠ΅ΡΡΡΡ Ρ ΠΆΠ΅Π»Π°Π½Π°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΎΠΏΠ°ΡΠ΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΡΠΈΠ»ΠΎΠΆΠ΅ΡΠ΅ ΠΎΡ ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°
ΠΠ°ΠΊΡΠΎ Π±Π΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° 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, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ
ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅, ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΊΡΠ°ΡΡΠΊ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π΅ Π±ΠΈΠ» ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π·Π° Π²Π°Ρ. ΠΠΎΠ±ΡΠ΅ Π΅ Π΄Π° Π·Π½Π°Π΅ΡΠ΅, ΡΠ΅ Π½Π΅ Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ ΡΡΠ΅ΡΡ Π·Π°ΠΌΡΠ½Π°; Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΡΡΡ ΡΡΠ΅Π· ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅, ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΌΡΠ½Π°. Π ΠΊΡΠ°Ρ Π½Π° ΠΊΡΠ°ΠΈΡΠ°ΡΠ°, ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠΌΠ° ΡΠ²ΠΎΡ ΠΎΠ±Π»Π°ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ° Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π΅ Π·Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½Π΅; Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ Π·Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅ ΡΡΠ΅Π· ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅. ΠΠ°ΠΉ-ΠΌΠ°Π»ΠΊΠΎΡΠΎ ΠΎΡΠ°ΠΊΠ²Π°ΠΌ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ²Π΅ΡΠΈΡΠ΅ Π½Π° Google ΠΈΠ»ΠΈ StackOerflow, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΡΠΈΡΠ΅ βkubernetes apply vs replaceβ. ΠΠΎΠ½Π΅ Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΠΈ ΡΠ΅ΠΊΡΡΠΈΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com