ΠΠ°ΠΊ Dailymotion ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Kubernetes: Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠΈΠ΅ ΠΎΡ Dailymotion Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Kubernetes Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΠΈ 3 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ΠΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π΅ Π·Π°Π±Π°Π²Π½ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌ Π½Π°ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ.
ΠΡΠΊΡΠ΄Π΅ Π·Π°ΠΏΠΎΡΠ½Π°
Π’ΡΠΊ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Π²Π½Π΅Π΄ΡΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Kubernetes ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΏΠΎ ΡΠ²Π΅ΡΠ°.
ΠΠ° Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Kubernetes ΠΎΠ±Π΅ΠΊΡΠ° Π½Π°Π²Π΅Π΄Π½ΡΠΆ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅
ΠΠ°ΠΏΠΈΡΠ°Ρ ΠΌΠ΅ ΠΈ ΠΌΠ°Π»ΡΠΊ Python ΡΠΊΡΠΈΠΏΡ Π²ΡΡΡ Ρ Helm, Π·Π° Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ, Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ°ΠΉΠ½ΠΈ ΠΈ Π΄Π° Π²Π½Π΅Π΄ΡΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π½Π° ΡΠ΅Π½ΡΡΠ°Π»Π½Π° CI ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ° ΠΌΠΈΠ½Π΅ΠΌ ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΠΎΠΊΠ°ΡΠΎ ΡΠ΅ΡΠ΅ΡΠ΅ ΡΠΎΠ²Π°, ΠΏΡΡΠ²ΠΈΡΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π·Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° Helm 3 Π²Π΅ΡΠ΅ Π΅ ΠΎΠ±ΡΠ²Π΅Π½. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠ» Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π° ΡΠΏΡΠ°Π²ΡΠ½Π΅ Ρ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠΌΠ΅ ΡΡΠ΅ΡΠ°Π»ΠΈ Π² ΠΌΠΈΠ½Π°Π»ΠΎΡΠΎ.
Π Π°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ ΡΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊΡΠΌ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈΡΠ΅.
- ΠΠ»ΠΎΠ½ ΠΠ΅Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ΅ΡΡΠ²Π°Π½ΠΈ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°.
- ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° ΠΌΠ°ΠΉΡΡΠΎΡ, ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ ΠΏΠΎΠ΅ΡΠ°ΠΏΠ½ΠΎ.
- ΠΠ°ΠΊΡΠ°Ρ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅, Π·Π° Π΄Π° Π°Π½Π³Π°ΠΆΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΊΠ»ΠΎΠ½Π° ΡΡΠ³Π°Π½Π΅ ΠΈ Π³ΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ.
ΠΡΡΠΊΠ° ΡΡΠ΅Π΄Π° ΠΈΠΌΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ ΡΠ°ΡΡΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π½Π°ΡΠΈΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ ΠΈ Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ
Π‘ΡΡΡΠ²Π° ΡΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π°ΡΠΈΡΠΊΠ°Ρ ΠΊΠ»ΠΎΠ½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, Π²Π΅ΡΡΠΈΡ Π½Π° ΡΡΡ Π½Π°ΡΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π² dev Chartmuseum. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈ ΡΡΡΠ±Π²Π° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π²Π°ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ°, Π·Π° Π΄Π° Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π½ΡΠΊΠΎΠΉ Π΄ΡΡΠ³.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π½Π°ΡΠΈΡΡ ΠΌΠ°Π»ΡΠΊ Python ΡΠΊΡΠΈΠΏΡ Π²Π°Π»ΠΈΠ΄ΠΈΡΠ° Kubernetes ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠΏΡΡΠΌΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Kubernetes OpenAPI, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ
ΠΠ±ΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°
- ΠΠ°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΠΏΠΎΡΠ΅Π΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ°
gazr.io Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ (ΠΌΡΡ , ΡΠ΅ΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ°). - ΠΠ·Π±ΡΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π½Π° Python, ΠΊΠΎΠΈΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Ρ Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΊΠ»ΠΎΠ½.
- ΠΠ°Π»ΠΈΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° Kubernetes yaml ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Kubeval.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ° ΠΈ Π½Π΅ΠΉΠ½ΠΈΡΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ (Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½Π°ΡΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°).
- ΠΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ° Π² Chartmuseum, ΠΊΠΎΡΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΠ΅Π΄Π°
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅
Π€Π΅Π΄Π΅ΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅
ΠΠΌΠ°ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
ΠΌΠ΅
ΠΠ° Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΠΌΠ΅ ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠ° (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ ΠΏΡΡΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΡΡΠ°; Π½Π΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΎ Π²ΡΠ² Π²ΡΠΎΡΠ°ΡΠ°).
ΠΠ΅ΠΎ-ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π°ΡΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π° Π² 6 ΡΠ΅Π³ΠΈΠΎΠ½Π° - 3 Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΈ 3 Π² ΠΎΠ±Π»Π°ΠΊΠ°.
Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅
Π‘ΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° Global Helm
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 -}}
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ°Π±Π»ΠΎΠ½ Π½Π° Helm
Π’Π°Π·ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° Π² ΠΏΠΎΠΌΠΎΡΠ΅Π½ ΡΠ°Π±Π»ΠΎΠ½, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΏΡΠ΅ΡΡΡΠΏΠ²Π°Π½Π΅ΡΠΎ Π½Π° 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
ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°
Π’ΠΎΠ²Π° Π΅ ΡΡ Π΅ΠΌΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠΏΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π½Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅. ΠΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΡΠΏΠΊΠ° ΡΠ°Π·Π³ΡΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
Π‘ΡΡΠΏΠΊΠΈ Π·Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° Jenkins
ΠΠΌΠΈ ΡΠ°ΠΉΠ½ΠΈΡΠ΅?
ΠΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°, Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ°ΠΉΠ½ΠΈ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΡΠ° ΠΈ Π³ΠΈ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ Π² ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΡΡΠ΅Π·ΠΎΡ
ΠΠ°ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ ΠΈΠ·Π²Π»ΠΈΡΠ°Ρ ΡΠ°ΠΉΠ½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΡ 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.
- ΠΠΊΠΎ ΡΠ°ΠΉΠ½Π°ΡΠ° Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠ° ΠΊΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΡΠ΅Ρ, ΡΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Π·Π°ΠΏΠΈΡ. (Π’ΡΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡΡ cluster1 ΠΈΠΌΠ° ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π·Π° ΡΠ°ΠΉΠ½Π°ΡΠ° ΠΏΠ°ΡΠΎΠ»Π° Π½Π° stack-app1).
- Π ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅.
- ΠΠ° Π²ΡΠ΅ΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΡΠΎΠ·ΠΈ ΡΠΏΠΈΡΡΠΊ Π² Π’Π°ΠΉΠ½Π°ΡΠ° Π½Π° Kubernetes Π²ΠΌΡΠΊΠ²Π° ΡΠ΅ Π΄Π²ΠΎΠΉΠΊΠ° ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΠ°ΠΉΠ½ΠΈΡΡ ΡΠ°Π±Π»ΠΎΠ½ Π² Π½Π°ΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡ.
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
Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΠ°ΡΡ ΠΎΡ ΡΠ°Π·ΠΈ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°.
Π Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΄Π²Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ: Π±ΡΠΎΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (Π²Π΅ΡΡΠΈΡ). ΠΡΡΠ³ΠΈ, ΠΏΠΎ-ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΡΡΠ½ΠΎ ΠΈ ΡΠΎΠ²Π° Π΅ Π΄ΠΎΡΡΠ° ΡΡΡΠ΄Π½ΠΎ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π΅Π΄Π½Π° Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π½Π΅ΡΡΠΏΠ΅Ρ ΠΈ, ΠΊΠ°ΠΊΡΠΎ Π²ΠΈΠ΄ΡΡ ΠΌΠ΅ ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡ ΡΠΈ ΠΎΠΏΠΈΡ.
ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π΄ΠΎΠ±Π°Π²ΠΈ Π½ΠΎΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠΉ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΠΉΠ»Π°: Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠΏΠΈΡΡΠΊΠ° Ρ ΡΠ°ΠΉΠ½ΠΈ, Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΠ°ΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ, Π°ΠΊΠΎ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π°ΡΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°.
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π½Π° Jenkins ΡΠ° ΡΠ²ΡΡΠ΄Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π² Vault
Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄ΠΈΠ½
ΠΡΠΎΡΠ΅ΡΡΡ Π½Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π΅ Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½
ΠΠ° Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ΡΠ΅ Π½Π°Π·Π°Π΄, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΈ ΡΠΎΠ²Π° Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΎ Ρ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ·Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΡΠ°Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΡΠ½ΠΎ, Π·Π° Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° Π²Π΅ΡΡΠΈΡΡΠ°.
ΠΡΠΈΠ΄Π²ΠΈΠΆΠ²Π°ΠΌΠ΅ ΡΠ΅ ΠΊΡΠΌ GitOps
ΠΠ°ΡΠ°ΡΠ° ΡΠ΅Π»
ΠΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π²ΡΡΠ½Π΅ΠΌ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°.
Π Π°Π±ΠΎΡΠ½ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΡΠΈΡΡ ΠΊΠ°ΡΠΎ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π°Π΄Π΅Π½ ΠΊΠ»ΠΎΠ½ Π±ΡΠ΄Π΅ Π½Π°ΡΠΈΡΠ½Π°Ρ Π·Π° ΠΎΠ²Π»Π°Π΄ΡΠ²Π°Π½Π΅, Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΡΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈ ΡΠ΅ΠΊΡΡΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π±ΠΈ Π±ΠΈΠ»Π° ΡΠ°Π·ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Π² git (ΡΠ°ΠΌΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ Π² Kubernetes).
ΠΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°:
- ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΡΡΠ½ΠΎ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠΎ-Π»Π΅ΡΠ½ΠΎ Π΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π»ΠΎΠΊΠ°Π»Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°.
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½Π° ΡΡΡΠΎΡΠΎ ΠΌΡΡΡΠΎ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ΄Π° ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅.
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ. Π£ΡΠ»ΡΠ³Π°ΡΠ° ΡΠ΅ ΠΈΠΌΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Helm. Π’ΠΎΠ²Π° ΡΠ΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄, Π½Π°Π΄Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅) Π½Π° Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎΡΠΎ Π½ΠΈΠ²ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° Π½Π΅ Π·Π°ΡΡΠ³Π° Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ.
- ΠΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π½Π° git Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°: ΠΎΡΠΌΡΠ½Π° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΎΠ΄ΠΈΡΠ΅Π½ ΠΆΡΡΠ½Π°Π» ΠΈ Ρ.Π½. ΠΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΡΠ½Π° Π² Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° 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