ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅, Π₯Π°Π±ΡΠΎΠΆΠΈΡΠ΅Π»ΠΈ! Kubernetes Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°ΡΠ° ΠΎΠ±Π»Π°ΡΠ½Π° Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°. Π’Π°Π·ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ, ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½Π°ΡΠ° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠΆΠΎΠ½ ΠΡΡΠ½Π΄Π΅Π» ΠΈ ΠΠΆΡΡΡΠΈΠ½ ΠΠΎΠΌΠΈΠ½Π³ΡΡ ΡΠ°Π·ΠΊΠ°Π·Π²Π°Ρ Π·Π° Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Kubernetes ΠΈ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Ρ Ρ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. Π‘ΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ ΠΎΠ±Π»Π°ΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π·Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΡΡΠ΅Π΄Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΠΈ Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Π²ΡΡΡ Ρ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
β’ Π©Π΅ Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Kubernetes ΠΎΡ Π½ΡΠ»Π°ΡΠ°: Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΠΏΠΈΡ Π·Π° ΠΈΠ·ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΌΠ°ΡΠ°. β’ Π©Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΈΠ»ΠΈ ΡΠ΅ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½Π° ΡΡΠ»ΡΠ³Π° Kubernetes ΠΎΡ Amazon, Google ΠΈ Π΄Ρ. β’ Π©Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ Kubernetes Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΡΠ°Π·Ρ
ΠΎΠ΄Π° Π½Π° ΡΠ΅ΡΡΡΡΠΈ. β’ Π©Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΠ°ΡΠΎ ΡΠ΅Π½Π°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ, ΠΌΠΎΡΠ½ΠΎΡΡ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ. β’ Π©Π΅ ΠΏΡΠΎΡΡΠΈΡΠ΅ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. β’ Π©Π΅ ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡ Π°ΠΊΡΡΠ°Π»Π½ΠΈ ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»Π½ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ». β’ Π©Π΅ Π²Π½Π΅Π΄ΡΠΈΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅ Π½Π° DevOps Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°, Π·Π° Π΄Π° Π½Π°ΠΊΠ°ΡΠ°ΡΠ΅ Π΅ΠΊΠΈΠΏΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° Π΄Π΅ΠΉΡΡΠ²Π°Ρ ΠΏΠΎ-Π³ΡΠ²ΠΊΠ°Π²ΠΎ, Π±ΡΡΠ·ΠΎ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
ΠΠ° ΠΊΠΎΠ³ΠΎ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ°
ΠΠ½ΠΈΠ³Π°ΡΠ° Π΅ Π½Π°ΠΉ-Π°ΠΊΡΡΠ°Π»Π½Π° Π·Π° ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΈΡΠ΅ ΠΎΡΠ΄Π΅Π»ΠΈ, ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΡΡΡΠ²ΡΡΠΈΡΠ΅, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΈ ΡΡΠ»ΡΠ³ΠΈΡΠ΅, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅, Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΡΠΈ ΡΠ΅ ΠΈΠ»ΠΈ Ρ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΈΠ»ΠΈ Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes ΠΈ ΠΎΠ±Π»Π°ΠΊΠ°. ΠΠ΅ ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΠΉΡΠ΅, Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠΌΠ΅Π΅ΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ Kubernetes ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ β Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π²ΠΈ Π½Π°ΡΡΠΈΠΌ.
ΠΠΏΠΈΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° Kubernetes ΡΡΡΠΎ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ: ΡΡΠΊ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΡΠ΅ΠΌΠΈ ΠΊΠ°ΡΠΎ RBAC, Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡ. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π΅ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΈ Π·Π° Π²Π°Ρ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²Π°ΡΠΈΡΠ΅ ΡΠΌΠ΅Π½ΠΈΡ ΠΈ ΠΎΠΏΠΈΡ.
ΠΠ° ΠΊΠ°ΠΊΠ²ΠΈ Π²ΡΠΏΡΠΎΡΠΈ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ ΠΊΠ½ΠΈΠ³Π°ΡΠ°
ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° ΠΎΠ±ΡΡΠ΄ΠΈΡ ΠΌΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Kubernetes Ρ hunds ΠΎΡ Ρ ΠΎΡΠ°, Π³ΠΎΠ²ΠΎΡΠ΅ΠΉΠΊΠΈ ΠΊΠ°ΠΊΡΠΎ Ρ Π»ΠΈΠ΄Π΅ΡΠΈ ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΡΠΈ Π² Π±ΡΠ°Π½ΡΠ°, ΡΠ°ΠΊΠ° ΠΈ Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠΈ. ΠΠΎ-Π΄ΠΎΠ»Ρ ΡΠ° ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π²ΡΠΏΡΠΎΡΠΈ, Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΠΈΡ Π° ΠΈΡΠΊΠ°Π»ΠΈ Π΄Π° Π²ΠΈΠ΄ΡΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Π² ΡΠΎΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅.
- Β«ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΌΠΈ Π΅ Π·Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ΄Π΅Π»ΡΠΌ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ°Π·ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ. ΠΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠ΅ ΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΡΠ΅ΡΠ° Π½Π° ΠΌΠ΅Π½ ΠΈ Π΅ΠΊΠΈΠΏΠ° ΠΌΠΈ?Β»
- Β«Kubernetes ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π½ΠΎ Ρ Π΄ΠΎΡΡΠ° Π²ΠΈΡΠΎΠΊ ΠΏΡΠ°Π³ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅. ΠΠ΅ΡΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ³ΠΎΡΠ²ΠΈ ΠΏΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΎ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½ΠΎΡΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΠ»Π°ΡΠΈ. ΠΠΈΡ ΠΌΠ΅ ΠΈΡΠΊΠ°Π»ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΡΡΠ²Π΅ΡΠΈ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Ρ ΠΎΡΠ°ΡΠ° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ Kubernetes ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π² ΡΠ΅Π°Π»Π½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΈ Ρ ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°ΠΌΠ΅.Β»
- Β«ΠΠΎΠ»Π΅Π·Π΅Π½ Π±ΠΈ Π±ΠΈΠ» ΡΡΠ±Π΅ΠΊΡΠΈΠ²Π΅Π½ ΡΡΠ²Π΅Ρ. ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π½Π° Kubernetes ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π½Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΠΈΡΠ΅ Π΅ΠΊΠΈΠΏΠΈ ΡΠ²ΡΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΈΠ·Π±ΠΎΡ. ΠΠΎΠ³Π°ΡΠΎ Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΡΠΈΠ½Π°, ΠΊΠ°ΠΊ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ° ΠΊΠΎΠΉ ΠΎΡ ΡΡΡ Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΡ? ΠΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ·Π±ΠΎΡΠ°?Β»
Π Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΡ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Π²ΡΠΏΡΠΎΡΠΈ:
- Β«ΠΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Kubernetes, Π±Π΅Π· Π΄Π° Π½Π°ΡΡΡΠ°Π²Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΠΌΠΈ?Β»
ΠΠ·Π²Π°Π΄ΠΊΠ°. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΎΡΠ΄Π΅Π»ΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Kubernetes ΠΎΡ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (Ρ.Π΅. ΠΎΡ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ) Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°. ΠΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠ΅Π΄Π°, DNS Π°Π΄ΡΠ΅ΡΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ.
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΊΠΎΠ΄Π°, Π½ΠΎ ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π³ΡΠ²ΠΊΠ°Π². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ, ΡΠ΅ ΡΡΡΠ±Π²Π° ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½Π΅ΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠΈ. ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄Π° ΠΎΡΠ΄Π΅Π»ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΎΡ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π° Ρ ΡΠ΅ΡΠ΅ΡΠ΅ ΠΎΡ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°.
Kubernetes ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°. ΠΡΡΠ²ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π΄Π°Π²Π°ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° pod-ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° (Π²ΠΆ. ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π° βΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°β Π½Π° ΡΡΡ. 192). ΠΡΠΎΡΠΎ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² Kubernetes, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ConfigMap ΠΈ Secret.
Π ΡΠ°Π·ΠΈ Π³Π»Π°Π²Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°ΠΌΠ΅ ΡΠ΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΠ΅Π· Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° pod-ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°
ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠΈ, ΡΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π²ΠΈ ΠΈΠΌΠ° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ ΠΈ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½ΡΠΊΠΎΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² Π½Π΅Π³ΠΎΠ²ΠΈΡ ConfigMap. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Helm ΡΠ°ΡΡ (Π²ΠΈΠΆΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° βHelm: ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° Kubernetesβ Π½Π° ΡΡΡ. 102), ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΡΠ΅ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΈ Π΄Π° ΠΏΡΠ΅Π·Π°ΡΠ΅Π΄ΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ΅ pod-ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΅Π΄ΠΈΠ½ Π΅Π»Π΅Π³Π°Π½ΡΠ΅Π½ ΡΡΠΈΠΊ. ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° Π°Π½ΠΎΡΠ°ΡΠΈΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° Π²Π°ΡΠ΅ΡΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅:
checksum/config: {{ include (print $.Template.BasePath "\/configmap.yaml") .
| sha256sum }}Π‘Π΅Π³Π° ΡΠ°Π±Π»ΠΎΠ½ΡΡ Π½Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΠΌΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ: ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΡΠΌΠ°ΡΠ° ΡΠ΅ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°. ΠΠΊΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° helm upgrade, Helm ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅, ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»Π° ΠΈ ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ pod-ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ.
ΠΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² Kubernetes
ΠΠ΅ΡΠ΅ Π·Π½Π°Π΅ΠΌ, ΡΠ΅ ΠΎΠ±Π΅ΠΊΡΡΡ ConfigMap ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π³ΡΠ²ΠΊΠ°Π² ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠΌΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π΅ ΡΠ΅ΠΊΡΠ΅ΡΠ½Π° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π°: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈΠ»ΠΈ API-ΠΊΠ»ΡΡΠΎΠ²Π΅. Π’Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΡ ΡΠ°Π½Π΅Π½Π° ΠΈ Π² ConfigMap, Π½ΠΎ ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΅ ΠΈΠ΄Π΅Π°Π»Π½ΠΎ.
ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° Kubernetes ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΎΠ±Π΅ΠΊΡ ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠΈΠΏ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ: Secret. ΠΠΎ-Π΄ΠΎΠ»Ρ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΡΠΎΠ·ΠΈ ΠΎΠ±Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈ Π² Π½Π°ΡΠ΅ΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΡΠ²ΠΎ, ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Π½Π° Kubernetes Π·Π° ΠΎΠ±Π΅ΠΊΡΠ° Secret (Π²ΠΈΠΆΡΠ΅ hello-secret-env/k8s/secret.yaml):
apiVersion: v1
kind: Secret
metadata:
name: demo-secret
stringData:
magicWord: xyzzy
Π ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ½ΠΈΡΡ ΠΊΠ»ΡΡ magicWord ΠΈΠΌΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ xyzzy (en.wikipedia.org/wiki/Xyzzy_(computing)). ΠΡΠΌΠ°ΡΠ° xyzzy Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° Π² ΡΠ²Π΅ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠΈΡΠ΅. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ConfigMap, Π² ΠΎΠ±Π΅ΠΊΡΠ° Secret ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ. Π’ΡΠΊ Π·Π° ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° Π΄Π²ΠΎΠΉΠΊΠ° βΠΊΠ»ΡΡ β ΡΡΠΎΠΉΠ½ΠΎΡΡβ.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Secret ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°
ΠΠ°ΠΊΡΠΎ ΠΈ ConfigMap, ΠΎΠ±Π΅ΠΊΡΡΡ Secret ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ» Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ Π΄ΠΈΡΠΊ. Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΎΡ Secret Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°:
spec:
containers:
- name: demo
image: cloudnatived/demo:hello-secret-env
ports:
- containerPort: 8888
env:
- name: GREETING
valueFrom:
secretKeyRef:
name: demo-secret
key: magicWordΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ demo, Π·Π° Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΡΠ΅:
kubectl apply -f hello-secret-env/k8s/
deployment.extensions "demo" configured
secret "demo-secret" createdΠΠ°ΠΊΡΠΎ ΠΏΡΠ΅Π΄ΠΈ, ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ΅ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ ΠΏΠΎΡΡ ΠΊΡΠΌ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° Π² Π±ΡΠ°ΡΠ·ΡΡΠ° ΡΠΈ:
kubectl port-forward deploy/demo 9999:8888
Forwarding from 127.0.0.1:9999 -> 8888
Forwarding from [::1]:9999 -> 8888ΠΡΠΈ ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠ° :9999/ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
ΠΡΠ»ΡΠ΅Π±Π½Π°ΡΠ° Π΄ΡΠΌΠ° Π΅ "xyzzy"
ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Secret Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
Π ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΠΌ ΠΎΠ±Π΅ΠΊΡ Secret Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΊΠ°ΡΠΎ ΡΠ°ΠΉΠ». ΠΠΎΠ΄ΡΡ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° hello-secret-file Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ demo.
ΠΠ° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΠΌ Secret ΠΊΠ°ΡΠΎ ΡΠ°ΠΉΠ», ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅:
spec:
containers:
- name: demo
image: cloudnatived/demo:hello-secret-file
ports:
- containerPort: 8888
volumeMounts:
- name: demo-secret-volume
mountPath: "/secrets/"
readOnly: true
volumes:
- name: demo-secret-volume
secret:
secretName: demo-secretΠΠ°ΠΊΡΠΎ Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π° "Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΠΎΠ±Π΅ΠΊΡΠΈ ConfigMap" Π½Π° ΡΡΡ. 240, ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠΎΠΌ (Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΠΎΠ²Π° Π΅ demo-secret-volume) ΠΈ Π³ΠΎ ΡΠ²ΡΡΠ·Π²Π°ΠΌΠ΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² ΡΠ°Π·Π΄Π΅Π»Π° Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ volumeMounts. Π ΠΏΠΎΠ»Π΅ΡΠΎ mountPath Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ /secrets, ΡΠ°ΠΊΠ° ΡΠ΅ Kubernetes ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π² ΡΠ°Π·ΠΈ ΠΏΠ°ΠΏΠΊΠ° ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» Π·Π° Π²ΡΡΠΊΠ° Π΄Π²ΠΎΠΉΠΊΠ° "ΠΊΠ»ΡΡ - ΡΡΠΎΠΉΠ½ΠΎΡΡ", ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² ΠΎΠ±Π΅ΠΊΡΠ° Secret.
Π Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° Π΄Π²ΠΎΠΉΠΊΠ° "ΠΊΠ»ΡΡ - ΡΡΠΎΠΉΠ½ΠΎΡΡ" Ρ ΠΈΠΌΠ΅ΡΠΎ magicWord, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡΡ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» /secrets/magicWord ΡΡΡ Π·Π°ΡΠΈΡΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅.
ΠΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½, ΠΊΠ°ΠΊΡΠΎ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΡΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ:
ΠΡΠ»ΡΠ΅Π±Π½Π°ΡΠ° Π΄ΡΠΌΠ° Π΅ "xyzzy"
Π§Π΅ΡΠ΅Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Secret
Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΡΠ°Π·Π΄Π΅Π» ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl describe, Π·Π° Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅ΠΌ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ConfigMap. ΠΠΎΠΆΠ΅ Π»ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΡΡΠΎΡΠΎ Ρ Secret?
kubectl describe secret/demo-secret
Name: demo-secret
Namespace: default
Labels:
Annotations:
Type: Opaque
Data
====
magicWord: 5 bytesΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΠ°ΠΌΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π½Π΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ. ΠΠ±Π΅ΠΊΡΠΈΡΠ΅ Secret Π² Kubernetes ΠΈΠΌΠ°Ρ ΡΠΈΠΏ Opaque: ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌ Π½Π΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° Π² ΠΈΠ·Ρ ΠΎΠ΄Π° Π½Π° kubectl describe, ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅ ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, Π·Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ°Π·ΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ YAML, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl get:
kubectl get secret/demo-secret -o yaml
apiVersion: v1
data:
magicWord: eHl6enk=
kind: Secret
metadata:
...
type: Opaquebase64
ΠΠ°ΠΊΠ²ΠΎ Π΅ eHl6enk=, Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ° Π½Π° Π½Π°ΡΠ°ΡΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ? ΠΡΡΡΠ½ΠΎΡΡ, ΡΠΎΠ²Π° Π΅ ΠΎΠ±Π΅ΠΊΡ Secret, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° base64. Base64 Π΅ ΡΡ Π΅ΠΌΠ° Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π½ΠΈΠ· ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π±ΠΈΠ½Π°ΡΠ½Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ (ΠΊΠ°ΠΊΡΠΎ Π² ΡΠ»ΡΡΠ°Ρ Ρ ΠΊΠ»ΡΡΠ° Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ TLS), ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Secret Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² ΡΠΎΡΠΌΠ°Ρ base64.
Π’Π΅ΠΊΡΡΡΡ beHl6enk= Π΅ Π²Π΅ΡΡΠΈΡ Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠ²ΠΎ xyzzy, ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π° Π² base64. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΡΠ΅ Π² ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° base64 βdecode:
echo "eHl6enk=" | base64 --decode
xyzzyΠ‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Kubernetes Π²ΠΈ ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈΠ»ΠΈ ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΠΏΡΠ°Π²Π° Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Secret Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ Π² ΡΠΎΡΠΌΠ°Ρ base64 ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½ΠΈ.
ΠΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ ΡΠ΅ΠΊΡΡ Π² base64 (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π² Secret), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° base64 Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ:
echo xyzzy | base64
eHl6enkKΠΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΠ±Π΅ΠΊΡΠΈ Secret
ΠΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ΡΠ΅ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ° ΠΎΠ±Π΅ΠΊΡΠΈ Secret? Π’ΠΎΠ²Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΡ RBAC β ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π΄ΠΎΡΡΡΠΏΠ° (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ΅ Π³ΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π° 'ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠΎΠ»ΠΈ' Π½Π° Ρ. 258). ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠ»ΡΡΡΠ΅Ρ, Π² ΠΊΠΎΠΉΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° RBAC Π»ΠΈΠΏΡΠ²Π° ΠΈΠ»ΠΈ Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π°, Π²ΡΠΈΡΠΊΠΈ Π²Π°ΡΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Secret ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ (ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΈΠΌ, ΡΠ΅ Π½Π΅ Π±ΠΈ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΠΊΠ»ΡΡΡΠ΅Ρ Π±Π΅Π· RBAC).
ΠΠ°ΡΠΈΠ²Π½ΠΎ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ
Π ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π·Π° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ etcd, Π² ΠΊΠΎΡΡΠΎ Kubernetes ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΡΠ»Π°ΡΠ° ΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ? ΠΠΎΠ³Π°Ρ Π»ΠΈ ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π±Π΅Π· Π΄Π° ΠΈΠΌΠ°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Secret ΡΡΠ΅Π· API?
Π‘ Π²Π΅ΡΡΠΈΡ 1.7 Kubernetes ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠ°ΡΠΈΠ²Π½ΠΎ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² etcd ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π½Π° Π΄ΠΈΡΠΊΠ° Π² ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ Π²ΠΈΠ΄ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½Π° Π΄ΠΎΡΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ ΠΏΡΡΠΊ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠ° Π½Π΅ΠΉΠ½ΠΎΡΠΎ Π΄Π΅ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΊΠ»ΡΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ Π½Π° API ΡΡΡΠ²ΡΡΠ° Π½Π° Kubernetes. Π ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ ΠΊΠ»ΡΡΡΠ΅Ρ ΠΏΠ°ΡΠΈΠ²Π½ΠΎΡΠΎ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΠΏΠ°ΡΠΈΠ²Π½ΠΎΡΠΎ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Π²ΡΠ² Π²Π°ΡΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
kubectl describe pod -n kube-system -l component=kube-apiserver |grep encryption
--experimental-encryption-provider-config=...ΠΠΊΠΎ Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΡΠ΅ ΡΠ»Π°Π³Π° experimental-encryption-provider-config, ΠΏΠ°ΡΠΈΠ²Π½ΠΎΡΠΎ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ. ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Google Kubernetes Engine ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Kubernetes Π²Π°ΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΊΡΠΈΠΏΡΠΈΡΠ°Ρ Ρ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ, Π·Π°ΡΠΎΠ²Π° ΡΠ»Π°Π³ΡΡ ΡΠ΅ Π»ΠΈΠΏΡΠ²Π°. ΠΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ Π²Π°ΡΠΈΡ Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊ Π½Π° Kubernetes Π΄Π°Π»ΠΈ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° etcd Π΅ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ΠΎ.
Π‘ΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ
ΠΠΌΠ° ΡΠ΅ΡΡΡΡΠΈ Π² Kubernetes, ΠΊΠΎΠΈΡΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΡΡΠΈΠ²Π°Π½ΠΈ ΠΎΡ ΠΊΠ»ΡΡΡΠ΅ΡΠ°: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π²Π°ΠΆΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Secret. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΡΠΈΡΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠ° ΠΎΡ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° ΠΎΡ Helm ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ°:
kind: Secret
metadata:
annotations:
"helm.sh/resource-policy": keepΠ‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Secret
Π ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΡΠ°Π·Π΄Π΅Π» ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π±ΡΡ Π° Π·Π°ΡΠΈΡΠ΅Π½ΠΈ ΠΎΡ Π½Π΅ΡΠΏΡΠ»Π½ΠΎΠΌΠΎΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π±ΡΡ Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠΎ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ Π±ΡΡ Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΡΠ΅ΠΊΡΡ.
ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅. ΠΠ°ΠΊ Π΄Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°ΡΠ΅ ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes?
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΈΡΠΎ ΠΈ Π΄Π° Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈΠ»ΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π²ΡΠ² Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ½Π΅ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π²ΡΠΏΡΠΎΡΠΈ.
- ΠΡΠ΄Π΅ Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΊΠ°, ΡΠ΅ Π΄Π° Π±ΡΠ΄Π°Ρ Ρ Π²ΠΈΡΠΎΠΊΠ° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ?
- ΠΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° Π²Π°ΡΠΈΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ?
- ΠΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠΈ Ρ Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ?
ΠΠ° Π°Π²ΡΠΎΡΠΈΡΠ΅
ΠΠΆΠΎΠ½ ΠΡΡΠ½Π΄Π΅Π» Π΅ ΠΊΠΎΠ½ΡΡΠ»ΡΠ°Π½Ρ Ρ 30 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΎΠΏΠΈΡ Π² ΠΊΠΎΠΌΠΏΡΡΡΡΠ½Π°ΡΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡ. Π’ΠΎΠΉ Π΅ Π½Π°ΠΏΠΈΡΠ°Π» Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈ, ΠΊΠΎΠ½ΡΡΠ»ΡΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΈ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΠΎΠ±Π»Π°ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΈ Kubernetes. Π ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΡΠΎ ΡΠΈ Π²ΡΠ΅ΠΌΠ΅ ΠΎΠ±ΠΈΡΠ° Π΄Π° ΡΠ΅ ΡΡΡΡΠΈΡΠ°, ΡΡΡΠ΅Π»Ρ Π΄ΠΎΠ±ΡΠ΅ Ρ ΠΏΠΈΡΡΠΎΠ»Π΅Ρ ΠΈ ΡΠ²ΠΈΡΠΈ Π½Π° ΠΏΠΈΠ°Π½ΠΎ ΠΊΠ°ΡΠΎ Π°ΠΌΠ°ΡΡΠΎΡ. ΠΠΈΠ²Π΅Π΅ Π² ΠΏΡΠΈΠΊΠ°Π·Π½Π° Π²ΠΈΠ»Π° Π² ΠΠΎΡΠ½ΡΠΎΠ», ΠΠ½Π³Π»ΠΈΡ.
ΠΠΆΡΡΡΠΈΠ½ ΠΠΎΠΌΠΈΠ½Π³ΠΎ Π΅ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ, ΡΠ°Π±ΠΎΡΠ΅Ρ Π² ΡΡΠ΅Π΄Π° Π½Π° DevOps Ρ Kubernetes ΠΈ ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π₯Π°ΡΠ΅ΡΠ²Π° ΠΌΡ Π΄Π° ΠΏΡΠ΅ΠΊΠ°ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΡΠΊΡΠΈΡΠΎ, Π΄Π° ΠΏΠΈΠ΅ ΠΊΠ°ΡΠ΅, Π΄Π° Π»ΠΎΠ²ΡΠ²Π° ΡΠ°ΡΠΈ ΠΈ Π΄Π° ΡΠ΅Π΄ΠΈ ΠΏΡΠ΅Π΄ ΠΊΠΎΠΌΠΏΡΡΡΡΠ°. ΠΠΈΠ²Π΅Π΅ Π² Π‘ΠΈΠ°ΡΡΠ», ΠΠ°ΡΠΈΠ½Π³ΡΠΎΠ½, Π·Π°Π΅Π΄Π½ΠΎ Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ ΠΊΠΎΡΠ°ΡΠ°ΠΊ ΠΈ ΠΎΡΠ΅ ΠΏΠΎ-ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½Π° ΡΡΠΏΡΡΠ³Π°, ΠΊΠΎΡΡΠΎ Π΅ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΡ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΡ ΠΏΡΠΈΡΡΠ΅Π» ΠΠ΄ΡΠΈΠ΅Π½.
Β» ΠΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Ρ ΠΊΠ½ΠΈΠ³Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ Π½Π°
Β»
Β»
ΠΠ° Π₯Π°Π±ΡΠΎΠΆΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΎΡΡΡΡΠΏΠΊΠ° ΠΎΡ 25% Ρ Π²Π°ΡΡΠ΅ΡΠ° β Kubernetes
Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ΡΠΎ Π·Π° ΠΏΠ΅ΡΠ°ΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ°, Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½Π°ΡΠ° ΠΊΠ½ΠΈΠ³Π° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½Π° Π½Π° ΠΈΠΌΠ΅ΠΉΠ»Π° Π²ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
