27 ΠΌΠ°ΠΉ Π² Π³Π»Π°Π²Π½Π°ΡΠ° Π·Π°Π»Π° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° DevOpsConf 2019, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΊΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ ΡΠ΅ΡΡΠΈΠ²Π°Π»Π°
Π‘Π»Π΅Π΄ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π°ΡΠ°ΡΠ° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° (ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΏΡΠ΅Π΄ΠΈ ΠΊΠ°ΡΠΎ dapp) Π΄ΠΎΡΡΠΈΠ³Π½Π° ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ ΠΎΡ 1000 Π·Π²Π΅Π·Π΄ΠΈ Π² GitHub β Π½Π°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠ°ΡΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ ΡΠ»Π΅ΡΠ½ΠΈ ΠΆΠΈΠ²ΠΎΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ Π½Π° DevOps.
Π ΡΠ°ΠΊΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅
ΠΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° Kubernetes
ΠΠΎΠ²ΠΎΡΠ΅Π½Π΅ΡΠΎ Π²Π΅ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ Π·Π° werf, Π° Π·Π° CI/CD Π² Kubernetes, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π½Π°ΡΠΈΡΡ ΡΠΎΡΡΡΠ΅Ρ Π΅ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Π½ Π² Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ (ΠΠΎΠ²ΠΎΡΠΈΡ
Π·Π° ΡΠΎΠ²Π° Π²
ΠΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°ΡΠ° Π² Kubernetes?
- ΠΠΌΠ° Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΠΊΠΎΠ΄Π° ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΌΡ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΎ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Docker ΠΈ Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° Docker.
- Π‘ΡΡΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ° ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠ° Π΅ΡΠ°ΠΏΠ° Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ Π΄ΠΎ Kubernetes, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΆΠ΅Π»Π°Π½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΡΠ° ΠΈ Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°.
- ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ° ΡΠ΅ΡΡΠΎΠ²Π΅. ΠΡΠΊΠΎΠΈ ΠΎΡ ΡΡΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° (ΡΠ»Π΅Π΄Π²Π°ΠΉΠΊΠΈ ΡΡΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ) Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (Π² ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° Π½Π° K8s ΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΊΠ»ΡΡΡΠ΅Ρ) ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ ΡΠ°ΠΌ.
- Π Π½Π°ΠΊΡΠ°Ρ, ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ CI ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΎΡ Git (ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠΊΠ²Π°Π½ΠΈΡ Π²ΡΡΡ Ρ Π±ΡΡΠΎΠ½ΠΈ) ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π΅ΡΠ°ΠΏΠΈ: ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅, Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅, ΡΠ΅ΡΡΠ²Π°Π½Π΅.
Π’ΡΠΊ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²Π°ΠΆΠ½ΠΈ Π±Π΅Π»Π΅ΠΆΠΊΠΈ:
- ΠΠ°ΡΠΎΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° (Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°), ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π΅ΡΠ°ΠΏΠΈ (ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ Ρ.Π½.), ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΡΠ°ΠΊΡΠ². ΠΠΎΠ²ΠΎΡΠΈΡ
Π·Π° ΡΠΎΠ²Π° ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈ.
ΡΡΠΊ . - Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ»Π΅Π΄Π²Π°ΠΌΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΊΠ°ΡΠΎ ΠΊΠΎΠ΄ (IaC), ΠΊΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΎΡΠ½ΠΎ Π² Π΅Π΄Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° Π²ΠΈΠΆΡΠ΅
ΡΡΡΠΈΡ Π΄ΠΎΠΊΠ»Π°Π΄ . - ΠΠ΅ΡΠΈΠ³Π° Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° (Π΄ΠΎΡΡΠ°Π²ΠΊΠ°) ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π³ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠ°ΠΊΠ°: ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΡΠ³Π»ΠΎΠ±Π΅Π½ΠΎ, ΡΠ΅ΡΡΠ²Π°Π½ΠΎ, ΠΏΡΡΠ½Π°ΡΠΎ (Π΅ΡΠ°ΠΏ Π½Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅) ΠΈ ΡΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ - Π΄ΠΎΡΡΠ°Π²ΠΊΠ°ΡΠ° Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π°. ΠΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ΅ ΠΏΡΡΠ½Π°Π»ΠΈ, Π½Π΅ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π³ΠΎ Π΄ΠΎΡΡΠ°Π²ΠΈΡ ΡΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠΉ ΡΡΠΏΡ Π΄Π° ΠΎΡΠΈΠ΄Π΅ ΡΠ°ΠΌ ΠΈ ΡΠΎΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΈ. Π’Π°ΠΊΠ° ΡΠ΅ Π²ΡΡΠ²Π°ΠΌ, ΡΠ΅ Π²Π΅ΡΠΈΠ³Π°ΡΠ° Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π° ΡΠ°ΠΌΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ Π΅ΡΠ°ΠΏ (Π±ΡΠ³Π°ΠΌ), ΠΈΠ»ΠΈ ΠΏΠΎ-ΡΠΎΡΠ½ΠΎ, Π΄ΠΎΡΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Π² ΠΊΠΎΠΉΡΠΎ ΠΊΠΎΠ΄ΡΡ Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ (Π·Π°ΠΌΡΠ½Π°ΡΠ° ΠΌΡ Ρ Π½ΠΎΠ²).
ΠΠ΅ΠΊΠ° ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ Π³ΠΎΡΠ½Π°ΡΠ° ΡΡ
Π΅ΠΌΠ° Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π² Kubernetes: ΡΡ Π΅ ΠΈΠ·ΠΌΠΈΡΠ»Π΅Π½Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΎΡ Π½Π°Ρ, Π½ΠΎ Π±ΡΠΊΠ²Π°Π»Π½ΠΎ ΠΎΡ Π²ΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΡΠ΅ Ρ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΡΡΠ½ΠΎΡΡ ΡΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» ΡΠ΅Π³Π° ΡΠ΅ Π½Π°ΡΠΈΡΠ° GitOps (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠ΅ΡΠΌΠΈΠ½Π° ΠΈ ΠΈΠ΄Π΅ΠΈΡΠ΅ Π·Π°Π΄ Π½Π΅Π³ΠΎ
ΠΡΠ°ΠΏ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅
ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Docker ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π· 2019 Π³., ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠ΅ΠΊΠΈ Π·Π½Π°Π΅ ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ Dockerfiles ΠΈ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° docker build
?.. ΠΡΠΎ Π½ΡΠ°Π½ΡΠΈΡΠ΅, Π½Π° ΠΊΠΎΠΈΡΠΎ Π±ΠΈΡ
ΠΈΡΠΊΠ°Π» Π΄Π° ΠΎΠ±ΡΡΠ½Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:
- Π’Π΅Π³Π»ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
ΠΌΠ½ΠΎΠ³ΠΎΠ΅ΡΠ°ΠΏΠ΅Π½ Π΄Π° ΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ°ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΈΡΡΠΈΠ½Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ°. - ΠΡΠΎΠΉ ΡΠ»ΠΎΠ΅Π²Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²Π΅Π΄Π΅Π½ΠΈ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠ΅Π· ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π²Π΅ΡΠΈΠ³ΠΈ ΠΎΡ
RUN
-Π·Π°ΠΏΠΎΠ²Π΅Π΄ΠΈ ΡΠΏΠΎΡΠ΅Π΄ ΡΠΌΠΈΡΡΠ»Π°. - Π’ΠΎΠ²Π° ΠΎΠ±Π°ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, Π·Π°ΡΠΎΡΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ±ΠΎΡΠΊΠ°ΡΠ° ΡΠ΅ ΡΡΠΈΠ½Π΅, ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ Π²Π΅ΡΠΈΠ³Π°ΡΠ°, ΠΊΠΎΡΡΠΎ Π΅ ΠΏΡΠΈΡΠΈΠ½ΠΈΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
- Π‘ΠΊΠΎΡΠΎΡΡ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, Π·Π°ΡΠΎΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π±ΡΡΠ·ΠΎ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΠΌ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π² Π΅Π·ΠΈΠΊΠΎΠ²ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
- Π§Π΅ΡΡΠΎ ΠΎΡ Π΅Π΄Π½ΠΎ Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΡΠ΅Π· Π½Π°Π±ΠΎΡ ΠΎΡ Dockerfiles (ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ Π΅ΡΠ°ΠΏΠΈ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ») ΠΈ Bash ΡΠΊΡΠΈΠΏΡ Ρ ΡΡΡ Π½ΠΎΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅.
Π’ΠΎΠ²Π° Π±Π΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π²ΡΡΡ ΡΡ Π½Π° Π°ΠΉΡΠ±Π΅ΡΠ³Π°, ΠΏΡΠ΅Π΄ ΠΊΠΎΠΉΡΠΎ ΡΠ° ΠΈΠ·ΠΏΡΠ°Π²Π΅Π½ΠΈ Π²ΡΠΈΡΠΊΠΈ. ΠΠΎ ΠΈΠΌΠ° ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ:
- Π§Π΅ΡΡΠΎ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ Π½Π΅ΡΠΎ ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ΅ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠ°ΡΠΎ apt Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π°).
- ΠΠΈΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Ansible Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΏΠΈΡΠ΅ Π² shell.
- ΠΠΈΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π±Π΅Π· Docker (Π·Π°ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, Π² ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ Π·Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Kubernetes ΠΊΠ»ΡΡΡΠ΅Ρ, Π² ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ?).
- ΠΠ°ΡΠ°Π»Π΅Π»Π΅Π½ ΠΌΠΎΠ½ΡΠ°ΠΆ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ° ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ: ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ Dockerfile (Π°ΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° multi-stage), Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠ° Π½Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π½ΡΠΊΠΎΠ»ΠΊΠΎ Dockerfiles.
- Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅: ΠΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ Π½Π΅ΡΠ° Π² ΠΊΠ°ΠΏΡΡΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° βΠ΅ΡΠΈΠΌΠ΅ΡΠ½ΠΈβ, Π·Π°ΡΠΎΡΠΎ ΡΠ΅Ρ Π½ΠΈΡΡ ΠΊΠ΅Ρ ΠΈΠ·ΡΠ΅Π·Π²Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π½ΡΠΊΡΠ΄Π΅ ΠΎΡΠ΄Π΅Π»Π½ΠΎ.
- ΠΠ°ΠΊΡΠ°Ρ Π½Π°ΡΠ΅ΠΊΠΎΡ Π²ΡΡΡ Π° Π½Π° ΠΆΠ΅Π»Π°Π½ΠΈΡΡΠ° Π°Π²ΡΠΎΠΌΠ°Π³ΠΈΡ: ΠΠΈ Π±ΠΈΠ»ΠΎ ΠΈΠ΄Π΅Π°Π»Π½ΠΎ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, Π΄Π° Π²ΡΠ²Π΅Π΄Π΅ΡΠ΅ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ³Π»ΠΎΠ±Π΅Π½ΠΎ Ρ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΊΠ°ΠΊ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ. ΠΠΎ Π°Π· Π»ΠΈΡΠ½ΠΎ Π½Π΅ ΡΡΠΌ ΡΠΈΠ³ΡΡΠ΅Π½, ΡΠ΅ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΡΡ Π²ΡΠΈΡΠΊΠΈ Π½ΡΠ°Π½ΡΠΈ.
Π Π΅ΡΠΎ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅:
-
moby/buildkit β ΡΡΡΠΎΠΈΡΠ΅Π» ΠΎΡ Docker Inc (Π²Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ Π² ΡΠ΅ΠΊΡΡΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° Docker), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΡΠ΅ΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ; -
ΠΊΠ°Π½ΠΈΠΊΠΎ β ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΎΡ Google, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΡΠ΅ Π±Π΅Π· Docker; -
Buildpacks.io β ΠΠΏΠΈΡΡΡ Π½Π° CNCF Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° ΠΌΠ°Π³ΠΈΡ ΠΈ ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π±Π°Π·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅; - ΠΈ ΠΊΡΠΏ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡ
Π±ΠΈΠ»Π΄Π° ,ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ/ΠΈΠ·ΠΎΠ±Ρ ...
...ΠΈ Π²ΠΈΠΆΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ Π·Π²Π΅Π·Π΄ΠΈ ΠΈΠΌΠ°Ρ Π² GitHub. Π’ΠΎΠ΅ΡΡ, ΠΎΡ Π΅Π΄Π½Π° ΡΡΡΠ°Π½Π°, docker build
ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ, Π½ΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Π½Π΅ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ - Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΠ²ΠΎ Π·Π° ΡΠΎΠ²Π° Π΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΎΡΠΈ, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ΡΠ°Π²Π° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅.
Π‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π² werf
Π’Π°ΠΊΠ° ΡΠ΅ ΡΡΡΠ±Π²Π°
ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, Π·Π°ΡΡΠΈΡ
ΠΎΠ²Π°Π½ΠΈ Π² ΡΠΈΠ½ΡΠΎ, Π²Π΅ΡΠ΅ ΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ, ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ Ρ
ΠΎΡΡ, Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π½ΠΈ Π² ΠΆΡΠ»ΡΠΎ, ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π²ΡΡΡΠ΅Π½ΠΈ Π΄ΠΎ ΠΊΡΠ°Ρ Π½Π° Π»ΡΡΠΎΡΠΎ.
ΠΡΠ°ΠΏ Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° (ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅)
ΠΠ°Π±ΡΠ°Ρ
ΠΌΠ΅ docker push
... - ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΡΡΡΠ΄Π½ΠΎ Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ°? Π ΡΠΎΠ³Π°Π²Π° Π²ΡΠ·Π½ΠΈΠΊΠ²Π° Π²ΡΠΏΡΠΎΡΡΡ: βΠΠ°ΠΊΡΠ² Π΅ΡΠΈΠΊΠ΅Ρ Π΄Π° ΡΠ»ΠΎΠΆΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ?β ΠΡΠ·Π½ΠΈΠΊΠ²Π° ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ°, ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Gitflow (ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π° Git ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ) ΠΈ Kubernetes ΠΈ ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠ° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΠ»ΡΡΠ²Π°ΡΠΎΡΠΎ ΡΠ΅ Π² Kubernetes ΡΠ»Π΅Π΄Π²Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² Git. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Git Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ Π½ΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° ΠΈΡΡΠΈΠ½Π°.
ΠΠ°ΠΊΠ²ΠΎ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΡΡΠ΄Π½ΠΎ ΠΈΠΌΠ° Π² ΡΠΎΠ²Π°? ΠΡΠΈΠ³ΡΡΠ΅ΡΠ΅ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ: ΠΎΡ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ Π² Git, ΠΊΠΎΠΉΡΠΎ Π΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎ ΠΏΡΠΈΡΠΎΠ΄Π° (Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½), ΠΊΡΠΌ Docker ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π·Π°ΠΏΠ°Π·ΠΈ ΡΡΡΠΎΡΠΎ.
ΠΠ° Π½Π°Ρ ΡΡΡΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΏΡΠΎΠΈΠ·Ρ ΠΎΠ΄Π°, Π·Π°ΡΠΎΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΎΡ ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΈΡ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ Π² Kubernetes (ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ°Π·Π»ΠΈΠΊΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π΅ΡΠ°).
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅
ΠΡΡΠ²ΠΈΡΡ Π΅ ΠΏΡΠΎΡΡ git ΡΠ°Π³. ΠΠΌΠ°ΠΌΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΡΠΎ 1.0
. Kubernetes ΠΈΠΌΠ° ΡΡΠ΅Π½Π° ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΠΊΠ°ΡΠ²Π° ΡΠΎΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π Git ΠΏΡΠ°Π²ΠΈΠΌ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ ΠΈ Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠ°ΡΠΊΠΈΡΠ°ΠΌΠ΅ 2.0
. Π‘ΡΠ±ΠΈΡΠ°ΠΌΠ΅ Π³ΠΎ ΡΠΏΠΎΡΠ΅Π΄ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ ΠΎΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Ρ Π΅ΡΠΈΠΊΠ΅ΡΠ° 2.0
. ΠΡΡΠΊΠ°ΠΌΠ΅ Π³ΠΎ Π½Π° ΡΡΠ΅Π½Π° ΠΈ, Π°ΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, ΡΠΎΠ³Π°Π²Π° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ.
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Ρ ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π΅, ΡΠ΅ ΠΏΡΡΠ²ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡ
ΠΌΠ΅ Π΅ΡΠΈΠΊΠ΅ΡΠ° ΠΈ Π΅Π΄Π²Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π³ΠΎ ΡΠ΅ΡΡΠ²Π°Ρ
ΠΌΠ΅ ΠΈ Π²Π½Π΅Π΄ΡΠΈΡ
ΠΌΠ΅. ΠΠ°ΡΠΎ? ΠΡΡΠ²ΠΎ, ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠΎ Π½Π΅Π»ΠΎΠ³ΠΈΡΠ½ΠΎ: Π½ΠΈΠ΅ ΠΈΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠΎΡΡΡΠ΅Ρ, ΠΊΠΎΡΡΠΎ ΠΎΡΠ΅ Π½Π΅ ΡΠΌΠ΅ ΡΠ΅ΡΡΠ²Π°Π»ΠΈ (Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π΄ΡΡΠ³ΠΎ, Π·Π°ΡΠΎΡΠΎ Π·Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ Π΅ΡΠΈΠΊΠ΅Ρ). ΠΡΠΎΡΠΎ, ΡΠΎΠ·ΠΈ ΠΏΡΡ Π½Π΅ Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Gitflow.
ΠΡΠΎΡΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ - git commit + Π΅ΡΠΈΠΊΠ΅Ρ. ΠΠ»Π°Π²Π½ΠΈΡΡ ΠΊΠ»ΠΎΠ½ ΠΈΠΌΠ° Π΅ΡΠΈΠΊΠ΅Ρ 1.0
; Π·Π° Π½Π΅Π³ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΎ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠ»ΡΡΡΠ΅ΡΡΡ Π½Π° Kubernetes ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ ΠΊΠΎΠ½ΡΡΡΠΈ Π·Π° Π΅ΡΠ°ΠΏΠΈ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ»Π΅Π΄Π²Π°ΠΌΠ΅ Gitflow: Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° (develop
) ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° #c1
. ΠΠΈΠ΅ Π³ΠΎ ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ ΠΈ Π³ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌΠ΅ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΠ·ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (#c1
). Π‘ΡΡ ΡΡΡΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΡΠΊΠ°ΠΌΠ΅ Π·Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠ΅Π³Π»Π΅Π΄. ΠΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠΌ ΡΡΡΠΎΡΠΎ Ρ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈΡΠ΅ #c2
ΠΈ #c3
.
ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π·Π±ΡΠ°Ρ
ΠΌΠ΅, ΡΠ΅ ΠΈΠΌΠ° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ. Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»ΠΎΠ½ Π² Git release_1.1
(Π½Π° ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° #c3
Π½Π° develop
). ΠΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° ΡΡΠ±ΠΈΡΠ°ΡΠ΅ ΡΠΎΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, Π·Π°ΡΠΎΡΠΎ... ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΡΡΡΠΏΠΊΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π³ΠΎ ΡΠ°Π·Π³ΡΡΠ½Π΅ΠΌ Π·Π° ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ°. ΠΠΎΠΏΡΠ°Π²ΡΠΌΠ΅ Π³ΡΠ΅ΡΠΊΠΈ Π² #c4
ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½ ΡΠ΅ ΡΠ°Π·Π³ΡΡΡΠ°Ρ Π·Π° ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ°. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π² develop
, ΠΎΡΠΊΡΠ΄Π΅ΡΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ release_1.1
. Π Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ ΠΈ ΠΊΠ°ΡΠ΅Π½ Π² Π΅ΡΠ°ΠΏΠ°, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΡΠΌΠ΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ (#c25
).
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°ΠΌΠ΅ (Ρ ΠΏΡΠ΅Π²ΡΡΡΠ°Π½Π΅ Π½Π°ΠΏΡΠ΅Π΄) ΠΊΠ»ΠΎΠ½Π° Π·Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ (release_1.1
) Π² master. ΠΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π΅ΡΠΈΠΊΠ΅Ρ Ρ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠΎΠ·ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ (1.1
). ΠΠΎ ΡΠΎΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ΅ Π΅ ΡΡΠ±ΡΠ°Π½ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ Π·Π° Π΄Π° Π½Π΅ Π³ΠΎ ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ, ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Π²ΡΠΎΡΠΈ Π΅ΡΠΈΠΊΠ΅Ρ ΠΊΡΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (ΡΠ΅Π³Π° ΡΠΎ ΠΈΠΌΠ° ΡΠ°Π³ΠΎΠ²Π΅ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° #c25
ΠΈ 1.1
). Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π³ΠΎ ΠΏΡΡΠΊΠ°ΠΌΠ΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ.
ΠΠΌΠ° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ, ΡΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΊΠ°ΡΠ²Π° Π² Π΅ΡΠ°ΠΏΠ° (#c25
), Π° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ (1.1
), Π½ΠΎ Π·Π½Π°Π΅ΠΌ, ΡΠ΅ βΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈβ ΡΠΎΠ²Π° ΡΠ° Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΡΠ°.
ΠΡΡΠΈΠ½ΡΠΊΠΈΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π΅, ΡΠ΅ Π½ΡΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅, ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π±ΡΡΠ·ΠΎ ΠΏΡΠ΅Π²ΡΡΡΠ°Π½Π΅ Π½Π°ΠΏΡΠ΅Π΄.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΠΌ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΡΠΈΠΊ... ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΡΠΎΡΡ Dockerfile:
FROM ruby:2.3 as assets
RUN mkdir -p /app
WORKDIR /app
COPY . ./
RUN gem install bundler && bundle install
RUN bundle exec rake assets:precompile
CMD bundle exec puma -C config/puma.rb
FROM nginx:alpine
COPY --from=assets /app/public /usr/share/nginx/www/public
ΠΠ΅ΠΊΠ° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» ΠΎΡ Π½Π΅Π³ΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ:
- SHA256 ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (
ruby:2.3
ΠΈnginx:alpine
), ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΡΠΌΠΈ Π½Π° ΡΡΡ Π½ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅; - Π²ΡΠΈΡΠΊΠΈ ΠΎΡΠ±ΠΎΡΠΈ (
RUN
,CMD
ΠΈ Π΄Ρ.); - SHA256 ΠΎΡ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
... ΠΈ Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ° (ΠΎΡΠ½ΠΎΠ²ΠΎ SHA256) ΠΎΡ ΡΠ°ΠΊΡΠ² ΡΠ°ΠΉΠ». Π’ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡ Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Docker ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠ° ΡΠ΅ ββΠ²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, Ρ.Π΅. ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ.
Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΡ Π²Π΅ΡΡΠΈΡ ΠΊΡΠΌ master, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ΅Π°Π»Π½ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅: ΡΠΎ ΡΠ΅ ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π½ΠΎ ΡΡΡΠΈΡ ΠΏΠΎΠ΄ΠΏΠΈΡ. Π‘ΡΡ ΡΡΡΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ΅ Π²Π½Π΅Π΄ΡΠΈΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΡΠ°.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΠΊΡΡ Π΅, ΡΠ΅ ΡΠ΅Π³Π° Π½ΡΠΌΠ° Π΄Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ Π΅ Π±ΠΈΠ» ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ ΠΊΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΡΠ° - ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΠΌΠΈ ΡΠ°Π±ΠΎΡΡΡ ΡΠ°ΠΌΠΎ Π² Π΅Π΄Π½Π° ΠΏΠΎΡΠΎΠΊΠ°. Π’ΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° ΡΡΠ΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠ»ΠΎΠΉ Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ - ΡΠ΅ Π²ΠΈ ΡΠ°Π·ΠΊΠ°ΠΆΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ.
ΠΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π² werf
Π werf ΠΎΡΠΈΠ΄ΠΎΡ ΠΌΠ΅ ΠΎΡΠ΅ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ ΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Ρ ΠΊΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π½Π° Π΅Π΄Π½Π° ΠΌΠ°ΡΠΈΠ½Π°... Π ΡΠ°ΠΊΠ°, Π½ΠΈΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ Π΄Π²Π° ΡΠΈΠΏΠ° Docker ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½ΠΈΠ΅ Π³ΠΈ Π½Π°ΡΠΈΡΠ°ΠΌΠ΅ Π΅ΡΠ°ΠΏ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° werf Git ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΠΈΡΠ²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ (ΠΏΡΠ΅Π΄ΠΈ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌ, ΠΏΡΠ΅Π΄ΠΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°, ΡΡΡΡΠΊΡΡΡΠ°). Π‘ΡΠ±ΠΈΡΠ°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΡΠ²ΠΈΡ Π΅ΡΠ°ΠΏ ΡΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΠ°, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΠΌΠ° Π½Π° ΠΏΡΡΠ²ΠΈΡΠ΅ ΡΡΡΠΏΠΊΠΈ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄, Π·Π° Π½ΠΎΠ²ΠΎΡΠΎ ΡΡΠ΅Π½ΠΈΡΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΠΌΠ°... Π’Π΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΡΡ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π΅ΡΠ°ΠΏΠΈ, Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΡΠ΅Π½ΠΈΡΠ½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈΠΌ ΠΊΡΠ°ΠΉΠ½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ Π·Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠΈΠ·Ρ ΠΎΠ΄. Π Π½ΠΈΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ).
ΠΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠΈΡ, Π² ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ? ΠΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΎ Π½ΠΎΠ²ΠΎ ΡΡΠ΅Π½ΠΈΡΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π‘ΠΈΠ³Π½Π°ΡΡΡΠ°ΡΠ° ΠΌΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ° Π½Π° ΡΡΠ°ΡΠΎΡΠΎ ΡΡΠ΅Π½ΠΈΡΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½ΠΎΠ²Π°ΡΠ° ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ. ΠΡ ΡΠΎΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° Π½ΠΎΠ²ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ Π²ΡΠ·Π½ΠΈΠΊΠ½Π΅ ΠΏΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π΄ΡΡΠ³ΠΈ Π΅ΡΠ°ΠΏΠΈ.
ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΡΡΠ΅Π½ΠΈΡΠ½ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ° ΠΊΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, Π° Π²Π΅ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΠΎΡ Π½Π΅Π³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ ΠΊΠ°ΡΠ²Π°Ρ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° Docker.
ΠΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΡ
ΠΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΎΡΡΠ°Π½Π°Π»ΠΈ Π²ΠΈΡΡΡΠΈ ΡΠ»Π΅Π΄ ΠΈΠ·ΡΡΠΈΡΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈ - ΡΠΎΠ²Π° Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΡΠ°ΠΌΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π° Docker. ΠΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π½Π°ΡΡΡΠΏΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Docker ΡΠ°Π³ΠΎΠ²Π΅ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ Π²Π΅ΡΠ΅ Π½Π΅ Π½ΠΈ ΡΡΡΠ±Π²Π°Ρ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΡΡ , Π½ΠΎ Π·Π°Π΅ΠΌΠ°Ρ ΠΌΡΡΡΠΎ (ΠΈ/ΠΈΠ»ΠΈ ΠΏΠ»Π°ΡΠ°ΠΌΠ΅ Π·Π° ΡΠΎΠ²Π°).
ΠΠ°ΠΊΠ²ΠΈ ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅?
- ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π½Π΅ ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½ΠΈΡΠΎ Π½Π΅ ΡΠΈΡΡΠΈ. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° Π½Π°ΠΈΡΡΠΈΠ½Π° Π΅ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΏΠ»Π°ΡΠΈΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ Π·Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΄Π° ΡΠ°Π·ΠΏΠ»Π΅ΡΠ΅ΡΠ΅ ΠΎΠ³ΡΠΎΠΌΠ½Π° ΠΏΠ»Π΅ΡΠ΅Π½ΠΈΡΠ° ΠΎΡ ΡΠ°Π³ΠΎΠ²Π΅. ΠΠΎ ΡΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ Π΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ.
- ΠΡΠ»Π½ΠΎ Π½ΡΠ»ΠΈΡΠ°Π½Π΅. ΠΠΊΠΎ ΠΈΠ·ΡΡΠΈΠ΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠ΅ΠΊΡΡΠΈΡΠ΅ Π² CI ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΠ·Π½ΠΈΠΊΠ½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ Π±ΡΠ΄Π΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ, Π·Π° Π½Π΅Π³ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π°ΡΠ΅Π΄Π΅Π½ΠΎ Π½ΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ - ΡΠ°ΠΊΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΡΠ΅ΡΡΠ²Π°Π½ΠΎ ΠΎΡ Π½ΠΈΠΊΠΎΠ³ΠΎ. Π’ΠΎΠ²Π° ΡΠ±ΠΈΠ²Π° ΠΈΠ΄Π΅ΡΡΠ° Π·Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°.
- Π‘ΠΈΠ½ΡΠΎΠ·Π΅Π»Π΅Π½ΠΎ. ΠΠ΄ΠΈΠ½ ΡΠ΅Π³ΠΈΡΡΡΡ Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° ΠΏΡΠ΅ΠΏΡΠ»Π²Π° - ΠΊΠ°ΡΠ²Π°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π΄ΡΡΠ³. Π‘ΡΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΊΠ°ΡΠΎ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄: Π² ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΡΠΈΡΡΠΈΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡΠ°, ΠΊΠΎΠΉΡΠΎ Π΅ Π·Π°ΠΏΠΎΡΠ½Π°Π» Π΄Π° ΠΏΡΠ΅ΠΏΡΠ»Π²Π°?
- ΠΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎ-ΡΡΠ°ΡΠΈ ΠΎΡ 1 ΠΌΠ΅ΡΠ΅Ρ? ΠΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠ΅ ΠΈΠΌΠ° ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΡΡΠΎ Π½Π΅ Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΡ ΠΌΠ΅ΡΠ΅Ρ...
- ΡΡΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡΠΎ.
ΠΠΌΠ° Π΄Π²Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΈ ΠΎΠΏΡΠΈΠΈ: Π½Π΅ ΠΏΠΎΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΡΠΈΠ½ΡΠΎ-Π·Π΅Π»Π΅Π½ΠΎ + ΡΡΡΠ½ΠΎ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ: ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΏΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡΠ°, ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ² ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π½ΠΎΠ²ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΡΠΌ Π½Π΅Π³ΠΎ Π² ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ΅ΡΠ΅Ρ. Π ΡΠ»Π΅Π΄ ΠΌΠ΅ΡΠ΅Ρ Π²ΠΈΠΆΡΠ΅ ΠΊΠΎΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² Kubernetes Π²ΡΠ΅ ΠΎΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠ°ΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΈ Π³ΠΈ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅ΡΠ΅ ΡΡΡΠΎ Π² Π½ΠΎΠ²ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΡ.
ΠΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠΈΠ³Π½Π°Ρ ΠΌΠ΅ werf? ΠΠΈΠ΅ ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅:
- Git head: Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π³ΠΎΠ²Π΅, Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ - Π°ΠΊΠΎ ΠΏΡΠΈΠ΅ΠΌΠ΅ΠΌ, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΎ Π² Git Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° (ΠΈ Π°ΠΊΠΎ Π½Π΅, ΡΠΎΠ³Π°Π²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΡΡΠΈΠ΅ΠΌ Π² ΡΠ°ΠΌΠΈΡ Git);
- Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠΌΠΏΠ²Π°Ρ ΠΊΡΠΌ Kubernetes;
- ΡΡΠ°ΡΠΈ ReplicaSets (ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°ΡΠΎ Π½Π°ΡΠΊΠΎΡΠΎ), ΠΈ ΡΡΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΡΠΊΠ°Π½ΠΈΡΠ°ΠΌΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡΡΠ° Π½Π° Helm ΠΈ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΌ.
... ΠΈ Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ Π±ΡΠ» ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΡΠΎΠ·ΠΈ Π½Π°Π±ΠΎΡ - ΡΠΏΠΈΡΡΠΊ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ° Π΄Π° ΠΈΠ·ΡΡΠΈΠ΅ΠΌ. ΠΠ·ΡΠΈΡΡΠ²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΌΠΈΡΠ°ΠΌΠ΅ ΠΎΡΠΈΡΠΎΡΠ΅Π»ΠΈ ΡΡΠ΅Π½ΠΈΡΠ½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π³ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅.
ΠΡΠ°ΠΏ Π½Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅
ΠΠ°Π΄Π΅ΠΆΠ΄Π½Π° Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΡΡ
ΠΡΡΠ²Π°ΡΠ° ΡΠΎΡΠΊΠ°, Π½Π° ΠΊΠΎΡΡΠΎ Π±ΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° ΠΎΠ±ΡΡΠ½Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ, Π΅ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠ°, Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π° Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡΡ YAML Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΎΠΏΠΈΡΠ²Π°Ρ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Kubernetes, Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ°, ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Kubernetes Π΄ΠΎΠ±Π°Π²Ρ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°:
- ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ;
- ΡΠ΅ΡΠ²ΠΈΠ·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ;
- ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅;
- ΡΠ°Π·Π΄Π΅Π» Ρ Π°ΠΊΡΡΠ°Π»Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅;
- ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΊΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ webhook Π·Π° Π΄ΠΎΠΏΡΡΠΊΠ°Π½Π΅;
- ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ (ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°).
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π½ΠΎΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡ (Π½ΠΎΠ²), Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΈ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠ°ΡΠ°, βΠΆΠΈΠ²Π°β ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ Π½Π΅Π³ΠΎ (ΠΆΠΈΠ²Π΅Ρ). ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠΎΠ²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°Π²Π½ΠΈΠΌ Π½ΠΎΠ² Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΎ) ΠΈ ΡΠ΅ Π½Π°Π²ΠΈΠΉΡΠ΅ ΠΆΠΈΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΠ»Π°ΡΡΠΈΡ.
Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ΅ Π½Π°ΡΠΈΡΠ° 2-ΠΏΠΎΡΠΎΡΠ½ΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅. ΠΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² Π₯Π΅Π»ΠΌ.
ΠΠΌΠ° ΠΈ 3-ΠΏΠΎΡΠΎΡΠ½ΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΏΠΎ ΡΠΎΠ²Π°, ΡΠ΅:
- ΡΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΎ ΠΈ Π½ΠΎΠ², ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΈΠ·ΡΡΠΈΡΠΎ;
- ΡΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ Π½ΠΎΠ² ΠΈ ΠΆΠΈΠ²Π΅Ρ, ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΎ;
- ΡΡΠΌΠΈΡΠ°Π½ΠΈΡΡ ΠΏΠ»Π°ΡΡΠΈΡ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΡΠΌ ΠΆΠΈΠ²Π΅Ρ.
Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°ΠΌΠ΅ Π½Π°Π΄ 1000 ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Helm, ΡΠ°ΠΊΠ° ΡΠ΅ Π²ΡΡΡΠ½ΠΎΡΡ ΠΆΠΈΠ²Π΅Π΅ΠΌ Ρ Π΄Π²ΡΠΏΠΎΡΠΎΡΠ½ΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅. Π’ΠΎΠΉ ΠΎΠ±Π°ΡΠ΅ ΠΈΠΌΠ° ΡΠ΅Π΄ΠΈΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠΌΠ΅ ΡΠ°Π·ΡΠ΅ΡΠΈΠ»ΠΈ Ρ Π½Π°ΡΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π½Π° Helm Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ.
Π Π΅Π°Π»Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π½Π°ΡΠ°ΡΠ° CI ΡΠΈΡΡΠ΅ΠΌΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½ΠΎΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° Kubernetes Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅, ΡΡ Ρ ΠΏΡΠ΅Π΄Π°Π²Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ (ΠΡΠΈΠ»ΠΎΠΆΠΈ) ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅Ρ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Helm ΠΈΠ»ΠΈ kubectl apply
. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π²Π΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎΡΠΎ N-way ΡΠ»ΠΈΠ²Π°Π½Π΅, Π½Π° ΠΊΠΎΠ΅ΡΠΎ API Π½Π° Kubernetes ΠΎΡΠ³ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π° CI ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, Π° ΡΠΎΠ²Π° Π½Π° Π½Π΅ΠΉΠ½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π».
ΠΠΌΠ° ΠΎΠ±Π°ΡΠ΅ ΠΎΠ³ΡΠΎΠΌΠ΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ: Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅. ΠΠΊΠΎ Kubernetes ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΈ Π³ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠΈ, Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊΡΠ² ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° pods Π²ΡΠ² ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π½ΠΎ Π½Π΅ ΠΈ Π² Π·Π°Π΄Π½ΠΈΡ ΠΊΡΠ°ΠΉ ΠΈ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ, ΡΠ°Π·ΠΈ ΡΡ
Π΅ΠΌΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π²ΡΡΠ·ΠΊΠ° - ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΡΠ°ΠΊΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΠΎΡ Kubernetes API ΠΈ ΡΠ΅ Ρ ΠΏΡΠ΅Π΄Π°Π²Π° Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΠ΅Π°Π»Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° Π½Π΅ΡΠ°ΡΠ°. Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ
ΠΌΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π² Go -
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ werf ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ Π² Deployments ΠΈΠ»ΠΈ StatefulSets. ΠΡΠ½ΠΎΠ²Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΡ - fail-mode
- ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
-
IgnoreAndContinueDeployProcess
β ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π²Π°ΠΌΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ; -
FailWholeDeployProcessImmediately
β Π³ΡΠ΅ΡΠΊΠ° Π² ΡΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΏΠΈΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅; -
HopeUntilEndOfDeployProcess
β Π½Π°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎ ΠΊΡΠ°Ρ Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΡ fail-mode
:
ΠΠΎΠ³Π°ΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°ΠΌΠ΅ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ, Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ (MongoDB) ΠΌΠΎΠΆΠ΅ ΠΎΡΠ΅ Π΄Π° Π½Π΅ Π΅ Π³ΠΎΡΠΎΠ²Π° - Π²Π½Π΅Π΄ΡΡΠ²Π°Π½ΠΈΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΈ. ΠΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΡΠ°ΠΊΠ°ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Π² ΠΊΠΎΠΉΡΠΎ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅, ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ.
ΠΠΌΠ° ΠΎΡΠ΅ Π΄Π²Π΅ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π° kubedog Π² werf:
-
failures-allowed-per-replica
β Π±ΡΠΎΡ Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠ°Π΄Π°Π½ΠΈΡ Π·Π° Π²ΡΡΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°; -
show-logs-until
β ΡΠ΅Π³ΡΠ»ΠΈΡΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Π΄ΠΎ ΠΊΠΎΠΉΡΠΎ werf ΠΏΠΎΠΊΠ°Π·Π²Π° (Π² stdout) ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·Π³ΡΡΠ½Π°ΡΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅PodIsReady
(Π·Π° Π΄Π° ΠΈΠ³Π½ΠΎΡΠΈΡΠ°ΠΌΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΠΌΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΠΈΠΊΡΡ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΠΈΠ΄Π²Π° ΠΊΡΠΌ Π³ΡΡΠΏΠ°ΡΠ°), Π½ΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ ΡΡΡΠΎ ΡΠ° Π²Π°Π»ΠΈΠ΄Π½ΠΈ:ControllerIsReady
ΠΈEndOfDeploy
.
ΠΠ°ΠΊΠ²ΠΎ ΠΎΡΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ ΠΎΡ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ?
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π²Π΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ Π΄Π²Π΅ ΡΠΎΡΠΊΠΈ, Π±ΠΈΡ ΠΌΠ΅ ΠΈΡΠΊΠ°Π»ΠΈ:
- Π΄Π° Π²ΠΈΠ΄ΠΈΡ ΡΡΡΠΏΠΈ - ΠΈ ΡΠΎ ΡΠ°ΠΌΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅, Π° Π½Π΅ Π²ΡΠΈΡΠΊΠΎ ΠΏΠΎΠ΄ΡΠ΅Π΄;
- ΠΏΠΈΡΡΠ° Π½Π°ΠΏΡΠ΅Π΄ΡΠΊ, Π·Π°ΡΠΎΡΠΎ Π°ΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π²ΠΈΡΠΈ βΠ±Π΅Π·ΡΡΠΌΠ½ΠΎβ Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ½ΡΡΠΈ, Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΡΠ°ΠΌ;
- ΠΈΠΌΠ°ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄ Π² ΡΠ»ΡΡΠ°ΠΉ, ΡΠ΅ Π½Π΅ΡΠΎ ΡΠ΅ ΠΎΠ±ΡΡΠΊΠ° (ΠΈ Π·Π°ΡΠΎΠ²Π° Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π·Π½Π°Π΅ΡΠ΅ ΡΠ΅Π°Π»Π½ΠΈΡ ΡΡΠ°ΡΡΡ Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ). Π Π°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ: ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° Π΄ΠΎ ΠΊΡΠ°Ρ, ΠΈΠ»ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π²ΡΡΡΠ° Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎΡΠΎ ΡΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ
ΠΠ° Π½Π°Ρ ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, Π·Π° Π΄Π° Π²Π½Π΅Π΄ΡΠΈΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π½ΡΠ°Π½ΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅ΡΠ°ΠΏΠΈ Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° (ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅, Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅), ΡΠ° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΈ CI ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°
ΠΠΌΠ΅ΡΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
Π‘ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° werf ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ
ΠΌΠ΅ Π΄ΠΎΠ±ΡΡ Π½Π°ΠΏΡΠ΅Π΄ΡΠΊ Π² ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π·Π° ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ Π½Π° DevOps ΠΈ ΡΠ΅ ΡΠ΅ ΡΠ°Π΄Π²Π°ΠΌΠ΅, Π°ΠΊΠΎ ΠΏΠΎ-ΡΠΈΡΠΎΠΊΠ°ΡΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ ΠΏΠΎΠ½Π΅ ΠΎΠΏΠΈΡΠ° ΡΠ°Π·ΠΈ ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. Π©Π΅ Π±ΡΠ΄Π΅ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ Π΄ΠΎΠ±ΡΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π·Π°Π΅Π΄Π½ΠΎ.
ΠΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠΎΠ²Π΅ ΠΈ ΡΠ»Π°ΠΉΠ΄ΠΎΠ²Π΅
ΠΠΈΠ΄Π΅ΠΎ ΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ (~47 ΠΌΠΈΠ½ΡΡΠΈ):
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°:
PS
ΠΡΡΠ³ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ Π·Π° Kubernetes Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- Β«
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π² Kubernetes Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 27 Π°ΠΏΡΠΈΠ» 2019 Π³. Π² βΠ‘ΡΠ°ΡΠΊΠ°β); - Β«
Π Π°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ ΠΈ Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Kubernetes Β» (ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠΎΠ»ΠΎΠ²ΠΎΠ²; 8 Π°ΠΏΡΠΈΠ» 2019 Π³. Π² Saint HighLoad++); - Β«
ΠΠ°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Kubernetes Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 8 Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ 2018 Π³. Π² HighLoad++); - Β«
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ Kubernetes Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 28 ΠΌΠ°ΠΉ 2018 Π³. Π² RootConf); - Β«
ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° CI/CD Ρ Kubernetes ΠΈ GitLab Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 7 Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ 2017 Π³. Π² HighLoad++); - Β«
ΠΠ°ΡΠΈΡΡ ΠΎΠΏΠΈΡ Ρ Kubernetes Π² ΠΌΠ°Π»ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 6 ΡΠ½ΠΈ 2017 Π³. Π² RootConf).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com