ΠΠ°ΠΊΠΎ Dailymotion Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ Kubernetes: ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ
ΠΠΈΠ΅ Π²ΠΎ Dailymotion ΠΏΠΎΡΠ½Π°Π²ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Kubernetes Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ ΠΏΡΠ΅Π΄ 3 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ΠΠΎ, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½ΠΈΠ· ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π΅ Π·Π°Π±Π°Π²Π½ΠΎ, ΡΠ°ΠΊΠ° ΡΡΠΎ Π²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ Π°Π»Π°ΡΠΊΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΡΠ΅ΠΊΠΎΠ²ΠΈ.
ΠΠ°Π΄Π΅ ΠΏΠΎΡΠ½Π°
ΠΠ²Π΄Π΅ ΡΠ΅ ΠΏΠΎΠΊΡΠΈΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π³ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½ΠΈΠ· ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π½Π° Kubernetes ΡΠΈΡΡΠΌ ΡΠ²Π΅ΡΠΎΡ.
ΠΠ° Π΄Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΠΎΠ΄Π΅Π΄Π½Π°Ρ, ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅
ΠΠ°ΠΏΠΈΡΠ°Π²ΠΌΠ΅ ΠΈ ΠΌΠ°Π»Π° Python ΡΠΊΡΠΈΠΏΡΠ° Π½Π° Π²ΡΠ²ΠΎΡ Π½Π° Helm Π·Π° Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π΄Π° ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ, Π΄Π° Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ ΡΠ°ΡΠ½ΠΈ ΠΈ Π΄Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. Π‘ΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ ΠΈΠ·Π²Π΅Π΄ΡΠ²Π°Π°Ρ Π½Π° ΡΠ΅Π½ΡΡΠ°Π»Π½Π° CI ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π΄ΠΎΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ°.
ΠΡΠ΄Π΅ Π΄Π° Π΄ΠΎΡΠ΄Π΅ΠΌΠ΅ Π΄ΠΎ ΠΏΠΎΠ΅Π½ΡΠ°ΡΠ°.
ΠΠ°Π±Π΅Π»Π΅ΡΠΊΠ°. ΠΠΎΠ΄Π΅ΠΊΠ° Π³ΠΎ ΡΠΈΡΠ°ΡΠ΅ ΠΎΠ²Π°, Π²Π΅ΡΠ΅ Π΅ ΠΎΠ±ΡΠ°Π²Π΅Π½ ΠΏΡΠ²ΠΈΠΎΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π·Π° ΠΈΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° Helm 3. ΠΠ»Π°Π²Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° ΡΠΎΠ΄ΡΠΆΠΈ ΡΠ΅Π»Π° Π½ΠΈΠ·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ° Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ Π½Π° Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠΎ ΠΊΠΎΠΈ ΡΠ΅ ΡΡΠ΅ΡΠ½Π°Π²ΠΌΠ΅ Π²ΠΎ ΠΌΠΈΠ½Π°ΡΠΎΡΠΎ.
Π Π°Π±ΠΎΡΠ΅Π½ ΡΠ΅ΠΊ Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ
ΠΠΈΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΡΠ°Π·Π³ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ΅ ΠΈΡΡΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ ΠΈ Π·Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈΡΠ΅.
- Π€ΠΈΠ»ΠΈΡΠ°Π»Π° dev ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ°Π°Ρ Π½Π° ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ.
- ΠΠΎΠ³Π° ΡΠ΅ ΠΏΠΎΠ΄Π½Π΅ΡΡΠ²Π° Π±Π°ΡΠ°ΡΠ΅ Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡΠ²Π°ΡΠ΅ Π΄ΠΎ Π³ΠΎΡΠΏΠΎΠ΄Π°Ρ, ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π°Ρ Π²ΠΎ Π΅ΡΠ°ΠΏΠ½ΠΎ.
- ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠ΅ Π±Π°ΡΠ°ΡΠ΅ Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡΠ²Π°ΡΠ΅ Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° prod ΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π°Π°Ρ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ.
Π‘Π΅ΠΊΠΎΡΠ° ΠΎΠΊΠΎΠ»ΠΈΠ½Π° ΠΈΠΌΠ° ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ ΠΊΠΎΠ΅ Π³ΠΈ ΡΡΠ²Π° Π½Π°ΡΠΈΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ, Π° Π½ΠΈΠ΅ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅
Π‘ΠΊΠ»Π°Π΄ΠΈΡΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ Π²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ³Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΡΠΊΠ°Π°Ρ Π³ΡΠ°Π½ΠΊΠ° Π½Π° dev, Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΠ²Π½Π°ΡΠ° ΡΠ°Π±Π΅Π»Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ ΡΡΡΠΊΠ° Π²ΠΎ ΠΡΠ·Π΅ΡΠΎΡ Π½Π° dev Chartmuseum. Π’Π°ΠΊΠ°, ΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΈΡΡΠΎΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π½Π° dev, ΠΈ ΡΡΠ΅Π±Π° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π²Π°ΡΠ°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΎΡ Π·Π° Π΄Π° Π½Π΅ ΡΠ»ΡΡΠ°ΡΠ½ΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ.
ΠΠΎΠΊΡΠ°Ρ ΡΠΎΠ°, Π½Π°ΡΠ°ΡΠ° ΠΌΠ°Π»Π° Python ΡΠΊΡΠΈΠΏΡΠ° Π³ΠΈ ΠΏΠΎΡΠ²ΡΠ΄ΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° Kubernetes Π½Π°ΡΠΏΡΠΎΡΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Kubernetes OpenAPI ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ
ΠΠΏΡΡ ΠΎΠΏΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΠΎΡ ΡΠ΅ΠΊ Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΎΡ
- ΠΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° Π³Π°ΡΠΎΠ²ΠΎΠ΄ΠΎΡ ΡΠΏΠΎΡΠ΅Π΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°
gazr.io Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΠΊΠ²Π°Π»ΠΈΡΠ΅ΡΠΎΡ (Π²Π»Π°ΠΊΠ½Π΅ΡΡ, Π΅Π΄ΠΈΠ½ΠΈΡΠ°-ΡΠ΅ΡΡ). - ΠΡΠΈΡΠΈΡΠΊΠ°ΡΠ΅ Π½Π° Π΄ΠΎΠΊΠ΅Ρ-ΡΠ»ΠΈΠΊΠ° ΡΠΎ Python Π°Π»Π°ΡΠΊΠΈ ΠΊΠΎΠΈ Π³ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Π°Ρ Π½Π°ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ.
- ΠΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° Π³ΡΠ°Π½ΠΊΠ°.
- ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡΠ° Π½Π° Kubernetes yaml Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Kubeval.
- ΠΠ²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΠ΅ΡΠ΅ ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΎΡ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΡΠ½ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ (ΡΠ°Π±Π΅Π»ΠΈ ΡΡΠΎ Π·Π°Π²ΠΈΡΠ°Ρ ΠΎΠ΄ ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΎΡ).
- ΠΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ Π΄ΠΎ ΠΡΠ·Π΅ΡΠΎΡ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ ΡΡΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°
Π£ΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ ΠΌΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅
Π€Π΅Π΄Π΅ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ
ΠΠΌΠ°ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ³Π° ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅
ΠΠ° Π΄Π° Π³ΠΎ ΡΠ΅ΡΠΈΠΌΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ, ΠΏΠΎΡΠ½Π°Π²ΠΌΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ ΡΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅, ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π³ΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡ (ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ ΠΏΡΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΡΠ°ΡΠ°; ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ Π²ΡΠΎΡΠ°ΡΠ°).
ΠΠ΅ΠΎ-Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°
ΠΠ°ΡΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π° Π½ΠΈΠ· 6 ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ - 3 Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈ 3 Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ.
ΠΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅
ΠΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΠΊΠΎΡΠΌΠΈΠ»Π°
4 Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π½Π° Helm Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ Π΄Π° Π³ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅. Π‘ΠΈΡΠ΅ Π½Π°ΡΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ ΠΈΠΌΠ°Π°Ρ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ.
global:
cloud: True
env: staging
region: us-central1
clusterName: staging-us-central1
ΠΠ»ΠΎΠ±Π°Π»Π½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ
ΠΠ²ΠΈΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΏΠΎΠΌΠ°Π³Π°Π°Ρ Π΄Π° ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΡ Π·Π° Π½Π°ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π»ΠΈ: ΡΠ»Π΅Π΄Π΅ΡΠ΅, ΡΠ»Π΅Π΄Π΅ΡΠ΅, Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅, ΠΎΡΡΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ, ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈΡΠ½.
- βΠΎΠ±Π»Π°ΠΊβ: ΠΠΌΠ°ΠΌΠ΅ Ρ ΠΈΠ±ΡΠΈΠ΄Π½Π° Kubernetes ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΡΠΈΠΎΡ API Π΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½ Π²ΠΎ Π·ΠΎΠ½ΠΈΡΠ΅ Π½Π° GCP ΠΈ Π²ΠΎ Π½Π°ΡΠΈΡΠ΅ ΡΠ΅Π½ΡΡΠΈ Π·Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
- βenvβ: ΠΠ΅ΠΊΠΎΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π°Ρ Π·Π° Π½Π΅ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅.
- βΡΠ΅Π³ΠΈΠΎΠ½β: ΠΎΠ²Π°Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄ΠΈ Π»ΠΎΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΊΡΠ°ΡΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π²ΠΎ Π±Π»ΠΈΠ·ΠΈΠ½Π° Π·Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ.
- "ClusterName": Π°ΠΊΠΎ ΠΈ ΠΊΠΎΠ³Π° ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π·Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π΅Π½ ΠΊΠ»Π°ΡΡΠ΅Ρ.
ΠΠ²Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ:
{{/* Returns Horizontal Pod Autoscaler replicas for GraphQL*/}}
{{- define "graphql.hpaReplicas" -}}
{{- if eq .Values.global.env "prod" }}
{{- if eq .Values.global.region "europe-west1" }}
minReplicas: 40
{{- else }}
minReplicas: 150
{{- end }}
maxReplicas: 1400
{{- else }}
minReplicas: 4
maxReplicas: 20
{{- end }}
{{- end -}}
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ°Π±Π»ΠΎΠ½ Π·Π° ΡΠ»Π΅ΠΌ
ΠΠ²Π°Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° Π²ΠΎ ΠΏΠΎΠΌΠΎΡΠ΅Π½ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΏΡΠ΅Π½Π°ΡΡΡΠΏΡΠ²Π°ΡΠ΅ Π½Π° Kubernetes YAML.
ΠΠ³Π»Π°Ρ Π·Π° ΠΏΡΠΈΡΠ°Π²ΡΠ²Π°ΡΠ΅
ΠΠ°ΡΠΈΡΠ΅ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π°Ρ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ YAML. ΠΠΎΠ΄ΠΎΠ»Ρ Π΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°ΠΌΠ΅ ΡΡΠ»ΡΠ³Π° ΠΈ Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π½Π° ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ (Π±ΡΠΎΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ) Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅Ρ.
releases:
- foo.world
foo.world: # Release name
services: # List of dailymotion's apps/projects
foobar:
chart_name: foo-foobar
repo: [email protected]:dailymotion/foobar
contexts:
prod-europe-west1:
deployments:
- name: foo-bar-baz
replicas: 18
- name: another-deployment
replicas: 3
ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°
ΠΠ²Π° Π΅ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΠΈΡΠ΅ ΡΠ΅ΠΊΠΎΡΠΈ ΡΡΠΎ Π³ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π°Ρ Π½Π°ΡΠΈΠΎΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠ΅ΠΊ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΡΠ΅ΠΊΠΎΡ ΡΠ° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠΈ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ.
Π§Π΅ΠΊΠΎΡΠΈ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΠ΅Π½ΠΊΠΈΠ½Ρ
Π¨ΡΠΎ Π΅ ΡΠΎ ΡΠ°ΡΠ½ΠΈΡΠ΅?
Π¨ΡΠΎ ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π° Π΄ΠΎ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ°, Π½ΠΈΠ΅ Π³ΠΈ ΡΠ»Π΅Π΄ΠΈΠΌΠ΅ ΡΠΈΡΠ΅ ΡΠ°ΡΠ½ΠΈ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΡΠ° ΠΈ Π³ΠΈ ΡΡΠ²Π°ΠΌΠ΅ Π²ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΡΡΠ΅Π·ΠΎΡ
ΠΠ°ΡΠΈΡΠ΅ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΡΠ²Π°Π°Ρ ΡΠ°ΡΠ½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΎΠ΄ Vault ΠΈ, ΠΊΠΎΠ³Π° ΡΠ΅ Π΄ΠΎΡΠ΄Π΅ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅, Π³ΠΈ Π²ΠΌΠ΅ΡΠ½ΡΠ²Π°Π°Ρ Π²ΠΎ Helm.
ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π²ΠΌΠ΅ ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠ°ΡΠ½ΠΈΡΠ΅ Π²ΠΎ Vault ΠΈ ΡΠ°ΡΠ½ΠΈΡΠ΅ ΡΡΠΎ ΠΈΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ:
secrets:
- secret_id: "stack1-app1-password"
contexts:
- name: "default"
vaultPath: "/kv/dev/stack1/app1/test"
vaultKey: "password"
- name: "cluster1"
vaultPath: "/kv/dev/stack1/app1/test"
vaultKey: "password"
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°Π²ΠΌΠ΅ ΠΎΠΏΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΡΠ»Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠ³Π° ΡΠ½ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΡΠ½ΠΈ Π²ΠΎ Vault.
- ΠΠΊΠΎ ΡΠ°ΡΠ½Π°ΡΠ° Π²Π°ΠΆΠΈ Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ΅Ρ, ΡΡΠ΅Π±Π° Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Π·Π°ΠΏΠΈΡ. (Π’ΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΡΠΎ ΠΊΠ»Π°ΡΡΠ΅Ρ 1 ΠΈΠΌΠ° ΡΠ²ΠΎΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π·Π° ΡΠ°ΡΠ½ΠΈΠΎΡ stack-app1-password).
- ΠΠΎ ΡΠΏΡΠΎΡΠΈΠ²Π½ΠΎ, Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ.
- ΠΠ° ΡΠ΅ΠΊΠΎΡΠ° ΡΡΠ°Π²ΠΊΠ° Π²ΠΎ ΠΎΠ²Π°Π° Π»ΠΈΡΡΠ° Π²ΠΎ Π’Π°ΡΠ½Π°ΡΠ° Π½Π° ΠΡΠ±Π΅ΡΠ½Π΅Ρ ΡΠ΅ Π²ΠΌΠ΅ΡΠ½ΡΠ²Π° ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π²ΡΠ΅Π΄Π½ΠΎΡΡ. ΠΠ°ΡΠΎΠ°, ΡΠ°ΡΠ½ΠΈΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ Π²ΠΎ Π½Π°ΡΠΈΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ Π΅ ΠΌΠ½ΠΎΠ³Ρ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½.
apiVersion: v1
data:
{{- range $key,$value := .Values.secrets }}
{{ $key }}: {{ $value | b64enc | quote }}
{{ end }}
kind: Secret
metadata:
name: "{{ .Chart.Name }}"
labels:
chartVersion: "{{ .Chart.Version }}"
tillerVersion: "{{ .Capabilities.TillerVersion.SemVer }}"
type: Opaque
ΠΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ°
Π Π°Π±ΠΎΡΠ° ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ°
Π‘Π΅Π³Π° Π³ΠΎ ΠΎΠ΄Π΄Π΅Π»ΡΠ²Π°ΠΌΠ΅ ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π²ΠΎ Π΄Π²Π΅ git ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ°: Π΅Π΄Π½ΠΎ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΈ Π΅Π΄Π½ΠΎ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° Π½Π΅ΡΠ·ΠΈΠ½ΠΎΡΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π²ΠΎ Kubernetes. 2 git ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ° Π·Π½Π°ΡΠ°Ρ 2 ΡΠ°Π±ΠΎΡΠ½ΠΈ ΡΠ΅ΠΊΠΎΠ²ΠΈ ΠΈ Π»Π΅ΡΠ½ΠΎ Π΅ Π·Π° ΠΏΠΎΡΠ΅ΡΠ½ΠΈΠΊ Π΄Π° ΡΠ΅ Π·Π±ΡΠ½ΠΈ.
Π£ΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ Π³Π΅Π½Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ
ΠΠ°ΠΊΠΎ ΡΡΠΎ Π²Π΅ΡΠ΅ ΡΠ΅ΠΊΠΎΠ²ΠΌΠ΅, Π³Π΅Π½Π΅ΡΠΈΡΠΊΠΈΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈ Π±ΡΠ·ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠΎ, Π½ΠΈΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ --reuse-values
Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠΌΠΈΠ½Π΅ΠΌΠ΅ ΡΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠ° Π΅ Π΄Π΅Π» ΠΎΠ΄ ΠΎΠ²Π°Π° Π³Π΅Π½Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠ°Π±Π΅Π»Π°.
ΠΠΎ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΎΡ ΡΠ΅ΠΊ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΡΠΏΠΎΡΠ°ΠΊΠ°, ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΄Π²Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠΎΠΈ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ: Π±ΡΠΎΡΠΎΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈ ΠΎΠ·Π½Π°ΠΊΠ°ΡΠ° Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° (Π²Π΅ΡΠ·ΠΈΡΠ°). ΠΡΡΠ³ΠΈΡΠ΅, ΠΏΠΎΡΡΠ°Π±ΠΈΠ»Π½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΡΠ°ΡΠ½ΠΎ, ΠΈ ΡΠΎΠ° Π΅ Π΄ΠΎΡΡΠ° ΡΠ΅ΡΠΊΠΎ. ΠΠΎΠΊΡΠ°Ρ ΡΠΎΠ°, Π΅Π΄Π½Π° Π³ΡΠ΅ΡΠΊΠ° Π²ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π³Π΅Π½Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠ°Π±Π΅Π»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π½Π΅ΡΡΠΏΠ΅ΡΠΈ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ ΠΎΠ΄ Π½Π°ΡΠ΅ΡΠΎ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ.
ΠΠΆΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ
ΠΠΎΠ³Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ Π΄ΠΎΠ΄Π°Π²Π° Π½ΠΎΠ²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΡΠΎΡ ΠΌΠΎΡΠ° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ: Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΡΠ°ΡΠ½ΠΈ, Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠ°ΠΊΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ Π΄ΠΎΠΊΠΎΠ»ΠΊΡ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π²ΠΎ Π³Π΅Π½Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΠΎΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½.
ΠΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ Π½Π° ΠΠ΅Π½ΠΊΠΈΠ½Ρ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ½ΠΎΠ³Ρ ΠΏΡΠΎΡΠΈΡΠ΅Π½ΠΈ Π²ΠΎ Vault
Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄Π΅Π½
ΠΡΠΎΡΠ΅ΡΠΎΡ Π½Π° Π²ΡΠ°ΡΠ°ΡΠ΅ Π½Π΅ Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½
ΠΠ° Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΡΠ΅ Π½Π°Π·Π°Π΄, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ, ΠΈ ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π½ ΡΠΎ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ²Π°Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° ΡΠ° ΠΈΠ·Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΡΠ°ΡΠ½ΠΎ Π·Π° Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠ°ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ ΡΠΎΡΠ½ΠΈΠΎΡ ID Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ°.
Π‘Π΅ Π΄Π²ΠΈΠΆΠΈΠΌΠ΅ ΠΊΠΎΠ½ GitOps
ΠΠ°ΡΠ°ΡΠ° ΡΠ΅Π»
Π‘Π°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠ° Π²ΡΠ°ΡΠΈΠΌΠ΅ ΡΠ°Π±Π΅Π»Π°ΡΠ° Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΡΠΎ ΡΠ° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°.
Π Π°Π±ΠΎΡΠ½ΠΈΠΎΡ ΡΠ΅ΠΊ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΈΡΡ ΠΊΠ°ΠΊΠΎ ΠΈ Π·Π° ΡΠ°Π·Π²ΠΎΡ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π° Π΅Π΄Π½Π° Π³ΡΠ°Π½ΠΊΠ° ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΡΠΈΡΠ½Π΅ Π΄Π° ΡΠ΅ ΡΠΎΠ²Π»Π°Π΄Π°, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ. ΠΠ»Π°Π²Π½Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΠΎΠ²ΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ ΠΈ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠ΅ΠΊ Π±ΠΈ Π±ΠΈΠ»Π° ΡΠΎΠ° ΡΓ¨ ΡΠ΅ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° Π²ΠΎ git (ΡΠ°ΠΌΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ Π½Π°ΡΠΈΠ½ΠΎΡ Π½Π° ΠΊΠΎΡ Π΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½Π° Π²ΠΎ Kubernetes).
ΠΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈ:
- ΠΠ½ΠΎΠ³Ρ ΠΏΠΎΡΠ°ΡΠ½ΠΎ Π·Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΡΠΎΡ. ΠΠΎΠ»Π΅ΡΠ½ΠΎ Π΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½.
- ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ°ΡΠ° Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΈΡΡΠΎΡΠΎ ΠΌΠ΅ΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ΄ΠΎΡ Π‘Π΅ΡΠ²ΠΈΡ.
- Π£ΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π½Π° Π³Π΅Π½Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ. Π£ΡΠ»ΡΠ³Π°ΡΠ° ΡΠ΅ ΠΈΠΌΠ° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π°ΡΠ΅ Π½Π° Helm. ΠΠ²Π° ΡΠ΅ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΆΠΈΠ²ΠΎΡΠ½ΠΈΠΎΡ ΡΠΈΠΊΠ»ΡΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° (Π²ΡΠ°ΡΠ°ΡΠ΅, Π½Π°Π΄Π³ΡΠ°Π΄Π±Π°) Π½Π° Π½Π°ΡΠΌΠ°Π»ΠΎ Π½ΠΈΠ²ΠΎ, Π·Π° Π΄Π° Π½Π΅ Π²Π»ΠΈΡΠ°Π΅ΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ.
- ΠΡΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ ΠΎΠ΄ git Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ: Π²ΡΠ°ΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π΄Π½Π΅Π²Π½ΠΈΠΊ Π·Π° ΡΠ΅Π²ΠΈΠ·ΠΈΡΠ° ΠΈΡΠ½. Π Π°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ.
- ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π·ΠΌΠΈΡΠ»ΠΈΡΠ΅ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΠΎΡ ΡΠ΅ΠΊ Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ ΡΠΎ Π°Π»Π°ΡΠΊΠΈ ΠΊΠ°ΠΊΠΎ Π‘ΠΊΠ΅Π»Π΅, ΡΠΎ ΠΊΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π³ΠΈ ΡΠ΅ΡΡΠΈΡΠ°Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π±Π»ΠΈΠ·ΠΎΠΊ Π΄ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ.
ΠΠΈΠ³ΡΠ°ΡΠΈΡΠ° Π²ΠΎ Π΄Π²Π° ΡΠ΅ΠΊΠΎΡΠ°
ΠΠ°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΎΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠ΅ΠΊ Π²Π΅ΡΠ΅ 2 Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΠΏΠ° ΡΠ°ΠΊΠ°ΠΌΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ°ΡΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΡΡΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ±Π΅Π·Π±ΠΎΠ»Π½Π°. ΠΠ°ΡΠΎΠ°, ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ ΡΡΠ΅Π΄Π΅Π½ ΡΠ΅ΠΊΠΎΡ Π½Π° ΠΏΠ°ΡΠΎΡ Π΄ΠΎ ΡΠ΅Π»ΡΠ°.
ΠΡΠ²Π°ΡΠ° ΡΠ°Π·Π° Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π°:
- ΠΠΌΠ°ΠΌΠ΅ ΡΠ»ΠΈΡΠ½Π° ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, Π½ΠΎ Π²ΠΎ Π΅Π΄Π΅Π½ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π°ΡΠ΅ΡΠ΅Π½ DailymotionRelease.
apiVersion: "v1"
kind: "DailymotionRelease"
metadata:
name: "app1.ns1"
environment: "dev"
branch: "mybranch"
spec:
slack_channel: "#admin"
chart_name: "app1"
scaling:
- context: "dev-us-central1-0"
replicas:
- name: "hermes"
count: 2
- context: "dev-europe-west1-0"
replicas:
- name: "app1-deploy"
count: 2
secrets:
- secret_id: "app1"
contexts:
- name: "default"
vaultPath: "/kv/dev/ns1/app1/test"
vaultKey: "password"
- name: "dev-europe-west1-0"
vaultPath: "/kv/dev/ns1/app1/test"
vaultKey: "password"
- 1 ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° (Π±Π΅Π· Π³Π΅Π½Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ).
- Π’Π°Π±Π΅Π»ΠΈ Π²ΠΎ git ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°.
Π Π°Π·Π³ΠΎΠ²Π°ΡΠ°Π²ΠΌΠ΅ ΡΠΎ ΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ° Π²Π΅ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π°. ΠΡΠ²Π°ΡΠ° ΡΠ°Π·Π° ΡΓ¨ ΡΡΡΠ΅ ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° CI ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°. ΠΠ°ΡΠΊΠΎΡΠΎ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΠΌ ΡΡΡΠ΅ Π΅Π΄Π΅Π½ ΠΏΠΎΡΡ Π·Π° Π²ΡΠΎΡΠ°ΡΠ° ΡΠ°Π·Π°: ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΏΡΠ΅ΡΠ΅Π»ΠΈΠ²ΠΌΠ΅ Π²ΠΎ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΎΡ ΡΠ΅ΠΊ Π½Π° GitOps
ΠΠ²Π΄Π΅ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΎΠΏΠΈΡΠ΅ΠΌΠ΅ Π½Π°ΡΠΈΠΎΡ Π½Π°ΠΏΡΠ΅Π΄ΠΎΠΊ Π²ΠΎ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΎΡ ΡΠ΅ΠΊ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π²ΠΎ ΡΠ΅ΠΊΠΎΡ Π½Π° ΠΈΠ·ΠΌΠΈΠ½Π°ΡΠΈΡΠ΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΡΡΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°ΡΠ° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ GitOps. Π‘Γ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠΌΠ΅ ΡΡΠΈΠ³Π½Π°Π»Π΅ Π΄ΠΎ ΡΠ΅Π»ΡΠ° ΠΈ ΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΡΠ²Π°ΠΌΠ΅ Π·Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅, Π½ΠΎ ΡΠ΅Π³Π° ΡΠΌΠ΅ ΡΠ±Π΅Π΄Π΅Π½ΠΈ Π΄Π΅ΠΊΠ° ΡΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠ²ΠΌΠ΅ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΊΠΎΠ³Π° ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ ΡΓ¨ ΠΈ Π΄Π° Π³ΠΎ Π΄ΠΎΠ±Π»ΠΈΠΆΠΈΠΌΠ΅ Π΄ΠΎ Π½Π°Π²ΠΈΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅.
ΠΠ·Π²ΠΎΡ: www.habr.com