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

ДнСс Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° GitOps, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ Ρ‚Π΅Π·ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ са ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° OpenShift. Налично Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΏΠΎ Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ° ΠΏΠΎ ссылкС.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² 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.

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

Π‘ΡŠΠ³Π»Π°ΡΡƒΠ²Π°Ρ‚Π΅Π» Π½Π° външни рСсурси (Push)

Π’ΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° синхронизиранСто Π½Π° рСсурситС Π² Π΄Π²ΠΎΠΉΠΊΠΈΡ‚Π΅ β€žGit repository - Kubernetes clusterβ€œ. Π Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Ρ‚ΡƒΠΊ Π΅, Ρ‡Π΅ всСки управляван ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π½Π΅ Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° ΠΈΠΌΠ° свой ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€. Git - k8s ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈΡ‚Π΅ Π΄Π²ΠΎΠΉΠΊΠΈ чСсто сС опрСдСлят ΠΊΠ°Ρ‚ΠΎ CRD (пСрсонализирани Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π½Π° рСсурси), ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΎΠΏΠΈΡˆΠ°Ρ‚ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ трябва Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° синхронизация. Π’ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈΡ‚Π΅ сравняват Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ, посочСно Π² CRD, с рСсурситС Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡ‰ΠΎ са посочСни Π² CRD, ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ подходящи дСйствия въз основа Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ сравнСниСто. По-спСциално, Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» GitOps сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ArgoCD.

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

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

Π’ нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‰Π΅ създадСм Π½ΠΎΠ²ΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π² 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 (ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° - Π²ΠΈΠΆΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ пост). Π—Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ към 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 Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‰Π΅ ΠΈΠΌΠ° статус β€žΠ˜Π·Π²ΡŠΠ½ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡβ€œ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ няма Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€