ΠΠ½Π΅Ρ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π° GitOps, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΊΠ°ΠΊ ΡΠ΅Π·ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° OpenShift. ΠΠ°Π»ΠΈΡΠ½ΠΎ Π΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ°
ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ, GitOps Π΅ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° Git Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Git Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π² GitOps ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ° ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠΎΠ²Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΠΌΠΈ ΠΈ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°.
ΠΠ΄Π΅ΡΡΠ° Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² GitOps Π² Π½ΠΈΠΊΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ Π½Π΅ Π΅ Π½ΠΎΠ²Π°; ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΎΡΠ΄Π°Π²Π½Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΡΡΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. GitOps ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (ΡΠ΅Π²ΡΡΠ°, Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅, ΡΠ°Π³ΠΎΠ²Π΅ ΠΈ Ρ.Π½.) Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°, ΠΊΠ°ΠΊΡΠΎ Π² ΡΠ»ΡΡΠ°Ρ Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄.
ΠΡΠΌΠ° Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° GitOps, Π° ΡΠ°ΠΌΠΎ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ, Π²ΡΡΡ Ρ ΠΊΠΎΠΈΡΠΎ Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° ΡΠ°Π·ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°:
- ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Git (ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ Ρ.Π½.).
- ΠΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΡΡΠ΅Π· Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅.
- Π‘ΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ΅ ΠΏΡΠΈΠ²Π΅ΠΆΠ΄Π° Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Git push Π·Π°ΡΠ²ΠΊΠΈ.
ΠΡΠΈΠ½ΡΠΈΠΏΠΈ Π½Π° GitOps
- Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄
Π‘ΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ° ΠΊΠ°ΡΠΎ ΠΊΠΎΠ΄, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Π² Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° ΠΈΡΡΠΈΠ½Π°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ»Π΅ΡΠ½ΡΠ²Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ Π²ΡΡΡΠ°Π½Π΅ΡΠΎ Π½Π°Π·Π°Π΄ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅.
- ΠΠ΅Π»Π°Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ Π² Git
Π§ΡΠ΅Π· ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ ΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΆΠ΅Π»Π°Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π² Git, Π½ΠΈΠ΅ ΡΠΌΠ΅ Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π²Π½Π΅Π΄ΡΡΠ²Π°ΠΌΠ΅ ΠΈ Π²ΡΡΡΠ°ΠΌΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. ΠΠΎΠΆΠ΅ΠΌ ΡΡΡΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈΡΠ΅ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π½Π° Git, Π·Π° Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎΡΡΡΠ° Π²ΡΡΡ Ρ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π°Π²ΡΠ΅Π½ΡΠΈΡΠ½ΠΎΡΡ.
- ΠΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠ΅Π· Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° Git, ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠ»Π΅Π½ΠΎΠ²Π΅ Π½Π° Π΅ΠΊΠΈΠΏΠ° Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Ρ ΠΏΡΠ΅Π· CI ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈ Ρ.Π½.
Π Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΈ ΠΏΡΠ°Π²ΠΎΠΌΠΎΡΠΈΡ Π½Π°Π»ΡΠ²ΠΎ ΠΈ Π½Π°Π΄ΡΡΠ½ΠΎ. ΠΠ° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΡΠ΅ Π½ΡΠΆΠ΄Π°ΡΡ ΡΠ°ΠΌΠΎ ΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΡΠ΅Π·ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
- ΠΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π½Π΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΎΡΠΎ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΆΠ΅Π»Π°Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π±ΡΠ΄Π΅ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΎ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Git, Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ, Π΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΠΌ ΡΠΎΡΡΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΠΆΠ΅Π»Π°Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΊΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ°ΠΊΠ°, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠ·ΠΈ ΡΠΎΡΡΡΠ΅Ρ ΡΡΡΠ±Π²Π° - Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ - ΠΈΠ»ΠΈ ΡΠ°ΠΌ Π΄Π° ΠΎΡΡΡΡΠ°Π½ΠΈ Π½Π΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΡΠΎ, ΠΈΠ»ΠΈ Π΄Π° Π½ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠΈ Π·Π° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°.
GitOps ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π° OpenShift
On-Cluster Resource Reconciler
Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» ΠΊΠ»ΡΡΡΠ΅ΡΡΡ ΠΈΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° ΡΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Kubernetes (YAML ΡΠ°ΠΉΠ»ΠΎΠ²Π΅) Π² Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Ρ ΡΠ΅Π°Π»Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠΊΠΎ ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΡΡ Π½Π΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΈΠ·Π²Π΅ΡΡΠΈΡ ΠΈ Π΅Π²Π΅Π½ΡΡΠ°Π»Π½ΠΎ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ΅ΠΌΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π·Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡΡΠ°. Π’ΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» GitOps ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Anthos Config Management ΠΈ Weaveworks Flux.
Π‘ΡΠ³Π»Π°ΡΡΠ²Π°ΡΠ΅Π» Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ (Push)
Π’ΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ, ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π² Π΄Π²ΠΎΠΉΠΊΠΈΡΠ΅ βGit repository - Kubernetes clusterβ. Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° ΡΡΠΊ Π΅, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ ΠΊΠ»ΡΡΡΠ΅Ρ Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΈΠΌΠ° ΡΠ²ΠΎΠΉ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ. Git - k8s ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ Π΄Π²ΠΎΠΉΠΊΠΈ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΊΠ°ΡΠΎ CRD (ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΡΠ΅ΡΡΡΡΠΈ), ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΎΠΏΠΈΡΠ°Ρ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ. Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π°Ρ Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ Π² CRD, Ρ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠΎ ΡΠ° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² CRD, ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ, ΡΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» GitOps ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ArgoCD.
GitOps Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° OpenShift
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΡΠ»ΡΠΈΠΊΠ»ΡΡΡΠ΅ΡΠ½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π½Π° Kubernetes
Π‘ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Kubernetes ΠΈ Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠ°ΡΠ° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡ Π½Π° ΠΌΡΠ»ΡΠΈ-ΠΎΠ±Π»Π°ΡΠ½ΠΈΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΡΠ΅Π΄Π½ΠΈΡΡ Π±ΡΠΎΠΉ OpenShift ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΡΠΎ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΡΠ°ΠΉΠ½ΠΎ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅, ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·Π³ΡΡΠ½Π°ΡΠΈ Π² ΡΡΠΎΡΠΈΡΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΡΠΎΠΉ Π΅ ΠΏΡΠΈΠ½ΡΠ΄Π΅Π½ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ°Π½ΠΈ OpenShift ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΎΠ±Π»Π°ΠΊ ΠΈ Π½Π° ΠΌΡΡΡΠΎ.
Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ:
- ΠΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅ Π΄Π° ΡΠ° Π² ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ (ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Ρ.Π½.)
- Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π°Π½ΠΎΠ²ΠΎ (ΠΈΠ»ΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅) Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅.
- Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅.
- Π Π°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ OpenShift ΠΊΠ»ΡΡΡΠ΅ΡΠΈ.
- ΠΡΡΠ½Π΅ΡΠ΅ Π½Π°Π·Π°Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ OpenShift ΠΊΠ»ΡΡΡΠ΅ΡΠΈ.
- Π‘Π²ΡΡΠΆΠ΅ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ²ΠΎΡ ΠΆΠΈΠ·Π½Π΅Π½ ΡΠΈΠΊΡΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ΡΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³Π° ΠΎΡ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ (dev, stage ΠΈ Ρ.Π½.), ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΠΊΠ»ΡΡΡΠ΅Ρ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ, ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½Π° ΠΎΠ±Π»Π°ΡΠ½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°.
Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ:
- ΠΡΠΈΠ³ΡΡΠ΅ΡΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π΄Π²ΠΎΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Ρ.Π½.) ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ (dev, stage ΠΈ Ρ.Π½.).
- Π Π°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π΄Π²ΠΎΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Ρ.Π½.) Π² Π½ΡΠΊΠΎΠ»ΠΊΠΎ OpenShift ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
- ΠΡΡΠ½Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π΄ΠΎ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅.
Π‘Π»ΡΡΠ°ΠΈ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° OpenShift GitOps
1. ΠΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΡ Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° OpenShift Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Git ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° Π³ΠΈ ΠΏΡΠΈΠ»Π°Π³Π°, Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π° Π±Π΅Π·ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠΈΠ²Π΅ΠΆΠ΄Π° Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΎ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Git.
2. Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Ρ Secret Manager
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΡΡΡΠΎ ΡΠ΅ ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π½Π° OpenShift Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΡΠΎΡΡΡΠ΅Ρ ΠΊΠ°ΡΠΎ Vault, Π·Π° Π΄Π° Π³ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° ΡΠΎΠ²Π°.
3. ΠΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π΄ΡΠ΅ΠΉΡΠ°
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π² ΠΏΠΎΠ»Π·Π° ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΡΠ°ΠΌΠΈΡΡ OpenShift GitOps ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π° Π·Π° Π½Π΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π°Π»Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅Π·ΠΈ, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° ΠΌΠΎΠ³Π°Ρ Π±ΡΡΠ·ΠΎ Π΄Π° ΡΠ΅Π°Π³ΠΈΡΠ°Ρ Π½Π° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅.
4. ΠΠ·Π²Π΅ΡΡΠΈΡ Π·Π° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°
Π’Π΅ ΡΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π² ΡΠ»ΡΡΠ°ΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΠΈΡΠΊΠ° Π±ΡΡΠ·ΠΎ Π΄Π° Π½Π°ΡΡΠΈ Π·Π° ΡΠ»ΡΡΠ°ΠΈΡΠ΅ Π½Π° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ΅ΠΌΠ΅ Π±ΡΡΠ·ΠΎ ΡΠ°ΠΌ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ.
5. Π ΡΡΠ½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ ΠΏΡΠΈ Π΄ΡΠΈΡΡ
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π΄Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΠΊΠ»ΡΡΡΠ΅ΡΠ° OpenShift Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Git Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°, Π·Π° Π±ΡΡΠ·ΠΎ Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅.
6.ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ ΠΏΡΠΈ Π΄ΡΠΈΡΡ
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΊΠ»ΡΡΡΠ΅ΡΠ° OpenShift Π΄Π° ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π±ΡΠ΄Π΅ ΠΎΡΠΊΡΠΈΡ Π΄ΡΠΈΡΡ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π² Git.
7. ΠΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΠ° - Π΅Π΄Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ OpenShift ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π² Π΅Π΄Π½ΠΎ Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»Π½ΠΎ Π΄Π° Π³ΠΈ ΠΏΡΠΈΠ»Π°Π³Π° ΡΠΏΠΎΡΠ΅Π΄ Π½ΡΠΆΠ΄ΠΈΡΠ΅.
8. ΠΠ΅ΡΠ°ΡΡ ΠΈΡ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ (Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅)
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ (Π΅ΡΠ°ΠΏ, ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Ρ.Π½. Ρ Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅). Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Π΄Π°Π»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ°Ρ ΠΊΡΠΌ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π·Π°Π΄Π°Π΄Π΅ ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡΡΠ° βΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ (prod) β System X ΠΊΠ»ΡΡΡΠ΅ΡΠΈ β ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Xβ Π² Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΡΠΎΠ³Π°Π²Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° X:
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ.
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° System X.
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° X.
9. Π¨Π°Π±Π»ΠΎΠ½ΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Π½Π°ΡΠ»Π΅Π΄Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈ ΡΠΈΠ½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ, ΠΊΡΠΌ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ.
10. Π‘Π΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π΄Π°Π²Π° ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ.
11. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°Ρ ΠΊΠ°ΠΊ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (Helm Chart, ΡΠΈΡΡ Kubernetes yaml ΠΈ Ρ.Π½.), Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π°ΠΉ-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π·Π° Π²ΡΡΠΊΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
GitOps ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° OpenShift
ArgoCD
ArgoCD ΠΏΡΠΈΠ»Π°Π³Π° ΠΌΠΎΠ΄Π΅Π»Π° External Reconcile Reconcile ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ "Π΅Π΄ΠΈΠ½ ΠΊΡΠΌ ΠΌΠ½ΠΎΠ³ΠΎ" ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΈ Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ArgoCD Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ.
Flux
Flux ΠΏΡΠΈΠ»Π°Π³Π° ΠΌΠΎΠ΄Π΅Π» Π·Π° ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° Π½ΡΠΌΠ° ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΠ»Π°Π±ΠΎ ΠΌΡΡΡΠΎ. ΠΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΎΡΡΠ°Π²Π° Π΄ΠΎΡΠΈ ΠΏΡΠΈ ΠΎΡΠΊΠ°Π· Π½Π° Π΅Π΄ΠΈΠ½ ΠΊΠ»ΡΡΡΠ΅Ρ.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° 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 Server, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠΆΠ΄Π° ΠΎΡ 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. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΡΠΈΡΠ°ΡΠ΅ ΠΊΠ°ΠΊΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠΌΠ΅ΡΠΎ blogpost.
ΠΠΊΠΎ 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 CD, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΡΡ Π·Π°ΠΏΠΎΡΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²Π΅ΡΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠΏΡΡΠΌΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈΡΠ΅ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. Π Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ ΡΠ° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ. ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° Argo CD Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΈΠΌΠ° ΡΡΠ°ΡΡΡ βΠΠ·Π²ΡΠ½ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡβ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½ΡΠΌΠ° Π΅ΡΠΈΠΊΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ArgoCD ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ.
ΠΡΠΎ Π·Π°ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ.
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ΅ΡΡ, Π·Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ Π½ΡΠΌΠ° Π³ΡΠ΅ΡΠΊΠΈ Π² Π½Π°ΡΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
argocd app sync simple-app --dry-run
ΠΠΊΠΎ Π½ΡΠΌΠ° Π³ΡΠ΅ΡΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅ ΠΊΡΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ.
argocd app sync simple-app
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° argocd get Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΎ Π½Π° ΠΠ΄ΡΠ°Π²ΠΎΡΠ»ΠΎΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΎ. Π’ΠΎΠ²Π° ΡΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° 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