ΠΠ΅Π½Π΅Ρ ΡΠ΅ Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ Π·Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π° GitOps, ΠΊΠ°ΠΊΠΎ ΠΈ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΠΎΠ²ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π°Ρ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° OpenShift. ΠΠΎΡΡΠ°ΠΏΠ΅Π½ Π΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ Π²ΠΎΠ΄ΠΈΡ Π½Π° ΠΎΠ²Π°Π° ΡΠ΅ΠΌΠ°
ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ, GitOps Π΅ Π·Π±ΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Git pull Π±Π°ΡΠ°ΡΠ° Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. Π‘ΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π½Π° Git Π²ΠΎ GitOps ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΈΠ·Π²ΠΎΡ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΠΈ ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΎΠ²Π°Π° ΡΠΎΡΡΠΎΡΠ±Π° ΡΠ΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΡΠ»Π΅Π΄Π΅Π½ΠΈ ΠΈ ΡΠ΅Π²ΠΈΠ΄ΠΈΡΠ°Π½ΠΈ.
ΠΠ΄Π΅ΡΠ°ΡΠ° Π·Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ GitOps Π²ΠΎ Π½ΠΈΠΊΠΎΡ ΡΠ»ΡΡΠ°Ρ Π½Π΅ Π΅ Π½ΠΎΠ²Π°; ΠΎΠ²ΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ΡΠΈΡΠΈ ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π½ΠΎ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. GitOps Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΡΠ»ΠΈΡΠ½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ (ΠΏΡΠ΅Π³Π»Π΅Π΄ΠΈ, Π±Π°ΡΠ°ΡΠ° Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡΠ²Π°ΡΠ΅, ΠΎΠ·Π½Π°ΠΊΠΈ ΠΈΡΠ½.) Π²ΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΠ»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ ΠΊΠ°ΠΊΠΎ Π²ΠΎ ΡΠ»ΡΡΠ°ΡΠΎΡ ΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄.
ΠΠ΅ ΠΏΠΎΡΡΠΎΠΈ Π°ΠΊΠ°Π΄Π΅ΠΌΡΠΊΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° ΠΈΠ»ΠΈ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΡΠ΅Ρ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° GitOps, ΡΠ°ΠΌΠΎ Π·Π±ΠΈΡ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ Π½Π° ΠΊΠΎΠΈ Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° ΠΎΠ²Π°Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°:
- ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΠΎΠΏΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠ΅ ΡΡΠ²Π° Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git (ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΠΈΡΠ½.).
- ΠΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° ΡΠ΅ ΠΏΡΠ°Π²Π°Ρ ΠΏΡΠ΅ΠΊΡ Π±Π°ΡΠ°ΡΠ° Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡΠ²Π°ΡΠ΅.
- Π‘ΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ΅ ΡΡΠΎΠ³Π»Π°ΡΡΠ²Π° ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Git push Π±Π°ΡΠ°ΡΠ°.
ΠΡΠΈΠ½ΡΠΈΠΏΠΈ Π½Π° GitOps
- Π‘ΠΈΡΡΠ΅ΠΌΡΠΊΠΈΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄
Π‘ΠΈΡΡΠ΅ΠΌΡΠΊΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ΄ Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π° ΡΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ° Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π½Π° Git, ΠΊΠΎΠ΅ ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΠΊΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΈΠ·Π²ΠΎΡ Π½Π° Π²ΠΈΡΡΠΈΠ½Π°ΡΠ°. ΠΠ²ΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ Π³ΠΎ ΠΎΠ»Π΅ΡΠ½ΡΠ²Π° Π²ΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ ΠΈ Π²ΡΠ°ΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅.
- ΠΠΎΡΠ°ΠΊΡΠ²Π°Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΈ Π²Π΅ΡΠ·ΠΈΡΠ°Π½ΠΈ Π²ΠΎ Git
Π‘ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΈ Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΡΠ²Π°Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π²ΠΎ Git, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π³ΠΈ Π²ΠΎΠ²Π΅Π΄Π΅ΠΌΠ΅ ΠΈ Π²ΡΠ°ΡΠΈΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅. ΠΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° Git Π·Π° Π΄Π° ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΡΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΠΈ Π΄Π° ΡΠ° ΠΏΠΎΡΠ²ΡΠ΄ΠΈΠΌΠ΅ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π°Π²ΡΠ΅Π½ΡΠΈΡΠ½ΠΎΡΡ.
- ΠΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π°Ρ ΠΏΡΠ΅ΠΊΡ Π±Π°ΡΠ°ΡΠ° Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡΠ²Π°ΡΠ΅
ΠΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΈ Π±Π°ΡΠ°ΡΠ°ΡΠ° Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡΠ²Π°ΡΠ΅ Π½Π° Git, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π΄Π°Π΄Π°Ρ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠ»Π΅Π½ΠΎΠ²ΠΈ Π½Π° ΡΠΈΠΌΠΎΡ Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Ρ ΠΏΡΠ΅ΠΊΡ CI ΡΠ΅ΡΡΠΎΠ²ΠΈ, ΠΈΡΠ½.
Π Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ° Π»Π΅Π²ΠΎ ΠΈ Π΄Π΅ΡΠ½ΠΎ. ΠΠ° Π΄Π° ΠΈΠ·Π²ΡΡΠ°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°, Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ ΠΈΠΌ ΡΡΠ΅Π±Π°Π°Ρ ΡΠ°ΠΌΠΎ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ΅ Π·Π°ΡΡΠ²Π°Π½ΠΈ ΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
- ΠΠΎΠΏΡΠ°Π²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΡΠΎ Π½Π΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΎ Π΄Π²ΠΈΠΆΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
Π¨ΡΠΎΠΌ ΡΠ°ΠΊΠ°Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠ΅ ΡΠ΅ Π·Π°ΡΡΠ²Π° Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π½Π° Git, ΡΓ¨ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ Π΅ Π΄Π° Π½Π°ΡΠ΄Π΅ΠΌΠ΅ ΡΠΎΡΡΠ²Π΅Ρ ΠΊΠΎΡ ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠ° Π΄Π΅ΠΊΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠ΅ ΡΠΎΠ²ΠΏΠ°ΡΠ° ΡΠΎ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΏΠΎΡΠ°ΠΊΡΠ²Π°Π½Π° ΡΠΎΡΡΠΎΡΠ±Π°. ΠΠΊΠΎ ΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ»ΡΡΠ°Ρ, ΡΠΎΠ³Π°Ρ ΠΎΠ²ΠΎΡ ΡΠΎΡΡΠ²Π΅Ρ ΡΡΠ΅Π±Π° - Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅ - ΠΈΠ»ΠΈ ΡΠ°ΠΌ Π΄Π° Π³ΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π½Π΅ΡΠΎΠ²ΠΏΠ°ΡΠ°ΡΠ΅ΡΠΎ ΠΈΠ»ΠΈ Π΄Π° Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠΈ Π·Π° ΠΏΡΠ΅ΡΡΠ»Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°.
GitOps ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π° OpenShift
ΠΡΠ΅ΠΌΠΈΡΡΠ²Π°Ρ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ
Π‘ΠΏΠΎΡΠ΅Π΄ ΠΎΠ²ΠΎΡ ΠΌΠΎΠ΄Π΅Π», ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΠΈΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΠΊΠΎΡ Π΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΡΠΏΠΎΡΠ΅Π΄Π±Π° Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Kubernetes (YAML Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ) Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git ΡΠΎ ΡΠ΅Π°Π»Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ. ΠΠΊΠΎ ΡΠ΅ ΠΎΡΠΊΡΠΈΡΠ°Ρ Π½Π΅ΡΠΎΠ²ΠΏΠ°ΡΠ°ΡΠ°, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΎΡ ΠΈΡΠΏΡΠ°ΡΠ° ΠΈΠ·Π²Π΅ΡΡΡΠ²Π°ΡΠ° ΠΈ Π΅Π²Π΅Π½ΡΡΠ°Π»Π½ΠΎ ΠΏΡΠ΅Π·Π΅ΠΌΠ° ΠΌΠ΅ΡΠΊΠΈ Π·Π° Π΄Π° Π³ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎΠ²ΠΏΠ°ΡΠ°ΡΠ°ΡΠ°. ΠΠ²ΠΎΡ ΠΌΠΎΠ΄Π΅Π» Π½Π° GitOps ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ Anthos Config Management ΠΈ Weaveworks Flux.
ΠΠΎΠΌΠΈΡΡΠ²Π°Ρ Π½Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ (Push)
ΠΠ²ΠΎΡ ΠΌΠΎΠ΄Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΌΠ΅ΡΠ° ΠΊΠ°ΠΊΠΎ Π²Π°ΡΠΈΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΠΎΡ, ΠΊΠΎΠ³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π²ΠΎ ΠΏΠ°ΡΠΎΠ²ΠΈΡΠ΅ βΠ Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ Git - ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρβ. Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΎΠ²Π΄Π΅ Π΅ Π²ΠΎ ΡΠΎΠ° ΡΡΠΎ ΡΠ΅ΠΊΠΎΡ ΡΠΏΡΠ°Π²ΡΠ²Π°Π½ ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π΅ ΠΌΠΎΡΠ° Π΄Π° ΠΈΠΌΠ° ΡΠ²ΠΎΡ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ. ΠΠ°ΡΠΎΠ²ΠΈΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Git - k8s ΡΠ΅ΡΡΠΎ ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π°Ρ ΠΊΠ°ΠΊΠΎ CRD (ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π·Π° ΡΠ΅ΡΡΡΡΠΈ), ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΎΡ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ·Π²ΡΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ°. ΠΠΎ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΎΠ²ΠΎΡ ΠΌΠΎΠ΄Π΅Π», ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΈΡΠ΅ Π³ΠΎ ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Π°Ρ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ CRD ΡΠΎ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ Kubernetes, ΠΊΠΎΠΈ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ CRD, ΠΈ Π²ΡΡΠ°Ρ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈ Π΄Π΅ΡΡΡΠ²Π° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄ ΡΠΏΠΎΡΠ΅Π΄Π±Π°ΡΠ°. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΠΎΠ²ΠΎΡ ΠΌΠΎΠ΄Π΅Π» Π½Π° GitOps ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ArgoCD.
GitOps Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° OpenShift
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΌΡΠ»ΡΠΈ-ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°
Π‘ΠΎ ΡΠΈΡΠ΅ΡΠ΅ΡΠΎ Π½Π° Kubernetes ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½Π°ΡΠ° ΠΏΠΎΠΏΡΠ»Π°ΡΠ½ΠΎΡΡ Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈΡΠ΅ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ±Π»Π°ΠΊ ΠΈ ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡ, ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π° ΠΈ ΠΏΡΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° OpenShift ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ ΠΏΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°Π±Π½ΠΎΡΠΎ ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΡΠ΅, ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅ Π½Π° Π΅Π΄Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π°Ρ Π²ΠΎ ΡΡΠΎΡΠΈΡΠΈ ΠΈΠ»ΠΈ Π΄ΡΡΠΈ ΠΈΠ»ΡΠ°Π΄Π½ΠΈΡΠΈ. ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, ΡΠΎΡ Π΅ ΠΏΡΠΈΠ½ΡΠ΄Π΅Π½ Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π½Π΅Π·Π°Π²ΠΈΡΠ½ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ°Π½ΠΈ OpenShift ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π²ΠΎ ΡΠ°Π²Π½ΠΈΠΎΡ ΠΎΠ±Π»Π°ΠΊ ΠΈ Π²ΠΎ ΠΏΡΠΎΡΡΠΎΡΠΈΠΈΡΠ΅.
ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Ρ ΠΌΠ½ΠΎΠ³Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ:
- ΠΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΡΠ΅ Π΄Π΅ΠΊΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅ ΡΠ΅ Π²ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° ΡΠΎΡΡΠΎΡΠ±Π° (ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΡΠ»Π΅Π΄Π΅ΡΠ΅, ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅, ΠΈΡΠ½.)
- ΠΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ (ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π΅ΡΠ΅) ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΠΎΠ·Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π°.
- Π‘ΠΎΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΠΎΠ·Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π°.
- ΠΠΎΠ²Π΅Π΄ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ OpenShift ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ.
- ΠΡΠ°ΡΠΈ Π³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½ΠΈΠ· ΠΏΠΎΠ²Π΅ΡΠ΅ OpenShift ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ.
- ΠΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°
ΠΠ° Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π½ΠΈΠ²Π½ΠΈΠΎΡ ΠΆΠΈΠ²ΠΎΡΠ΅Π½ ΡΠΈΠΊΠ»ΡΡ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ ΠΌΠΈΠ½ΡΠ²Π°Π°Ρ Π½ΠΈΠ· ΡΠΈΠ½ΡΠΈΡ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ (dev, stage, ΠΈΡΠ½.) ΠΏΡΠ΅Π΄ Π΄Π° Π·Π°Π²ΡΡΠ°Ρ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΠΊΠ»Π°ΡΡΠ΅Ρ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΏΠΎΡΠ°Π΄ΠΈ Π±Π°ΡΠ°ΡΠ°ΡΠ° Π·Π° Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΎΡΡ ΠΈ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡ, ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Π°Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½ΠΈΠ· ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π²ΠΎ ΠΏΡΠΎΡΡΠΎΡΠΈΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ Π½Π° ΡΠ°Π²Π½Π° ΠΎΠ±Π»Π°ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°.
ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Ρ ΡΠ»Π΅Π΄Π½ΠΈΠ²Π΅ Π·Π°Π΄Π°ΡΠΈ:
- ΠΠ±Π΅Π·Π±Π΅Π΄Π΅ΡΠ΅ Π΄Π²ΠΈΠΆΠ΅ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ (Π±ΠΈΠ½Π°ΡΠ½ΠΈ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΈΡΠ½.) ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅ (dev, ΡΠ°Π·Π°, ΠΈΡΠ½.).
- ΠΠΎΠ²Π΅Π΄ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ (Π±ΠΈΠ½Π°ΡΠ½ΠΈ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΈΡΠ½.) Π²ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ OpenShift ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ.
- ΠΡΠ°ΡΠΈ Π³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π²ΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½Π°ΡΠ° ΠΏΠΎΠ·Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π°.
Π‘Π»ΡΡΠ°ΠΈ Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° OpenShift GitOps
1. ΠΡΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ΄ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ OpenShift Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π½Π° Git ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈ Π·Π° Π±Π΅Π· Π½Π°ΠΏΠΎΡ Π΄Π° ΡΠΎΠ·Π΄Π°Π²Π° Π½ΠΎΠ²ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ ΠΈ Π΄Π° Π³ΠΈ Π΄ΠΎΠ²Π΅Π΄Π΅ Π²ΠΎ ΡΠΎΡΡΠΎΡΠ±Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° ΡΠΎ ΠΏΠΎΠ·Π½Π°ΡΠ°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° Π·Π°ΡΡΠ²Π°Π½Π° Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git.
2. Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° ΡΠΎ Secret Manager
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ ΠΈΠΌΠ° ΠΊΠΎΡΠΈΡΡ ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π΄Π° Π³ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° OpenShift ΡΠΎ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ΅Π½ ΡΠΎΡΡΠ²Π΅Ρ ΠΊΠ°ΠΊΠΎ Vault, ΡΠΎ ΡΠ΅Π» Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ Π½ΠΈΠ² ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π°Π»Π°ΡΠΊΠΈ ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΎ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° ΠΎΠ²Π°.
3. ΠΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° Π΄ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ ΡΠ΅ Π±ΠΈΠ΄Π΅ Π·Π° ΡΠ°ΠΌΠΎ Π΄ΠΎΠΊΠΎΠ»ΠΊΡ ΡΠ°ΠΌΠΈΠΎΡ OpenShift GitOps ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π° ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈ Π·Π° Π½Π΅ΡΠΎΠ²ΠΏΠ°ΡΠ°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΡΠ΅Π°Π»Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΎΠ½ΠΈΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ°Ρ Π±ΡΠ·ΠΎ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ°Ρ Π½Π° drift.
4. ΠΠ·Π²Π΅ΡΡΡΠ²Π°ΡΠ° Π·Π° ΠΏΡΠ΅ΡΡΠ»Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°
Π’ΠΈΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠ³Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ ΡΠ°ΠΊΠ° Π±ΡΠ·ΠΎ Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅ Π·Π° ΡΠ»ΡΡΠ°ΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅ΡΡΠ»Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° ΡΠΎ ΡΠ΅Π» Π±ΡΠ·ΠΎ Π΄Π° ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈ ΠΌΠ΅ΡΠΊΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΠ½ΠΎ.
5. Π Π°ΡΠ½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ Π»Π΅Π±Π΄Π΅ΡΠ΅
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ Π΄Π° Π³ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ OpenShift ΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΏΡΠ΅ΡΡΠ»Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°, Π·Π° Π±ΡΠ·ΠΎ Π²ΡΠ°ΡΠ°ΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ Π²ΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½Π°ΡΠ° ΠΏΠΎΠ·Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π°.
6.ΠΠ²ΡΠΎΠΌΠ°ΡΡΠΊΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ Π»Π΅Π±Π΄Π΅ΡΠ΅
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ OpenShift Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅ Π΄ΡΠΈΡΡ, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΡΠ΅ ΡΠΎΠ²ΠΏΠ°ΡΠ° ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π²ΠΎ Git.
7. ΠΠ΅ΠΊΠΎΠ»ΠΊΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ - Π΅Π΄Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ OpenShift ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π²ΠΎ Π΅Π΄Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π½Π° Git ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° Π³ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π° ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±Π°.
8. Π₯ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ (Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°ΡΠ΅)
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈ Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ (ΡΠ°Π·Π°, ΠΏΡΠΎΠ΄, ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΡΠ½. ΡΠΎ Π½Π°ΡΠ»Π΅Π΄ΡΡΠ²ΠΎ). Π‘ΠΎ Π΄ΡΡΠ³ΠΈ Π·Π±ΠΎΡΠΎΠ²ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Π΄Π°Π»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π°Ρ Π½Π° Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ ΡΠ° ΠΏΠΎΡΡΠ°Π²ΠΈ Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ°ΡΠ° βΠΠ»Π°ΡΡΠ΅ΡΠΈ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ (prod) β System X ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ β ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Xβ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git, ΡΠΎΠ³Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ° ΠΎΠ΄ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ X:
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ Π·Π° ΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ.
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ System X.
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ X.
9. Π¨Π°Π±Π»ΠΎΠ½ΠΈΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠΈΡΠ΅ ΠΎΡΡΡΠ»Π°ΡΠ°
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΡΡΠ»ΠΈ ΡΠ΅Ρ Π½Π° Π½Π°ΡΠ»Π΅Π΄Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π½ΠΈΠ²Π½ΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΡΠΈΠ½ΠΎ Π΄Π° ΡΠ° ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π½Π° ΠΊΠΎΠΈ ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π°Ρ.
10. Π‘Π΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ ΠΈ ΠΈΡΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠ΅ Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½Π° Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ ΡΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ.
11. ΠΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠ°Π±Π»ΠΎΠ½
ΠΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠΌΠ°Π°Ρ ΠΊΠΎΡΠΈΡΡ ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ°Ρ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π°Ρ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° (Π₯Π΅Π»ΠΌ ΡΠ°Π±Π΅Π»Π°, ΡΠΈΡΡ Kubernetes yaml, ΠΈΡΠ½.) ΡΠΎ ΡΠ΅Π» Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π½Π°ΡΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ ΡΠΎΡΠΌΠ°Ρ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°.
GitOps Π°Π»Π°ΡΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° OpenShift
ArgoCD
ArgoCD Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ External Resource Reconcile ΠΈ Π½ΡΠ΄ΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π·Π° ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π²ΡΡΠΊΠΈ Π΅Π΄Π΅Π½-Π½Π°-ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅ ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ°ΡΠ° Π½Π° Git. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΎΠ²Π°Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ Π½Π΅ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ³Π° ArgoCD Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ.
Π€Π»ΡΠΊΡ
Flux ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° On-Cluster Resource Reconcile ΠΌΠΎΠ΄Π΅Π» ΠΈ, ΠΊΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, Π½Π΅ΠΌΠ° ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ, ΡΡΠΎ Π΅ ΡΠ»Π°Π±Π° ΡΠΎΡΠΊΠ°. ΠΠ΄ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, ΡΠΎΠΊΠΌΡ ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊΠΎΡ Π½Π° ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ°, ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΡΡΠ°Π½ΡΠ²Π° Π΄ΡΡΠΈ ΠΈ Π°ΠΊΠΎ Π΅Π΄Π΅Π½ ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π΅ ΡΡΠΏΠ΅Π΅.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π° ArgoCD Π½Π° OpenShift
ArgoCD Π½ΡΠ΄ΠΈ ΠΎΠ΄Π»ΠΈΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° Π»ΠΈΠ½ΠΈΡΠ° ΠΈ Π²Π΅Π±-ΠΊΠΎΠ½Π·ΠΎΠ»Π°, ΡΠ°ΠΊΠ° ΡΡΠΎ Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΈ ΠΏΠΎΠΊΡΠΈΠ΅ΠΌΠ΅ Flux ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΈ ΠΎΠ²Π΄Π΅.
ΠΠ° Π΄Π° Π³ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ ArgoCD Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° OpenShift 4, ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π³ΠΈ ΠΎΠ²ΠΈΠ΅ ΡΠ΅ΠΊΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ:
Π Π°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ArgoCD ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° OpenShift
# Create a new namespace for ArgoCD components
oc create namespace argocd
# Apply the ArgoCD Install Manifest
oc -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.2.2/manifests/install.yaml
# Get the ArgoCD Server password
ARGOCD_SERVER_PASSWORD=$(oc -n argocd get pod -l "app.kubernetes.io/name=argocd-server" -o jsonpath='{.items[*].metadata.name}')
ΠΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ArgoCD Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ ΠΏΡΠ΅ΠΊΡ OpenShift Route
# Patch ArgoCD Server so no TLS is configured on the server (--insecure)
PATCH='{"spec":{"template":{"spec":{"$setElementOrder/containers":[{"name":"argocd-server"}],"containers":[{"command":["argocd-server","--insecure","--staticassets","/shared/app"],"name":"argocd-server"}]}}}}'
oc -n argocd patch deployment argocd-server -p $PATCH
# Expose the ArgoCD Server using an Edge OpenShift Route so TLS is used for incoming connections
oc -n argocd create route edge argocd-server --service=argocd-server --port=http --insecure-policy=Redirect
Π Π°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ArgoCD Cli Tool
# Download the argocd binary, place it under /usr/local/bin and give it execution permissions
curl -L https://github.com/argoproj/argo-cd/releases/download/v1.2.2/argocd-linux-amd64 -o /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd
ΠΡΠΎΠΌΠ΅Π½Π° Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ArgoCD
# Get ArgoCD Server Route Hostname
ARGOCD_ROUTE=$(oc -n argocd get route argocd-server -o jsonpath='{.spec.host}')
# Login with the current admin password
argocd --insecure --grpc-web login ${ARGOCD_ROUTE}:443 --username admin --password ${ARGOCD_SERVER_PASSWORD}
# Update admin's password
argocd --insecure --grpc-web --server ${ARGOCD_ROUTE}:443 account update-password --current-password ${ARGOCD_SERVER_PASSWORD} --new-password
ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ Π³ΠΈ Π·Π°Π²ΡΡΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ ΡΠ΅ΠΊΠΎΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΡΠΎ ArgoCD Server ΠΏΡΠ΅ΠΊΡ Π²Π΅Π±-ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° ArgoCD WebUI ΠΈΠ»ΠΈ Π°Π»Π°ΡΠΊΠ°ΡΠ° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° Π»ΠΈΠ½ΠΈΡΠ° ArgoCD Cli.
GitOps - ΠΠΈΠΊΠΎΠ³Π°Ρ Π½Π΅ Π΅ Π΄ΠΎΡΠ½Π°
βΠΠΎΠ·ΠΎΡ Π·Π°ΠΌΠΈΠ½Π°β - Π²Π°ΠΊΠ° Π²Π΅Π»Π°Ρ Π·Π° ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΠ³Π° ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΡΠΎ. ΠΠΎ ΡΠ»ΡΡΠ°ΡΠΎΡ ΡΠΎ OpenShift, ΠΆΠ΅Π»Π±Π°ΡΠ° Π²Π΅Π΄Π½Π°Ρ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΎΠ²Π°Π° ΠΊΡΠ» Π½ΠΎΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΡΠ΅ΡΡΠΎ ΡΠ° ΡΠΎΠ·Π΄Π°Π²Π° ΡΠΎΠΊΠΌΡ ΠΎΠ²Π°Π° ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΡΡΠΈΡΠ΅, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ°ΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° OpenShift. ΠΠΎ, Π΄Π°Π»ΠΈ ΡΠ°Π½ΡΠ°ΡΠ° ΡΠ΅ΠΊΠΎΠ³Π°Ρ Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ±Π΅Π½Π°?
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΡΠ°ΡΠ° Π½Π°ΠΏΠΈΡΠΈ Π·Π°
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/namespace.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/deployment.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/service.yaml
oc expose svc/httpd -n simple-app
ΠΠ½Π°ΡΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΡΠ½ΠΎ ΠΈΠ·ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. Π‘Π΅Π³Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΠ΅ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ GitOps Π±Π΅Π· Π³ΡΠ±Π΅ΡΠ΅ Π½Π° Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΎΡΡΠ°. ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ, Π³ΠΎ ΠΏΡΠ°Π²ΠΈ ΠΎΠ²Π°:
- ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π½Π° Git Π·Π° ΠΊΠΎΠ΄ΠΎΡ.
- ΠΠΈ ΠΈΠ·Π²Π΅Π·ΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΠΈ Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git.
- ΠΠ·Π±ΠΎΡ ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° Π°Π»Π°ΡΠΊΠΈΡΠ΅ GitOps.
- ΠΠΈΠ΅ Π³ΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Π½Π°ΡΠ΅ΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π²ΠΎ ΠΎΠ²Π°Π° Π°Π»Π°ΡΠΊΠ°.
- ΠΠΈΠ΅ ΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ ΡΠΎ Π°Π»Π°ΡΠΊΠΈ GitOps.
- ΠΠΈΠ΅ Π²ΡΡΠΈΠΌΠ΅ ΡΠ΅ΡΡ-ΠΈΠ·Π²Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ Π°Π»Π°ΡΠΊΠΈ GitOps.
- ΠΠΈΠ΅ Π³ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ Π°Π»Π°ΡΠΊΠΈ GitOps.
- ΠΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ°ΡΡΡΠ΅ΡΠ΅ ΠΈ Π°Π²ΡΠΎ-ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ.
ΠΠ°ΠΊΠΎ ΡΡΠΎ Π±Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΎ Π²ΠΎ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎΡΠΎ
ΠΠΎ Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ Π½ΠΎΠ²ΠΎ ΡΠ°Π²Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π½Π° GitHub. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΡΠ΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅, Π½ΠΈΠ΅ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π±Π»ΠΎΠ³ΠΏΠΎΡΡ.
ΠΠΊΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ YAML Π½Π΅ ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π½ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ»ΠΈ Π²ΠΎ Git, ΡΠΎΠ³Π°Ρ ΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ oc ΠΈΠ»ΠΈ kubectl. ΠΠ° ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΎΠ΄ Π΅ΠΊΡΠ°Π½ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ»Ρ Π±Π°ΡΠ°ΠΌΠ΅ YAML Π·Π° Π½Π°ΡΠΈΠΎΡ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅, ΡΡΠ»ΡΠ³Π° ΠΈ ΡΡΡΠ°. ΠΡΠ΅Π΄ ΠΎΠ²Π°, Π³ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π²ΠΌΠ΅ Π½ΠΎΠ²ΠΎΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΎΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ ΠΈ CD Π²ΠΎ Π½Π΅Π³ΠΎ.
oc get namespace simple-app -o yaml --export > namespace.yaml
oc get deployment httpd -o yaml -n simple-app --export > deployment.yaml
oc get service httpd -o yaml -n simple-app --export > service.yaml
oc get route httpd -o yaml -n simple-app --export > route.yaml
Π‘Π΅Π³Π° Π°ΡΠ΄Π΅ Π΄Π° ΡΠ° ΡΡΠ΅Π΄ΠΈΠΌΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° deployment.yaml Π·Π° Π΄Π° Π³ΠΎ ΠΎΡΡΡΡΠ°Π½ΠΈΠΌΠ΅ ΠΏΠΎΠ»Π΅ΡΠΎ ΡΡΠΎ Argo CD Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°.
sed -i '/sgeneration: .*/d' deployment.yaml
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΡΠΌΠ΅Π½ΠΈ ΠΈ ΠΌΠ°ΡΡΡΡΡΠ°ΡΠ°. ΠΡΠ²ΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅Π»ΠΈΠ½ΠΈΡΠΊΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, Π° ΠΏΠΎΡΠΎΠ° ΡΠ΅ Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠ΅ ingress: null ΡΠΎ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ°Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°.
export ROUTE=" ingress:
- conditions:
- status: 'True'
type: Admitted"
sed -i "s/ ingress: null/$ROUTE/g" route.yaml
ΠΠ½Π°ΡΠΈ, Π³ΠΈ ΠΏΠΎΠ΄ΡΠ΅Π΄ΠΈΠ²ΠΌΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅, ΠΎΡΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΈ Π·Π°ΡΡΠ²Π°ΠΌΠ΅ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git. ΠΠΎΡΠ»Π΅ ΡΠΎΠ°, ΠΎΠ²Π° ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ ΡΡΠ°Π½ΡΠ²Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΠΎΡ ΠΈΠ·Π²ΠΎΡ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π° ΡΠΈΡΠ΅ ΡΠ°ΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ ΡΡΡΠΎΠ³ΠΎ Π·Π°Π±ΡΠ°Π½Π΅ΡΠΈ.
git commit -am βinitial commit of objectsβ
git push origin master
ΠΠΎΠ½Π°ΡΠ°ΠΌΡ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡΠ²Π°ΠΌΠ΅ ΠΎΠ΄ ΡΠ°ΠΊΡΠΎΡ Π΄Π΅ΠΊΠ° Π²Π΅ΡΠ΅ ΡΡΠ΅ Π³ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠ»Π΅ ArgoCD (ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π° - Π²ΠΈΠ΄Π΅ΡΠ΅ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ
argocd repo add https://github.com/cooktheryan/blogpost
Π‘Π΅Π³Π° Π°ΡΠ΄Π΅ Π΄Π° ΡΠ° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ ΡΠΎ Π°Π»Π°ΡΠΊΠΈ GitOps ΡΠ°Π·Π±ΠΈΡΠ° ΠΊΠΎΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ ΠΈ ΠΏΠ°ΡΠ΅ΠΊΠΈ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈ, ΠΊΠΎΡ OpenShift Π΅ ΠΏΠΎΡΡΠ΅Π±Π΅Π½ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ, ΠΊΠΎΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π³ΡΠ°Π½ΠΊΠ° Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° ΠΈ Π΄Π°Π»ΠΈ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΡΡΠ΅Π±Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ Π΄Π° ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π°Ρ.
argocd app create --project default
--name simple-app --repo https://github.com/cooktheryan/blogpost.git
--path . --dest-server https://kubernetes.default.svc
--dest-namespace simple-app --revision master --sync-policy none
ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ Π¦Π-ΡΠΎ Π½Π° Argo, ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ ΡΠΎ Π°Π»Π°ΡΠΊΠΈ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° Π΄Π° Π³ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π²Π΅ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈΡΠ΅ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ. ΠΠΎ Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠ°ΡΠ° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° ΠΈ ΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈ, ΡΠ°ΠΊΠ° ΡΡΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ. ΠΠ΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°ΡΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° Π²ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ Π½Π° Argo CD Π½Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΠΈΠΌΠ° ΡΡΠ°ΡΡΡ βOut of Syncβ Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½Π΅ ΠΏΠΎΡΡΠΎΠΈ ΠΎΠ·Π½Π°ΠΊΠ° ΡΡΠΎ ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ArgoCD.
ΠΠ²Π° Π΅ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° Π·ΠΎΡΡΠΎ ΠΊΠΎΠ³Π° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌΠ΅ ΡΠΎ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ΄ΠΎΡΠ½Π°, ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Π°Ρ.
Π‘Π΅Π³Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠ΅ΡΡ Π·Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½Π΅ΠΌΠ° Π³ΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π½Π°ΡΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ.
argocd app sync simple-app --dry-run
ΠΠΊΠΎ Π½Π΅ΠΌΠ° Π³ΡΠ΅ΡΠΊΠΈ, ΡΠΎΠ³Π°Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ ΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ°.
argocd app sync simple-app
ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° argocd get Π½Π° Π½Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΡΡΠ΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΡΠ°ΡΡΡΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Ρ Π²ΠΎ Healthy ΠΈΠ»ΠΈ Synced. ΠΠ²Π° ΡΠ΅ Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Git ΡΠ΅Π³Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°Π°Ρ Π½Π° ΠΎΠ½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΈ ΠΊΠΎΠΈ ΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½ΠΈ.
argocd app get simple-app
Name: simple-app
Project: default
Server: https://kubernetes.default.svc
Namespace: simple-app
URL: https://argocd-server-route-argocd.apps.example.com/applications/simple-app
Repo: https://github.com/cooktheryan/blogpost.git
Target: master
Path: .
Sync Policy: <none>
Sync Status: Synced to master (60e1678)
Health Status: Healthy
...
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΈΡΡΠ΅ΡΠ΅ Π·Π° Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠ°ΡΠ΅ Π΄Π΅ΠΊΠ° Π½ΠΈΡΡΠΎ Π½Π΅ Π΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΎ ΡΠ°ΡΠ½ΠΎ ΠΈ Π΄Π΅ΠΊΠ° ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΊΠΎΠ³Π° Π½Π΅ΠΊΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ° ΠΈΠ»ΠΈ Π°ΠΆΡΡΠΈΡΠ° Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ, ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅.
argocd app set simple-app --sync-policy automated --auto-prune
ΠΠ½Π°ΡΠΈ, ΡΡΠΏΠ΅ΡΠ½ΠΎ Π΄ΠΎΠ²Π΅Π΄ΠΎΠ²ΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° GitOps ΠΊΠΎΡΠ° ΠΏΡΠ²ΠΈΡΠ½ΠΎ Π½Π΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ GitOps Π½Π° ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ Π½Π°ΡΠΈΠ½.
ΠΠ·Π²ΠΎΡ: www.habr.com