Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitOps Π·Π° OpenShift

ДнСс Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° GitOps, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚Π΅Π·ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° OpenShift. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚Π° Π΅ Π½Π°Π»ΠΈΡ‡Π½ΠΎ. ΠΎΡ‚ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitOps Π·Π° OpenShift

Накратко, GitOps Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ практичСскитС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° инфраструктурата ΠΈ прилоТСнията Ρ‡Ρ€Π΅Π· pull-заявки Π½Π° Git. Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° GitOps сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ СдинствСният ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° информация Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° систСмата, ΠΊΠ°Ρ‚ΠΎ всяка промяна Π½Π° Ρ‚ΠΎΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π΅ напълно прослСдима ΠΈ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈ Π½Π° ΠΎΠ΄ΠΈΡ‚.

Π˜Π΄Π΅ΡΡ‚Π° Π·Π° прослСдимост Π½Π° измСнСнията Π² GitOps Π½Π΅ Π΅ Π½ΠΎΠ²Π°; Ρ‚Π°ΠΊΡŠΠ² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‚Π΄Π°Π²Π½Π° ΠΈ практичСски навсякъдС сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с изходния ΠΊΠΎΠ΄ Π½Π° прилоТСния. GitOps просто Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈ, pull-заявки, Ρ‚Π°Π³ΠΎΠ²Π΅ ΠΈ Ρ‚.Π½.) ΠΏΡ€ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° инфраструктурата ΠΈ прилоТСнията ΠΈ прСдоставя Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΈ прСдимства, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° изходния ΠΊΠΎΠ΄.

Π—Π° GitOps няма Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΡ‚Π²ΡŠΡ€Π΄Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π° само Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ сС основава Ρ‚Π°Π·ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°:

  • Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΡ‚ΠΎ описаниС Π½Π° систСмата сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Ρ‚.Π½.).
  • ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Ρ‡Ρ€Π΅Π· pull-заявки.
  • Π‘ΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈΡ‚Π΅ систСми сС ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π° с Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Ρ‡Ρ€Π΅Π· push-заявки Π½Π° Git.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ Π½Π° GitOps

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡΡ‚Π° Π½Π° систСмитС сС описват ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° систСмитС сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ΄, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π° ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ вСрсионирана Π² Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ слуТи ΠΊΠ°Ρ‚ΠΎ СдинствСн ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° истина. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволява лСсно ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ (rollout) ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ (rollback) Π½Π° измСнСния Π² систСмитС.

  • Π–Π΅Π»Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΠΈ конфигурацията Π½Π° систСмитС сС Π·Π°Π΄Π°Π²Π°Ρ‚ ΠΈ вСрсионират Π² Git.

Π‘ΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΉΠΊΠΈ ΠΈ вСрсионирайки ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° систСмитС Π² Git, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ лСсно Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°ΠΌΠ΅ ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Π²Π°ΠΌΠ΅ измСнСния Π² систСмитС ΠΈ прилоТСнията. ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° сигурност Π½Π° Git Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° собствСността Π½Π° ΠΊΠΎΠ΄Π° ΠΈ удостовСряванС Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° автСнтичност.

  • ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Ρ‡Ρ€Π΅Π· pull-заявки.

Π§Ρ€Π΅Π· Git pull-заявки ΠΌΠΎΠΆΠ΅ΠΌ лСсно Π΄Π° управлявамС Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ към ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π² рСпозитория. НапримСр, Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ прСдставСни Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ‡Π»Π΅Π½ΠΎΠ²Π΅ Π½Π° Π΅ΠΊΠΈΠΏΠ° ΠΈΠ»ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ‚ ΠΏΡ€Π΅Π· CI тСстовС.

И Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Ρ€Π°Π·Π΄Π°Π²Π°Ρ‚Π΅ администраторски ΠΏΡ€Π°Π²Π° наляво ΠΈ надясно. Π—Π° Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ commit Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² конфигурацията, ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ трябва Π΄Π° ΠΈΠΌΠ°Ρ‚ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²Π° Π² Git рСпозитория, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

  • РСшаванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с нСконтролируСмия Π΄Ρ€ΠΈΡ„Ρ‚ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° систСмата сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Git рСпозитория, остава само Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ софтуСр, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° слСди Π΄Π°Π»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° систСмата ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ. Ако Π½Π΅ Π΅ Ρ‚Π°ΠΊΠ°, ΡΠΎΡ„Ρ‚ΡƒΠ΅Ρ€ΡŠΡ‚ трябва - Π² зависимост ΠΎΡ‚ настройкитС - ΠΈΠ»ΠΈ самостоятСлно Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π° Π½Π΅ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ, ΠΈΠ»ΠΈ Π΄Π° Π½ΠΈ увСдомява Π·Π° Π΄Ρ€ΠΈΡ„Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅.

GitOps ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π° OpenShift

On-Cluster Resource Reconciller

Π‘ΠΏΠΎΡ€Π΅Π΄ Ρ‚Π°Π·ΠΈ ΠΌΠΎΠ΄Π΅Π» Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈΠΌΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ отговаря Π·Π° сравняванСто Π½Π° Kubernetes рСсурси (YAML Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅) Π² Git рСпозитория с Ρ€Π΅Π°Π»Π½ΠΈΡ‚Π΅ рСсурси Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° Π½Π΅ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ Ρ€Π°Π·ΠΏΡ€Π°Ρ‰Π° увСдомлСния ΠΈ, възмоТно, ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΌΠ΅Ρ€ΠΊΠΈ Π·Π° отстраняванС Π½Π° Π½Π΅ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡΡ‚Π°. Π’ΠΎΠ·ΠΈ GitOps ΠΌΠΎΠ΄Π΅Π» сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Anthos Config Management ΠΈ Weaveworks Flux.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitOps Π·Π° OpenShift

External Resource Reconciler (Push)

Π’Π°Π·ΠΈ ΠΌΠΎΠ΄Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° прСдходния, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ, отговарящи Π·Π° синхронизацията Π½Π° рСсурситС Π² Π΄Π²ΠΎΠΉΠΊΠΈΡ‚Π΅ β€žGit Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ – Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€β€œ. Π Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π΅ Π² Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π½Π΅ Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ всСки управляван ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π΄Π° ΠΈΠΌΠ° свой собствСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€. Π”Π²ΠΎΠΉΠΊΠΈΡ‚Π΅ β€žGit – k8s ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€β€œ чСсто сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ CRD описания (custom resources definition), Π² ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС опишС ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ трябва Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° синхронизация. Π’ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π·ΠΈ ΠΌΠΎΠ΄Π΅Π» ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈΡ‚Π΅ сравняват Git рСпозитория, Π·Π°Π΄Π°Π΄Π΅Π½ Π² CRD, с Kubernetes рСсурситС Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡ‰ΠΎ са Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π² CRD, ΠΈ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠΌΠ°Ρ‚ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈ дСйствия Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° сравняванСто. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, Ρ‚ΠΎΠ·ΠΈ GitOps ΠΌΠΎΠ΄Π΅Π» сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ArgoCD.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitOps Π·Π° OpenShift

GitOps Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° OpenShift

АдминистриранС Π½Π° ΠΌΡƒΠ»Ρ‚ΠΈ-ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½Π° Kubernetes инфраструктура

Π‘ разпространСниСто Π½Π° Kubernetes ΠΈ растСТа Π½Π° популярността Π½Π° ΠΌΡƒΠ»Ρ‚ΠΈΠΎΠ±Π»Π°Ρ‡Π½ΠΈ стратСгии ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ изчислСния (edge computing) сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° ΠΈ срСдното количСство OpenShift ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π½Π° Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚.

НапримСр, ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΈ изчислСния, ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π½Π° Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Ρ‚ с дСсСтки ΠΈ Π΄ΠΎΡ€ΠΈ стотици. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Ρ‚ΠΎΠΉ Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π΅Π½ Π΄Π° управлява няколко нСзависими ΠΈΠ»ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ OpenShift Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΡ‚ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎ ΠΈ on-premise.

Π’ΡƒΠΊ сС Π½Π°Π»Π°Π³Π° Π΄Π° сС Ρ€Π΅ΡˆΠ°Ρ‚ мноТСство ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, срСд ΠΊΠΎΠΈΡ‚ΠΎ:

  • Π”Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°, Ρ‡Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅ са Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ (ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈ Ρ‚.Π½.)
  • Π”Π° сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Ρ‚ (ΠΈΠ»ΠΈ рСконструират) ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π΄ΠΎ извСстно ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅.
  • Π”Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ ΠΏΠΎ извСстно ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅.
  • Π”Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π° няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° OpenShift.
  • Π”Π° сС ΠΎΡ‚ΠΊΠ°Ρ‚Π²Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π° няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° OpenShift.
  • Π”Π° сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ

ΠŸΡ€Π΅Π· своя ΠΆΠΈΠ·Π½Π΅Π½ Ρ†ΠΈΠΊΡŠΠ» прилоТСнията чСсто ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚ ΠΏΡ€Π΅Π· Π²Π΅Ρ€ΠΈΠ³Π° ΠΎΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ (dev, stage ΠΈ Ρ‚.Π½.) ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° достигнат Π΄ΠΎ продукционния ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΏΠΎΡ€Π°Π΄ΠΈ изискванията Π·Π° наличност ΠΈ мащабируСмост, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ чСсто Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Ρ‚ прилоТСния Π½Π° няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° on-premise ΠΈΠ»ΠΈ Π² няколко Ρ€Π΅Π³ΠΈΠΎΠ½Π° Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ‚Π° ΠΎΠ±Π»Π°Ρ‡Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°.

Π’ΡƒΠΊ сС Π½Π°Π»Π°Π³Π° Π΄Π° сС Ρ€Π΅ΡˆΠ°Ρ‚ слСднитС Π·Π°Π΄Π°Ρ‡ΠΈ:

  • Π”Π° сС осигури прСмСстванС Π½Π° прилоТСния (Π±ΠΈΠ½Π°Ρ€Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚.Π½.) ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅ (dev, stage ΠΈ Ρ‚.Π½.).
  • Π”Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² прилоТСнията (Π±ΠΈΠ½Π°Ρ€Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚.Π½.) Π² няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° OpenShift.
  • Π”Π° сС ΠΎΡ‚ΠΊΠ°Ρ‚Π²Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² прилоТСнията Π΄ΠΎ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° ΠΏΡ€Π΅Π΄Ρ…ΠΎΠ΄Π½ΠΎ извСстно ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° OpenShift GitOps

1. ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΎΡ‚ Git-рСпозитория

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° OpenShift Π² Git-рСпозитория ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°, Π·Π° Π΄Π° създава Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ Π½Π° извСстно ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, записано Π² Git-рСпозитория.

2. Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ с Secret Manager

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π° ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° синхронизира secret-ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° OpenShift с подходящ софтуСр, ΠΊΠ°Ρ‚ΠΎ Vault, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ управлява с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° спСциално създадСни инструмСнти.

3. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄Ρ€ΠΈΡ„Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½, Π°ΠΊΠΎ OpenShift GitOps сами ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π° Π·Π° разминавания ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅Π°Π»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚Π΅Π·ΠΈ, Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π² рСпозитория, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ Π±ΡŠΡ€Π·ΠΎ Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π° Π½Π° Π΄Ρ€ΠΈΡ„Ρ‚Π°.

4. Π˜Π·Π²Π΅ΡΡ‚ΠΈΡ Π·Π° ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅

Π’Π΅ са ΠΏΠΎΠ»Π΅Π·Π½ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ иска Π±ΡŠΡ€Π·ΠΎ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° извСстия Π·Π° случаи Π½Π° ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅, Π·Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΈ ΠΌΠ΅Ρ€ΠΊΠΈ самостоятСлно.

5. Π ΡŠΡ‡Π½Π° синхронизация Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅

Позволява Π½Π° администратора Π΄Π° синхронизира ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° OpenShift с рСпозитория Git Π² случай Π½Π° ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅, Π·Π° Π΄Π° Π²ΡŠΡ€Π½Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎΡ‚ΠΎ извСстно ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅.

6. Автоматична синхронизация Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ ΡΡŠΡ‰ΠΎ Π΄Π° настрои ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° OpenShift Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° синхронизация с рСпозитория, ΠΊΠΎΠ³Π°Ρ‚ΠΎ бъдС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΎ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ конфигурацията Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π² Git.

7. Няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° – Π΅Π΄ΠΈΠ½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° няколко Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ OpenShift Π² Π΅Π΄ΠΈΠ½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git ΠΈ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

8. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (наслСдяванС)

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ иСрархия Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² рСпозитория (stage, prod, app portfolio ΠΈ Ρ‚.Π½. с наслСдяванС). Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° опрСдСля ΠΊΠ°ΠΊ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ – към Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

НапримСр, Π°ΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π·Π°Π΄Π°Π΄Π΅ Π² Git рСпозитория иСрархия β€žΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ (prod) β†’ ΠšΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π½Π° систСма X β†’ ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π½Π° систСма Xβ€œ, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ½Π½ΠΈΡ‚Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π½Π° систСма X Ρ‰Π΅ сС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ°Ρ‚ ΡΡŠΠ²ΠΊΡƒΠΏΠ½ΠΎΡΡ‚Ρ‚Π° ΠΎΡ‚ слСднитС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΎΠ±Ρ‰ΠΈ Π·Π° всички ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ.
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π·Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° систСма X.
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π·Π° продукционния ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π½Π° систСма X.

9. Π¨Π°Π±Π»ΠΎΠ½ΠΈ ΠΈ ΠΏΡ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ Π½Π°Π±ΠΎΡ€Π° Π½Π° наслСдСни ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ стойности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π΄Π° настрои ΠΏΠΎ-Ρ‚ΠΎΡ‡Π½ΠΎ конфигурацията Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ, Π² ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚.

10. Π˜Π·Π±ΠΈΡ€Π°Ρ‚Π΅Π»Π½ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° прилоТСния

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ условия Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ характСристики.

11. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° шаблони

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Ρ‰Π΅ оцСнят Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚ ΠΊΠ°ΠΊ Ρ‰Π΅ сС опрСдСлят рСсурситС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (Helm Chart, чист Kubernetes yaml ΠΈ Ρ‚.Π½.), Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π½Π°ΠΉ-подходящия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π·Π° всяко ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈ GitOps Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° OpenShift

ArgoCD

ArgoCD Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΌΠΎΠ΄Π΅Π»Π° External Resource Reconcile ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ UI Π·Π° оркСстрация Π½Π° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ кластСритС ΠΈ Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ‚Π° ΠΏΠΎ схСма "Π΅Π΄Π½ΠΎ към ΠΌΠ½ΠΎΠ³ΠΎ". Π‘Ρ€Π΅Π΄ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π·ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π΅ Π½Π΅Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° сС управляват прилоТСния ΠΏΡ€ΠΈ Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ ArgoCD.

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»Π΅Π½ сайт

Flux

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 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 Server

# 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 ΠΆΠ΅Π»Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚Π°Π·ΠΈ Π½ΠΎΠ²Π° страхотна ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° чСсто създава ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠ°Π²Π° ситуация с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ, deployment'ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° OpenShift. Но Π²ΠΈΠ½Π°Π³ΠΈ Π»ΠΈ ΡˆΠ°Π½ΡΡŠΡ‚ Π΅ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½ΠΎ изпуснат?

ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΉΠΊΠΈ сСрията статии Π·Π° GitOps, днСс Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° трансформирамС ΡΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ Ρ€ΡŠΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ рСсурси Π² процСс, Π² ΠΊΠΎΠΉΡ‚ΠΎ всичко сС управлява ΠΎΡ‚ инструмСнтария GitOps. Π—Π° Ρ†Π΅Π»Ρ‚Π° ΠΏΡŠΡ€Π²ΠΎ Ρ‰Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ httpd Ρ€ΡŠΡ‡Π½ΠΎ. На Π΅ΠΊΡ€Π°Π½Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ създавамС пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, deployment ΠΈ услуга, Π° слСд Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠΌ expose Π·Π° Ρ‚Π°Π·ΠΈ услуга, Π·Π° Π΄Π° създадСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚.

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.
  • Π’ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ почистванС (pruning) ΠΈ автосинхронизация Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅.

ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ Π±Π΅ спомСнато Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° статията, Π² GitOps ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ СдинствСн ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° информация Π·Π° всички ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π² кластСра(ΠΈΡ‚Π΅) Kubernetes – рСпозиторият Git. По-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΌΠ΅, Ρ‡Π΅ във Π²Π°ΡˆΠ°Ρ‚Π° организация Π²Π΅Ρ‡Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π’ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ ΠΈΠ»ΠΈ частСн, Π½ΠΎ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ трябва Π΄Π° бъдС Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π·Π° кластСритС Kubernetes. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡΡŠΡ‰ΠΈΡΡ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΊΠΎΠ΄Π° Π½Π° прилоТСнията, ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, създадСн спСциално Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½ΠΈΡ. Π’ рСпозитория Π΅ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»Π½ΠΎ Π΄Π° ΠΈΠΌΠ° строги Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°ΠΌ Ρ‰Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ secret, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ чувствитСлни ΠΏΠΎ бСзопасността Π½Π΅Ρ‰Π°.

Π’ нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‰Π΅ създадСм Π½ΠΎΠ² ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² GitHub. МоТСм Π΄Π° Π³ΠΎ Π½Π°Ρ€Π΅Ρ‡Π΅ΠΌ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌ, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠΌΠ΅Ρ‚ΠΎ blogpost.

Ако YAML Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π΅ са Π±ΠΈΠ»ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ»ΠΈ Π² Git, Ρ‰Π΅ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΡ†ΠΈΡ‚Π΅ oc ΠΈΠ»ΠΈ kubectl. На Π΅ΠΊΡ€Π°Π½Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ искамС YAML Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, deployment, сСрвис ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚. ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°Ρ…ΠΌΠ΅ Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ създадСния Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ влязохмС Π² Π½Π΅Π³ΠΎ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° 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 CD, Ρ‚ΠΎΠ·ΠΈ инструмСнт Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° провСрява Π²Π΅Ρ‡Π΅ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ‚Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π·Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с опрСдСлСнията Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΠΎ. Π’ нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π°Ρ‚Π° синхронизация ΠΈ почистванСто са Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ засСга няма Π΄Π° сС промСнят. ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Π² интСрфСйса Π½Π° Argo CD Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‰Π΅ ΠΈΠΌΠ° статус β€žOut of Syncβ€œ (НС синхронизирано), Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ няма label-ΠΌΠ΅Ρ‚ΠΊΠ°, която 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:        
Sync Status:        Synced to master (60e1678)
Health Status:      Healthy
...   

А сСга Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π°Ρ‚Π° синхронизация ΠΈ почистванСто, Π·Π° Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅, Ρ‡Π΅ Π½Π΅Ρ‰ΠΎ няма Π΄Π° бъдС създадСно Ρ€ΡŠΡ‡Π½ΠΎ ΠΈ Ρ‡Π΅ всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΎΠ±Π΅ΠΊΡ‚ бъдС създадСн ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π΅Π½ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΎΡ‚ΠΎ, Ρ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅.

argocd app set simple-app --sync-policy automated --auto-prune

И Ρ‚Π°ΠΊΠ°, ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ…ΠΌΠ΅ към ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ с GitOps, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π½Π΅ използвашС GitOps.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster