ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΠΎΡΠ»Π΅ Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
ΠΠΎΠ΄ Π½Π°Π·Π°Π΄ ΠΌΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ
Π‘ΡΠ°ΡΡΡ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ. ΠΡΡΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π·Π°Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ GitOps, ΡΡΠ°Π»ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ
ΠΡΠΊΠΎΡΠ΅ ΠΌΡ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠ΅Π΅:
- ΠΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ ΠΈΡΡΠΎΡΠΈΠΉ;
- ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ GitOps;
- Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΉ continuous delivery.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠΏΡΡΠ°Π»ΠΈΡΡ ΠΎΡ Π²Π°ΡΠΈΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΠ΅ΠΌΡ. Π Π½Π΅ΠΉ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitOps ΠΈ Π²Π·Π³Π»ΡΠ΄ Π½Π° Π½Π΅Π³ΠΎ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ CI/CD. ΠΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡΠ΅ΠΌΡΡ Π½Π° Kubernetes, Ρ ΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ±ΡΠΈΡΡ.
ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ: GitOps
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΠΠ»ΠΈΡΡ. ΠΠ½Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Family Insurance, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠ΅ΠΉ ΠΏΠΎΠ»ΠΈΡΡ ΠΏΠΎ ΡΡΡΠ°Ρ ΠΎΠ²Π°Π½ΠΈΡ Π·Π΄ΠΎΡΠΎΠ²ΡΡ, Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, Π½Π΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΡΡΠΈΡΡΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠ°Ρ ΠΎΠ²ΠΊΡ Π»ΡΠ΄ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π·Π°Π½ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² Π½ΡΠ°Π½ΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ΅ Π±ΠΈΠ·Π½Π΅Ρ Π½Π°ΡΠΈΠ½Π°Π»ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΠ³Π΄Π° ΠΠ»ΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°Π»Π° Π² Π±Π°Π½ΠΊΠ΅ ΠΊΠ°ΠΊ data scientist. ΠΠ΄Π½Π°ΠΆΠ΄Ρ ΠΎΠ½Π° ΠΏΠΎΠ½ΡΠ»Π°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ°Ρ ΠΎΠ²ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ½Π²Π΅ΡΡΠΎΡΡ ΠΏΡΠΎΡΠΈΠ½Π°Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ 20 ΠΌΠ»Π½ Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π² Π³ΠΎΠ΄ ΠΈ ΡΡΡΠ΅ΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠ΅Ρ. Π Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² Π½Π΅ΠΉ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ 180 ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ. Π ΠΈΡ ΡΠΈΡΠ»Π΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΡΠ°, Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ Π±Π°Π·Ρ. ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· 60 ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π²ΠΎΠ·Π³Π»Π°Π²Π»ΡΠ΅Ρ ΠΠΎΠ± β ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΠΎΠ±Π° ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π΅Ρ production-ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΎΠ±Π»Π°ΠΊΠ΅. ΠΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° GKE, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ Kubernetes Π² Google Cloud. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ.
Family Insurance Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, Π½ΠΎ Π·Π°ΡΠ°Π·ΠΈΠ»Π°ΡΡ ΡΠ½ΡΡΠ·ΠΈΠ°Π·ΠΌΠΎΠΌ Π²ΠΎΠΊΡΡΠ³ Docker. ΠΡΠΊΠΎΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ GKE ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π»Π΅Π³ΠΊΠΎ ΠΈ Π½Π΅ΠΏΡΠΈΠ½ΡΠΆΠ΄Π΅Π½Π½ΠΎ. ΠΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Jenkins Π΄Π»Ρ CI ΠΈ Quay Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π΅ΡΡΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΡΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ Jenkins, ΠΊΠΎΡΠΎΡΡΠ΅ push’ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π² GKE.
ΠΡΠΎΡΠ»ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ»ΠΈΡΠ° ΠΈ ΠΠΎΠ± ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π»ΠΈΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ Π²Π»ΠΈΡΠ½ΠΈΠΈ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ. ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π½Π΅ ΠΏΠΎΠ²ΡΡΠΈΠ»ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°Π΄Π΅ΡΠ»Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°. ΠΠ½ΠΎΠ³Π΄Π° deployment’Ρ Π»ΠΎΠΌΠ°Π»ΠΈΡΡ, ΠΈ Π±ΡΠ»ΠΎ Π½Π΅ΡΡΠ½ΠΎ, Π²ΠΈΠ½ΠΎΠ²Π°ΡΡ Π»ΠΈ Π² ΡΡΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΡΡΠΆΠ΅Π»ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ². Π§Π°ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ Π² Π½Π΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡ Π±Π°ΡΠ΄Π°ΠΊ, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ»ΠΈΡΠ° Π±ΠΎΡΠ»Π°ΡΡ, ΡΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΡ ΡΠ΄ΡΠΈΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π°Π·ΡΠ΅Π²Π°Π» Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ). ΠΠΎΠ± Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π» Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π», ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π΅ΡΡΡΠΎΠΉΡΠΈΠ², ΠΏΠ»ΠΎΡ ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π°?
ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ΠΈ ΡΠ·Π½Π°Π»ΠΈ ΠΎ GitOps. ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΈΠΌ Π±ΡΠ»ΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π²ΠΏΠ΅ΡΠ΅Π΄.
ΠΠ»ΠΈΡΠ° ΠΈ ΠΠΎΠ± ΡΠΆΠ΅ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Π³ΠΎΠ΄ ΡΠ»ΡΡΠ°Π»ΠΈ ΠΎ ΡΠ°Π±ΠΎΡΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ
Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Git, DevOps ΠΈ infrastructure as code. Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ GitOps Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΈΠ²Π½ΠΎΡΠΈΡ ΡΡΠ΄ Π»ΡΡΡΠΈΡ
ΠΏΡΠ°ΠΊΡΠΈΠΊ β ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ½ΡΡ
ΠΈ Π½ΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΡ
β ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΈΡ
ΠΈΠ΄Π΅ΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Kubernetes. ΠΡΠ° ΡΠ΅ΠΌΠ°
Family Insurance ΡΠ΅ΡΠ°Π΅Ρ Π²Π½Π΅Π΄ΡΠΈΡΡ GitOps. Π’Π΅ΠΏΠ΅ΡΡ Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ°Ρ Ρ Kubernetes ΠΈ ΡΠΎΡΠ΅ΡΠ°ΡΡΠ°Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ:
- ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²Π΄Π²ΠΎΠ΅ Π²ΡΡΠΎΡΠ»Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π½ΠΈΠΊΡΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΡΡ ΠΎΠ΄ΠΈΡ Ρ ΡΠΌΠ°;
- ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΊΡΠΈΠΏΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π½Π΅Π΄ΡΠΈΡΡ ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΡΠ΅ Π²ΡΠΊΠ°ΡΡ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
- ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ β ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½ ΡΠ΅Π΄ΠΊΠΎ Π»ΠΎΠΌΠ°Π΅ΡΡΡ;
- ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ deployment’Ρ ΠΏΠΎΡΠ»Π΅ ΡΠ°ΡΡΠΈΡΠ½ΡΡ ΡΠ±ΠΎΠ΅Π² Π±Π΅Π· ΡΡΡΠ½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π°;
- ΠΏΡΠΈΠΎΠ±ΡΠ΅Π»ΠΈ Π±ΠΎΠ»ΡΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ. ΠΠ»ΠΈΡΠ° ΠΈ ΠΠΎΠ± ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° Π³ΡΡΠΏΠΏΡ, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠΈΠ΅ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ;
- ΠΌΠΎΠ³ΡΡ Π²Π½ΠΎΡΠΈΡΡ ΠΏΠΎ 30-50 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΈ ΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ;
- Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΠΊΠ°ΡΡΠ²Π°ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½Π° production Ρ ΠΏΠΎΠΌΠΎΡΡΡ pull request’ΠΎΠ² ΡΠΆΠ΅ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ²;
- Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΡ
ΠΎΠ΄ΡΡ Π°ΡΠ΄ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
SOC2 (Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² ΡΡΠ»ΡΠ³ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
; ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠΈΡΠ°ΠΉΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Π·Π΄Π΅ΡΡ β ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².).
Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ?
GitOps β ΡΡΠΎ Π΄Π²Π΅ Π²Π΅ΡΠΈ:
- ΠΠΎΠ΄Π΅Π»Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Kubernetes ΠΈ cloud native. ΠΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ Π»ΡΡΡΠΈΡ
ΠΏΡΠ°ΠΊΡΠΈΠΊ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ
Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»Π΅Π³Π°Π½ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π°ΠΉΠ΄Π° ΠΎΡLuis Faceira : - ΠΡΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. ΠΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Git ΠΊΠ°ΠΊ ΠΊ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊ ΠΈ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΎ Git push, Π° ΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² CI/CD ΠΈ UI/UX.
ΠΠ°ΡΠ° ΡΠ»ΠΎΠ² ΠΎ Git
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° Git ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ, ΠΌΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΠ·ΡΡΠΈΡΡ ΠΈΡ
. ΠΠΎΠ½Π°ΡΠ°Π»Ρ ΡΠ°Π±ΠΎΡΠ° Ρ Π²Π΅ΡΠ²ΡΠΌΠΈ ΠΈ pull request’Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ΅ΡΠ½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠ΅ΠΉ, Π½ΠΎ ΠΏΠ»ΡΡΡ ΡΡΠΎΡΡ Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΡΡ
ΡΡΠΈΠ»ΠΈΠΉ. ΠΠΎΡ
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Kubernetes
Π Π½Π°ΡΠ΅ΠΉ ΠΈΡΡΠΎΡΠΈΠΈ ΠΠ»ΠΈΡΠ° ΠΈ ΠΠΎΠ± ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈΡΡ ΠΊ GitOps, Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠ°Π² Ρ Kubernetes. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, GitOps ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½ Ρ Kubernetes β ΡΡΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Kubernetes.
Π§ΡΠΎ Kubernetes Π΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ?
ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- Π ΠΌΠΎΠ΄Π΅Π»ΠΈ Kubernetes Π²ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π² Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ΅.
- API-ΡΠ΅ΡΠ²Π΅Ρ Kubernetes ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ°ΠΊΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ ΠΊΠ°ΠΊ Π²Π²ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ.
- ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½Ρ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΎΠΊ β Β«ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ».
- Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ·-Π·Π°:
- ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠ±ΡΠ°Π·Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²;
- ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ;
- ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΡΠ΅Π΄Π΅ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Kubernetes ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΠΈ
ΠΠΎΠ³Π΄Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π²Π½ΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ Kubernetes Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΡΡ ΠΊ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡΠ° ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° Kubernetes ΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Custom Resource Definitions (CRDs). ΠΠΎΡΡΠΎΠΌΡ deployment’Ρ Kubernetes ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΡΠ΄Π΅ΡΠ½ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ:
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Kubernetes ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
- ΠΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΡ: Kubernetes Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π΄ΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΏΠ΅Ρ Π°.
- ΠΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΡ: ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
- ΠΠ΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΠ·ΠΌ: ΠΏΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π·Π°Π²ΠΈΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ GitOps
ΠΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ·Π½Π°Π»ΠΈ ΠΎ Kubernetes, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ GitOps.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Family Insurance, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. Π§Π΅ΠΌ ΠΈΠΌ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ? ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ Π½ΠΈΠΆΠ΅ (Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΡΠ½ΠΊΡΡ Π² Π½Π΅ΠΌ ΠΏΠΎΠΊΠ°ΠΆΡΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡΠΌΠΈ β ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ΅ Ρ ΠΊΡΠΈΡΠΈΠΊΠΎΠΉ ΠΈ ΠΎΡΡΠ°Π²Π°ΠΉΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ). ΠΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Jenkins. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΠ»Π°Π²Π½ΠΎΠ΅ β ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Git. ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Git ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Β«ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ GitOpsΒ» ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ:
1. Π Π°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ: Β«Π‘Π±ΠΎΡΠΊΠ° Jenkins β Π²Π΅ΡΠΊΠ° masterΒ».
Π‘ΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ:
- Jenkins push’ΠΈΡ ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ Π² Quay;
- Jenkins push’ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ ΠΈ Helm-ΡΠ°ΡΡΡ Π² Π±Π°ΠΊΠ΅Ρ master-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°;
- ΠΠ±Π»Π°ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ ΠΈ ΡΠ°ΡΡΡ ΠΈΠ· Π±Π°ΠΊΠ΅ΡΠ° master-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ master;
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ GitOps ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ.
2. Π‘Π±ΠΎΡΠΊΠ° Jenkins β Π²Π΅ΡΠΊΠ° release ΠΈΠ»ΠΈ hotfix:
- Jenkins push’ΠΈΡ Π½Π΅ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ Π² Quay;
- Jenkins push’ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ ΠΈ Helm-ΡΠ°ΡΡΡ Π² Π±Π°ΠΊΠ΅Ρ staging-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°;
- ΠΠ±Π»Π°ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ ΠΈ ΡΠ°ΡΡΡ ΠΈΠ· Π±Π°ΠΊΠ΅ΡΠ° staging-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ staging;
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ GitOps ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ.
3. Π‘Π±ΠΎΡΠΊΠ° Jenkins β Π²Π΅ΡΠΊΠ° develop ΠΈΠ»ΠΈ feature:
- Jenkins push’ΠΈΡ Π½Π΅ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ Π² Quay;
- Jenkins push’ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ ΠΈ Helm-ΡΠ°ΡΡΡ Π² Π±Π°ΠΊΠ΅Ρ develop-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°;
- ΠΠ±Π»Π°ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ ΠΈ ΡΠ°ΡΡΡ ΠΈΠ· Π±Π°ΠΊΠ΅ΡΠ° develop-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ develop;
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ GitOps ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ.
4. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
- ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΈΠ»ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ (LCM/ops) Π²ΡΠ·ΡΠ²Π°Π΅Ρ Gradle Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΡΠ΅Π²ΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² Π½Π°Π³ΡΡΠ·ΠΊΠΈ (NLB);
- LCM/ops ΠΊΠΎΠΌΠΌΠΈΡΠΈΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ deployment’Π° ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌ;
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ GitOps ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ.
ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ GitOps
- ΠΠΏΠΈΡΠΈΡΠ΅ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ (Π² Π½Π°ΡΠ΅ΠΉ ΠΈΡΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΠΎΠ±Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² Git).
- Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΈΡΡΠΈΠ½Ρ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
- ΠΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π² Git.
- ΠΡΠ΅ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ (ΠΊΠΎΠ½Π²Π΅ΡΠ³ΠΈΡΡΡΡ, converge) ΠΈΠ»ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ (Π΄ΠΈΠ²Π΅ΡΠ³ΠΈΡΡΡΡ, diverge) ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
- ΠΡΠ»ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, ΡΠΎ:
- Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠ½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΡΡΠΈΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Kubernetes.
- ΠΡΠΎΡΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«change committedΒ».
- Π§Π΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΠ»Π°Π½ΠΎ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Β«diffΒ», Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ.
- Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Git Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠ΅ ΠΈ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅.
- ΠΡΠΊΠ°Ρ β ΡΡΠΎ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΡ ΠΊ ΡΠ°Π½Π΅Π΅ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
- ΠΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½Π°. Π Π΅Π΅ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡ:
- ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ Β«diffΒ» Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- ΠΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Β«convergedΒ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, webhook, ΡΠΎΠ±ΡΡΠΈΠ΅ Git writeback).
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄ΠΈΠ²Π΅ΡΠ³Π΅Π½ΡΠΈΡ?
ΠΠΎΠ²ΡΠΎΡΠΈΠΌ Π΅ΡΠ΅ ΡΠ°Π·: Π²ΡΠ΅ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄ΠΈΠ²Π΅ΡΠ³Π΅Π½ΡΠΈΠΈ:
- ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ·-Π·Π° ΡΠ»ΠΈΡΠ½ΠΈΡ Π²Π΅ΡΠΎΠΊ Π² Git.
- ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ·-Π·Π° ΠΊΠΎΠΌΠΌΠΈΡΠ° Π² Git, ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ³ΠΎ GUI-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ.
- ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΈΠ·-Π·Π° PR Π² Git Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠ½ΡΠΈΠ³Π°.
- ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈΠ·-Π·Π° ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ², ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΊ Β«ΠΏΠ»ΠΎΡ ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡΒ», ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΎΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
Π§ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΠΈ?
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
- ΠΠ»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Kubernetes.
- Π’ΠΎΡ ΠΆΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Kubernetes (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Istio ΠΈ Kubeflow).
- ΠΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠΈΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Kubernetes, ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΈ Git’ΠΎΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ
GitOps-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Weave Flux , ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΠ°ΡΡΡΡWeave Cloud . - ΠΠ»Ρ Π±Π°Π·ΠΎΠ²ΡΡ
ΠΌΠ°ΡΠΈΠ½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΌ ΠΈ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌ. ΠΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΎΠΏΡΡΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ
Terraform Π±Π»ΠΈΠΆΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΊ ΡΡΠΎΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ΅ ΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π ΡΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ GitOps ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ Infrastructure as Code.
GitOps ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Git Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΠΈ Kubernetes, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ.
GitOps ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π·Π°ΡΠ²ΠΈΡΡ: Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ.
GitOps ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ cloud native-ΡΡΠ΅ΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Terraform ΠΈ Ρ.ΠΏ.)
GitOps β ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Kubernetes. ΠΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»ΡΠ»Π°ΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΡ. ΠΠΎΠ΄ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΌΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΠΌ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΡΡΠ΅Π΄, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ Kubernetes β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«dev cluster 1Β», Β«productionΒ» ΠΈ Ρ. ΠΏ. Π ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΠ΅Π΄Ρ Π²Ρ ΠΎΠ΄ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ, ΠΊΠ»Π°ΡΡΠ΅ΡΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ Ρ. ΠΏ.
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Terraform Π²Π°ΠΆΠ΅Π½ Π΄Π»Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ bootstrapping’Π°. Kubernetes Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π³Π΄Π΅-ΡΠΎ ΡΠ°Π·Π²ΡΡΠ½ΡΡ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Terraform ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ ΠΆΠ΅ ΡΠ°ΠΌΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ GitOps Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠ»ΠΎΡ, Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π΅ Kubernetes ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π»ΡΡΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°.
ΠΠΎΠ»ΡΡΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ GitOps ΠΊ ΡΠ»ΠΎΡΠΌ Π½Π°Π΄ Kubernetes. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅ΡΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ GitOps-ΡΠΈΠΏΠ° Π΄Π»Ρ Istio, Helm, Ksonnet, OpenFaaS ΠΈ Kubeflow, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Pulumi, ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΠΎΠΉ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ cloud native.
Kubernetes CI/CD: ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ GitOps Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°ΠΌΠΈ
ΠΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ, GitOps β ΡΡΠΎ Π΄Π²Π΅ Π²Π΅ΡΠΈ:
- ΠΠΎΠ΄Π΅Π»Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Kubernetes ΠΈ cloud native, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π²ΡΡΠ΅.
- ΠΡΡΡ ΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΡΠ΅Π΄Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ GitOps β ΡΡΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Git push’Π΅ΠΉ. ΠΠ°ΠΌ ΠΎΠ½ ΡΠΎΠΆΠ΅ Π½ΡΠ°Π²ΠΈΡΡΡ. ΠΠΎ ΡΡΠΎ Π½Π΅ Π²ΡΠ΅: Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° CI/CD-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ.
GitOps ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ (CD) ΠΏΠΎΠ΄ Kubernetes
GitOps ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, ΡΡΡΡΠ°Π½ΡΡΡΠΈΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Β«ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡΠΌΠΈΒ». ΠΡΡ ΡΠ°Π±ΠΎΡΡ Π·Π° Π²Π°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Kubernetes.
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² Git’Π΅. ΠΡΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. Β«Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅Β» Π·Π°ΡΠ΅ΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΡΠ°ΠΌΠΈΠΌ Kubernetes Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ.
- ΠΠ·-Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Kubernetes ΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠ½Ρ. Π’Π°ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π°ΡΠΎΠΌΠ°ΡΠ½Ρ.
- ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
Weave Cloud ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ GitOps-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΡΡΠΈΠΉ Git ΠΈ Kubernetes ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ CD ΠΏΡΡΠ΅ΠΌ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
ΠΠ΅Π· kubectl ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Kubectl Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π° Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ β ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ kubectl. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ GitOps-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes ΡΠ΅ΡΠ΅Π· Git.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ:
- ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ. ΠΡΡΠΏΠΏΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ, ΠΊΠΎΠ½Π²Π΅ΡΠ³ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ Π²Π°Π»ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π΅Ρ Π½Π°Ρ ΠΊ ΡΠ΅Π»ΠΈ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π½Π΅ Π΄Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΠΈ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ Π½ΠΈΠΆΠ΅).
- ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ.
Π¦ΠΈΡΠΈΡΡΡ Kelsey Hightower: Β«ΠΠ³ΡΠ°Π½ΠΈΡΡΡΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Kubernetes ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ, Π² ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΎΠ΄ΠΈΡ Π΅Π³ΠΎ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈΒ». Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ΠΌΠΎΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ΡΡΠ°ΡΡΡ ΠΎ Π²Π·Π»ΠΎΠΌΠ΅ Homebrew ΠΏΡΡΠ΅ΠΌ Ρ ΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π½Π΅Π±ΡΠ΅ΠΆΠ½ΠΎ ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Jenkins-ΡΠΊΡΠΈΠΏΡΠ°. - ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΎΠΏΡΡ. Kubectl ΠΎΠ±Π½Π°ΠΆΠ°Π΅Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Kubernetes, ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π΅ΡΡΠΌΠ° ΡΠ»ΠΎΠΆΠ½Π°. Π ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ. ΠΠ΄Π΅ΡΡ Ρ ΡΠ½ΠΎΠ²Π° ΡΠΎΡΠ»ΡΡΡ Π½Π° Kelsey ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ
ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π·ΡΠΌΠ΅ .
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ CI ΠΈ CD
GitOps ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ CI/CD-ΠΌΠΎΠ΄Π΅Π»ΠΈ.
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ CI-ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ CI-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ². ΠΠ½ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ build, test, merge to trunk ΠΈ Ρ. Π΄. CI-ΡΠ΅ΡΠ²Π΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π³ΠΎΠ²ΡΠΌΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌΠΈ. Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΎΠ±Π»Π°Π·Π½ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Kubernetes ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π΄Π»Ρ push’Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ, ΠΈ Π²ΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ.
CI Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π² trunk, Π° ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΌΠ΅Π½ΡΡΡ ΡΠ΅Π±Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΈΡ
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ CD Β«Π²Π½ΡΡΡΠ΅Π½Π½Π΅Β». ΠΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ ΡΡΠΎ
ΠΠΎΡΠ΅ΠΌΡ CI-ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄Π΅Π»Π°ΡΡ CD ΡΠ΅ΡΠ΅Π· ΠΏΡΡΠΌΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² Kubernetes
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ CI-ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΏΡΡΠΌΡΡ
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π² Kubernetes Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡΠ° CI-Π·Π°Π΄Π°Π½ΠΈΠΉ. ΠΡΠΎ Π°Π½ΡΠΈ-ΠΏΠ°ΡΡΠ΅ΡΠ½, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΠ»ΠΈΡΠ΅ ΠΈ ΠΠΎΠ±Ρ.
Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΎΠ½ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ? CI-ΡΠ΅ΡΠ²Π΅Ρ ΠΠΎΠ±Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠ½ ΡΠΏΠ°Π΄Π΅Ρ, ΠΠΎΠ± Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ (ΠΈΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ) ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΠΎΠ±Π° ΡΠΎΠ±ΡΠ°Π»Π° Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠΏΠ°ΡΡΠΈΠ»Π° ΡΠ²ΠΎΠΈ deployment’Ρ, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΎΠ±ΡΠ°Π· (Π²ΡΠ΅ ΡΡΠΎ ΠΈΠ· CI-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°).
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π· ΡΠΎΠ±Π΅ΡΠ΅ΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π½ΠΎ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΡΠΏΠ°Π΄Π΅Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΡΡΠ½ΡΡΡ:
- Π Π°Π·Π²Π΅ΡΠ½ΡΠ»ΠΎΡΡ Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅?
- ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π»ΠΈ ΠΌΡ Π½ΠΎΠ²ΡΡ ΡΠ±ΠΎΡΠΊΡ? ΠΡΠΈΠ²Π΅Π΄Π΅Ρ Π»ΠΈ ΡΡΠΎ ΠΊ Π½Π΅Π½ΡΠΆΠ½ΡΠΌ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌ ΡΡΡΠ΅ΠΊΡΠ°ΠΌ β Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π²Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°?
- Π‘ΡΠΎΠΈΡ Π»ΠΈ Π½Π°ΠΌ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ?
- Π§ΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ? ΠΠ°ΠΊΠΈΠ΅ ΡΠ°Π³ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ (ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ)?
ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Git’Π΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΠΎΠ±Π° Π½Π΅ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΡΡ Ρ ΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ. ΠΠ½ΠΈ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΎΡΠΈΠ±ΠΈΡΡΡΡ Ρ push’Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ°, Ρ ΡΠ΅Π³ΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ; ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π²ΡΠ΅ ΠΆΠ΅ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠ²Π½ΠΎΠΌΡ Π²ΡΠ΅-ΠΈΠ»ΠΈ-Π½ΠΈΡΠ΅Π³ΠΎ.
ΠΠΎΠ΄ΡΡΠΎΠΆΠΈΠ²Π°Ρ, Π²ΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ CI-ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ CD:
- Π‘ΠΊΡΠΈΠΏΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Ρ; Π² Π½ΠΈΡ Π»Π΅Π³ΠΊΠΎ Π½Π°Π΄Π΅Π»Π°ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
- CI-ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π΅ ΠΊΠΎΠ½Π²Π΅ΡΠ³ΠΈΡΡΡΡ ΠΊ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
- Π‘Π»ΠΎΠΆΠ½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΡ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
- Π‘Π»ΠΎΠΆΠ½Π΅Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ±ΠΎΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎ Helm’e: Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Helm, ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΅Π³ΠΎ Ρ GitOps-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ
GitOps ΠΊΠ°ΠΊ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Continuous Delivery Π΄Π»Ρ Kubernetes
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΠ»ΠΈΡΡ ΠΈ ΠΠΎΠ±Π° Π²Π½Π΅Π΄ΡΡΠ΅Ρ GitOps ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠ°Π»ΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠΌ ΡΡΡ ΡΡΠ°ΡΡΡ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡΠΌΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΌΠΈ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΌΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ , ΠΎΠ΄Π½Π°ΠΊΠΎ GitOps ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ.
ΠΠΎΠ΄Π΅Π»Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Kubernetes
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ. ΠΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Git ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΊΠ°ΠΊ ΠΎΠ±ΡΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ Π΄Π»Ρ Π΄Π²ΡΡ ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ²:
- ΠΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ»Ρ Π² Git ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ².
- ΠΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Runtime GitOps, ΡΠΎΡΠ΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΉ Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡΡ. ΠΠ½ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ»Ρ Π² Git ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΎΠ±ΡΠ°Π·Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΠ°ΠΊΠΎΠ²Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ?
- Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ: ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ±Π° ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ Git ΠΈΠ»ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΎΠ±ΡΠ°Π·ΠΎΠ². ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΠΊΡΠ°Π½ ΠΌΠ΅ΠΆΠ΄Ρ CI ΠΈ runtime-ΡΡΠ΅Π΄ΠΎΠΉ. ΠΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ Β«Π±ΡΠ°Π½Π΄ΠΌΠ°ΡΡΡΠΎΠΌ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΠΈΒ» (immutability firewall), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ. ΠΠ»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ»Π°ΠΉΠ΄Π°ΠΌ 72-87
ΡΡΠΎΠΉ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ . - ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ CI- ΠΈ Git-ΡΠ΅ΡΠ²Π΅Ρ: GitOps ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π»ΡΠ±ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ Π»ΡΠ±ΠΈΠΌΡΠ΅ CI- ΠΈ Git-ΡΠ΅ΡΠ²Π΅ΡΡ, ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΈ Π½Π°Π±ΠΎΡΡ ΡΠ΅ΡΡΠΎΠ². ΠΠΎΡΡΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Continuous Delivery Π½Π° ΡΡΠ½ΠΊΠ΅ ΡΡΠ΅Π±ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ CI-/Git-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΎΠ±ΡΠ°Π·ΠΎΠ². ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΌ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠΈ cloud native. Π ΡΠ»ΡΡΠ°Π΅ GitOps Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ.
- Π‘ΠΎΠ±ΡΡΠΈΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ: ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΠ΅ Π² Git ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ, Weave Flux (ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Weave Cloud) ΠΈΠ·Π²Π΅ΡΠ°Π΅Ρ ΠΎΠ± ΡΡΠΎΠΌ runtime. ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Kubernetes ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π°Π±ΠΎΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Git ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ GitOps, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
GitOps ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π΅ΡΠΎΠΌΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π»ΡΠ±ΠΎΠΌΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ CI/CD:
- Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ;
- ΠΊΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΡ;
- ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΡ;
- Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΠ·ΠΌ.
ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π² ΠΎΠ±Π»Π°ΡΡΠΈ cloud native.
- Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠΈΡΡΠ΅ΠΌ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ runbook’Π° (Π½Π°Π±ΠΎΡΠ° ΡΡΡΠΈΠ½Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ β ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².), ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ deployment’Ρ.
- Π ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ cloud native-ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΡΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΌΠΎΠ³Π»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π½ΠΈΡ .
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ², ΡΠ°Π·Π±ΡΠΎΡΠ°Π½Π½ΡΡ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΎΠ±Π»Π°ΠΊΠ°ΠΌ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈ ΠΏΠ»Π°Π½Π°ΠΌΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΉ. GitOps ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ°ΡΡΡΠ°Π±Π½ΠΎ-ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌ ΡΡΠΈΠΌ ΠΈΠ·ΠΎΠ±ΠΈΠ»ΠΈΠ΅ΠΌ.
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
GitOps: ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Pull ΠΈ Push Β»; - Β«
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ kubedog Π΄Π»Ρ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΡ Π·Π° ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Kubernetes Β»; - Β«
Π Π°ΡΡΠΈΡΡΠ΅ΠΌ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Kubernetes (ΠΎΠ±Π·ΠΎΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π°) Β».
Π’ΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΡΠΎΡΠ΅.
ΠΡ Π·Π½Π°Π»ΠΈ ΠΏΡΠΎ GitOps Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠΈΡ Π΄Π²ΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² Π½Π° Ρ Π°Π±ΡΠ΅?
-
ΠΠ°, Π²ΡΡ Π·Π½Π°Π»(Π°)
-
ΠΠΈΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΠΎ
-
ΠΠ΅Ρ
ΠΡΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 35 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠ·Π΄Π΅ΡΠΆΠ°Π»ΠΈΡΡ 10 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com