Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ GitOps Π·Π° OpenShift

ДСнСс ќС Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅ Π·Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° GitOps, ΠΊΠ°ΠΊΠΎ ΠΈ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ ΠΎΠ²ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π°Ρ‚ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° OpenShift. ДостапСн Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π²ΠΎΠ΄ΠΈΡ‡ Π½Π° ΠΎΠ²Π°Π° Ρ‚Π΅ΠΌΠ° ΠΏΠΎ ссылкС.

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ 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.

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ GitOps Π·Π° OpenShift

ΠŸΠΎΠΌΠΈΡ€ΡƒΠ²Π°Ρ‡ Π½Π° Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ рСсурси (Push)

Овој ΠΌΠΎΠ΄Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° сС смСта ΠΊΠ°ΠΊΠΎ Π²Π°Ρ€ΠΈΡ˜Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΠΎΡ‚, ΠΊΠΎΠ³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ повСќС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΡ€ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° рСсурситС Π²ΠΎ ΠΏΠ°Ρ€ΠΎΠ²ΠΈΡ‚Π΅ β€žΠ Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡƒΠΌ Git - кластСр ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρβ€œ. Π Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΎΠ²Π΄Π΅ Π΅ Π²ΠΎ Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ сСкој ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Π½ кластСр Π½Π΅ ΠΌΠΎΡ€Π° Π΄Π° ΠΈΠΌΠ° свој посСбСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€. ΠŸΠ°Ρ€ΠΎΠ²ΠΈΡ‚Π΅ кластСри Git - k8s чСсто сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ ΠΊΠ°ΠΊΠΎ CRD (ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π·Π° рСсурси), ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° опишС ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΡ€ΠΎΡ‚ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°. Π’ΠΎ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° овој ΠΌΠΎΠ΄Π΅Π», ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΡ€ΠΈΡ‚Π΅ Π³ΠΎ спорСдуваат ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Git Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ CRD со рСсурситС Π½Π° кластСрот Kubernetes, ΠΊΠΎΠΈ исто Ρ‚Π°ΠΊΠ° сС Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ CRD, ΠΈ Π²Ρ€ΡˆΠ°Ρ‚ соодвСтни Π΄Π΅Ρ˜ΡΡ‚Π²Π° Π²Ρ€Π· основа Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ΄ спорСдбата. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, овој ΠΌΠΎΠ΄Π΅Π» Π½Π° GitOps сС користи Π²ΠΎ ArgoCD.

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ GitOps Π·Π° OpenShift

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.
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - Никогаш Π½Π΅ Π΅ Π΄ΠΎΡ†Π½Π°

β€žΠ’ΠΎΠ·ΠΎΡ‚ Π·Π°ΠΌΠΈΠ½Π°β€œ - Π²Π°ΠΊΠ° Π²Π΅Π»Π°Ρ‚ Π·Π° ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π° ΠΊΠΎΠ³Π° сС ΠΏΡ€ΠΎΠΏΡƒΡˆΡ‚Π° моТноста Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π΅ΡˆΡ‚ΠΎ. Π’ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ΠΎΡ‚ со OpenShift, ΠΆΠ΅Π»Π±Π°Ρ‚Π° вСднаш Π΄Π° сС Π·Π°ΠΏΠΎΡ‡Π½Π΅ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΎΠ²Π°Π° ΠΊΡƒΠ» Π½ΠΎΠ²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° чСсто ја создава Ρ‚ΠΎΠΊΠΌΡƒ ΠΎΠ²Π°Π° ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π° со ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΈ ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ€ΡƒΡ‚ΠΈΡ‚Π΅, Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ°Ρ‚Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π½Π° OpenShift. Но, Π΄Π°Π»ΠΈ ΡˆΠ°Π½ΡΠ°Ρ‚Π° сСкогаш Π΅ цСлосно ΠΈΠ·Π³ΡƒΠ±Π΅Π½Π°?

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΡΠ΅Ρ€ΠΈΡ˜Π°Ρ‚Π° написи Π·Π° GitOps, дСнСс ќС Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° трансформиратС Ρ€Π°Ρ‡Π½ΠΎ ΠΈΠ·Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΈ Π½Π΅Ρ˜Π·ΠΈΠ½ΠΈΡ‚Π΅ рСсурси Π²ΠΎ процСс ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ сè Π΅ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Π½ΠΎ ΠΎΠ΄ Π°Π»Π°Ρ‚ΠΊΠΈΡ‚Π΅ GitOps. Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, ΠΏΡ€Π²ΠΎ Ρ€Π°Ρ‡Π½ΠΎ ќС ја распорСдимС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° httpd. Π‘Π»ΠΈΠΊΠ°Ρ‚Π° ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ создавамС имСнски простор, Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ ΠΈ услуга, Π° ΠΏΠΎΡ‚ΠΎΠ° ја ΠΈΠ·Π»ΠΎΠΆΡƒΠ²Π°ΠΌΠ΅ ΠΎΠ²Π°Π° услуга Π·Π° Π΄Π° создадСмС Ρ€ΡƒΡ‚Π°.

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.
  • ΠžΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠ°ΡΡ‚Ρ€Π΅ΡšΠ΅ ΠΈ Π°Π²Ρ‚ΠΎ-ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ.

Како ΡˆΡ‚ΠΎ бСшС спомСнато Π²ΠΎ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΡ‚ΠΎ Π§Π»Π΅Π½, Π²ΠΎ GitOps ΠΈΠΌΠ° Π΅Π΄Π΅Π½ ΠΈ СдинствСн ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° ситС ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π²ΠΎ кластСрот(ΠΈΡ‚Π΅) ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ - ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Git. Π‘Π»Π΅Π΄Π½ΠΎ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒΠ²Π°ΠΌΠ΅ ΠΎΠ΄ прСмисата Π΄Π΅ΠΊΠ° Π²Π°ΡˆΠ°Ρ‚Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° вСќС користи ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π½Π° Git. МоТС Π΄Π° Π±ΠΈΠ΄Π΅ јавСн ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π΅Π½, Π½ΠΎ ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π΅ достапСн Π·Π° кластСритС Π½Π° Kubernetes. Ова ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ исто ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ ΠΊΠ°ΠΊΠΎ Π·Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈΠ»ΠΈ посСбно ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ создадСно ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ Π·Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ°. Π‘Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π° Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ строги Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ бидСјќи Ρ‚Π°ΠΌΡƒ ќС сС складираат Ρ‚Π°Ρ˜Π½ΠΈ, ΠΏΡ€Π°Π²Ρ†ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ чувствитСлни Π½Π° бСзбСдноста.

Π’ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ќС создадСмС Π½ΠΎΠ²ΠΎ јавно ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π½Π° 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 (ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π° - Π²ΠΈΠ΄Π΅Ρ‚Π΅ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ пост). Π—Π°Ρ‚ΠΎΠ°, Π½Π° Argo CD-Ρ‚ΠΎ ќС Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ ΡˆΡ‚ΠΎ Π³ΠΎ создадовмС, Π° Π³ΠΎ содрТи ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΎΠ΄ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘Π°ΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ стС Π³ΠΎ Π½Π°Π²Π΅Π»Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΡ‚ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ ΡˆΡ‚ΠΎ стС Π³ΠΎ создалС ΠΏΠΎΡ€Π°Π½ΠΎ.

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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€