GitOps ずは䜕ですか?

ノヌト。 翻蚳。: 最近の出版埌 材料 GitOps のプルおよびプッシュ メ゜ッドに぀いおは、このモデル党般に関心が寄せられおいたしたが、このトピックに関するロシア語の出版物はほずんどありたせんでした (ハブレに関する出版物はたったくありたせんでした)。 したがっお、ほが XNUMX 幎前ではありたすが、別の蚘事の翻蚳を皆さんにご提䟛できるこずをうれしく思いたす。 — Weaveworks 瀟の代衚であり、その代衚が「GitOps」ずいう甚語を生み出したした。 本文では、アプロヌチの本質ず既存のアプロヌチずの䞻な違いに぀いお説明したす。

XNUMX幎前に私たちは出版したした GitOps の抂芁。 圓時、私たちは Weaveworks チヌムが完党に Kubernetes に基づいた SaaS を立ち䞊げ、クラりド ネむティブ環境での展開、管理、監芖のための䞀連の芏範的なベスト プラクティスを開発した方法を共有したした。

その蚘事は人気があるこずが刀明した。 他の人たちは GitOps に぀いお話し始め、GitOps のための新しいツヌルを公開し始めたした。 git push, の開発, 秘密, 関数, 継続的むンテグレヌション 等々。 匊瀟ホヌムペヌゞに掲茉されたした 倚数 出版物ず GitOps のナヌスケヌス。 しかし、ただ疑問を持っおいる人もいたす。 このモデルは埓来のモデルずどのように異なりたすか? コヌドずしおのむンフラストラクチャ 継続的デリバリヌ (連続配送 Kubernetes を䜿甚する必芁がありたすか?

私たちはすぐに、次のような新しい説明が必芁であるこずに気づきたした。

  1. 倚数の䟋ずストヌリヌ。
  2. GitOps の具䜓的な定矩。
  3. 埓来の継続的デリバリヌずの比范。

この蚘事では、これらすべおのトピックを取り䞊げおみたした。 GitOps の最新の玹介ず、開発者および CI/CD の芳点を提䟛したす。 このモデルは䞀般化するこずができたすが、䞻に Kubernetes に焊点を圓おたす。

GitOps に぀いお

アリスを想像しおみおください。 圌女は、忙しすぎお契玄の詳现を自分で理解するこずができない人々に、健康保険、自動車保険、䜏宅保険、旅行保険を提䟛する Family Insurance を経営しおいたす。 圌女のビゞネスは、アリスがデヌタ サむ゚ンティストずしお銀行で働いおいたずきにサむド プロゞェクトずしお始たりたした。 ある日、圌女は高床なコンピュヌタ アルゎリズムを䜿甚すれば、より効果的にデヌタを分析し、保険パッケヌゞを策定できるこずに気づきたした。 投資家がこのプロゞェクトに資金を提䟛し、珟圚圌女の䌚瀟は幎間 20 䞇ドル以䞊の収益を䞊げ、急速に成長しおいたす。 珟圚、さたざたな圹職で 180 名の埓業員が働いおいたす。 これには、Web サむト、デヌタベヌスの開発、保守、顧客ベヌスの分析を行うテクノロゞヌ チヌムが含たれたす。 60 人からなるチヌムは、同瀟のテクニカル ディレクタヌであるボブが率いおいたす。

ボブのチヌムは実皌働システムをクラりドに展開したす。 コア アプリケヌションは GKE 䞊で実行され、Google Cloud 䞊の Kubernetes を利甚したす。 さらに、圌らは仕事でさたざたなデヌタや分析ツヌルを䜿甚したす。

Family Insurance は、コンテナヌの䜿甚を開始したわけではありたせんでしたが、Docker の熱意に巻き蟌たれたした。 同瀟はすぐに、GKE を䜿甚するず、新しい機胜をテストするためのクラスタのデプロむが簡単になるこずに気づきたした。 CI ず Quay 甚の Jenkins はコンテナ レゞストリを敎理するために远加され、新しいコンテナず構成を GKE にプッシュするスクリプトが Jenkins 甚に䜜成されたした。

しばらく時間が経過したした。 アリスずボブは、自分たちが遞択したアプロヌチのパフォヌマンスず、それがビゞネスに及がす圱響に倱望したした。 コンテナの導入によっお、チヌムが期埅しおいたほど生産性は向䞊したせんでした。 堎合によっおはデプロむメントが䞭断されるこずもありたしたが、コヌドの倉曎が原因かどうかは䞍明でした。 たた、構成の倉曎を远跡するのが難しいこずも刀明したした。 倚くの堎合、新しいクラスタヌを䜜成しおそこにアプリケヌションを移動する必芁がありたした。これは、システムの混乱を解消する最も簡単な方法だったからです。 アリスは、アプリケヌションが開発されるに぀れお状況が悪化するのではないかず心配しおいたした (さらに、機械孊習に基づいた新しいプロゞェクトが準備されおいたした)。 ボブは䜜業のほずんどを自動化しおいたしたが、パむプラむンが䟝然ずしお䞍安定で、適切に拡匵できず、定期的に手動介入が必芁である理由を理解しおいたせんでした。

次に、GitOps に぀いお孊びたした。 この決定は、たさに圌らが自信を持っお前進するために必芁なものであるこずが刀明したした。

アリスずボブは、Git、DevOps、およびコヌド ワヌクフロヌずしおのむンフラストラクチャに぀いお䜕幎も聞いおきたした。 GitOps のナニヌクな点は、Kubernetes のコンテキストでこれらのアむデアを実装するための、決定的か぀芏範的な䞀連のベスト プラクティスを提䟛するこずです。 このテヌマ 繰り返し䞊がった、を含む りィヌブワヌクスのブログ.

Family Insurance は GitOps を導入するこずを決定したした。 同瀟は珟圚、Kubernetes ず互換性のある自動運甚モデルを構築し、 スピヌド ずずも​​に 安定性なぜなら圌ら

  • 誰も気が狂うこずなく、チヌムの生産性が XNUMX 倍になったこずを発芋したした。
  • スクリプトの提䟛を停止したした。 代わりに、新機胜に焊点を圓お、゚ンゞニアリング手法を改善できるようになりたした。たずえば、カナリア ロヌルアりトの導入やテストの改善などです。
  • 導入プロセスが改善され、めったに倱敗しないようになりたした。
  • 郚分的な障害が発生した埌、手動介入なしで展開を埩元する機䌚が埗られたした。
  • 䞭叀で賌入したП配送システムに察するさらなる信頌。 アリスずボブは、チヌムを䞊行しお䜜業するマむクロサヌビス チヌムに分割できるこずを発芋したした。
  • 各グルヌプの努力を通じお毎日プロゞェクトに 30  50 の倉曎を加え、新しい技術を詊すこずができたす。
  • 新しい開発者をプロゞェクトに匕き付けるのは簡単で、開発者は数時間以内にプル リク゚ストを䜿甚しお本番環境に曎新をロヌルアりトする機䌚を埗るこずができたす。
  • SOC2の枠組み内で監査に簡単に合栌 (サヌビスプロバむダヌが安党なデヌタ管理の芁件に準拠するため。たずえば、続きを読む) ここで — 玄翻蚳.

䜕が起こったのか

GitOps には次の XNUMX ぀の芁玠がありたす。

  1. Kubernetes ずクラりド ネむティブの運甚モデル。 コンテナヌ化されたクラスタヌずアプリケヌションをデプロむ、管理、監芖するための䞀連のベスト プラクティスを提䟛したす。 ゚レガントなフォルムの定矩 XNUMX ぀のスラむド から ルむス・ファセむラ:
  2. 開発者䞭心のアプリケヌション管理環境を構築するためのパス。 Git ワヌクフロヌを運甚ず開発の䞡方に適甚したす。 これは Git プッシュだけに関するものではなく、CI/CD および UI/UX ツヌルのセット党䜓の敎理に関するものであるこずに泚意しおください。

Git に぀いお䞀蚀

バヌゞョン管理システムず Git ベヌスのワヌクフロヌに慣れおいない堎合は、それらに぀いお孊ぶこずを匷くお勧めしたす。 ブランチずプルリク゚ストの操䜜は、最初は黒魔術のように思えるかもしれたせんが、そのメリットは努力する䟡倀がありたす。 ここ 良い蚘事 はじめに。

Kubernetes の仕組み

私たちの物語では、アリスずボブは、しばらく Kubernetes を䜿甚した埌、GitOps に目を向けたした。 実際、GitOps は Kubernetes ず密接に関係しおおり、Kubernetes に基づくむンフラストラクチャずアプリケヌションの運甚モデルです。

Kubernetes はナヌザヌに䜕を提䟛したすか?

以䞋に䞻な機胜をいく぀か瀺したす。

  1. Kubernetes モデルでは、すべおを宣蚀圢匏で蚘述できたす。
  2. Kubernetes API サヌバヌはこの宣蚀を入力ずしお受け取り、クラスタヌを宣蚀に蚘述されおいる状態にしようず継続的に詊みたす。
  3. 宣蚀は、さたざたなワヌクロヌド (「アプリケヌション」) を蚘述および管理するのに十分です。
  4. その結果、次のような理由でアプリケヌションずクラスタヌに倉曎が発生したす。
    • コンテナむメヌゞの倉曎。
    • 宣蚀的な仕様の倉曎。
    • 環境内の゚ラヌ - コンテナのクラッシュなど。

Kubernetes の優れたコンバヌゞェンス機胜

管理者が構成を倉曎するず、Kubernetes オヌケストレヌタヌは、クラスタヌの状態が以䞋である限り、その倉曎をクラスタヌに適甚したす。 新しい構成には近づきたせん。 このモデルはあらゆる Kubernetes リ゜ヌスで機胜し、カスタム リ゜ヌス定矩 (CRD) を䜿甚しお拡匵できたす。 したがっお、Kubernetes デプロむメントには次のような玠晎らしい特性がありたす。

  • オヌトメヌション: Kubernetes アップデヌトは、倉曎を適切か぀タむムリヌに適甚するプロセスを自動化するメカニズムを提䟛したす。
  • 収束: Kubernetes は成功するたで曎新を詊行し続けたす。
  • べき等性: 収束を繰り返し適甚するず、同じ結果が埗られたす。
  • 決定論: リ゜ヌスが十分な堎合、曎新されたクラスタヌの状態は望たしい状態のみに䟝存したす。

GitOps の仕組み

Kubernetes に぀いおは、GitOps がどのように機胜するかを説明できるほど孊習したした。

Family Insurance のマむクロサヌビス チヌムに戻りたしょう。 圌らは普段䜕をしなければならないのでしょうか 以䞋のリストを芋おください (その䞭に奇劙たたは芋慣れない項目がある堎合は、批刀を控えお、お付き合いください)。 これらは、Jenkins ベヌスのワヌクフロヌの単なる䟋です。 他のツヌルを䜿甚する堎合は、他にも倚くのプロセスがありたす。

重芁なこずは、各曎新が構成ファむルず Git リポゞトリぞの倉曎で終了するこずがわかりたす。 Git に察するこれらの倉曎により、「GitOps オペレヌタヌ」がクラスタヌを曎新したす。

1.䜜業プロセス: "Jenkins ビルド - マスタヌ ブランチ'。
タスクリスト

  • Jenkins はタグ付けされた画像を Quay にプッシュしたす。
  • Jenkins は、構成チャヌトず Helm チャヌトをマスタヌ ストレヌゞ バケットにプッシュしたす。
  • クラりド機胜は、構成ずチャヌトをマスタヌ ストレヌゞ バケットからマスタヌ Git リポゞトリにコピヌしたす。
  • GitOps オペレヌタヌはクラスタヌを曎新したす。

2. Jenkins ビルド - リリヌスたたはホットフィックス ブランチ:

  • Jenkins はタグなしの画像を Quay にプッシュしたす。
  • Jenkins は、構成チャヌトず Helm チャヌトをステヌゞング ストレヌゞ バケットにプッシュしたす。
  • クラりド機胜は、構成ずチャヌトをステヌゞング ストレヌゞ バケットからステヌゞング Git リポゞトリにコピヌしたす。
  • GitOps オペレヌタヌはクラスタヌを曎新したす。

3. Jenkins ビルド - 開発たたは機胜ブランチ:

  • Jenkins はタグなしの画像を Quay にプッシュしたす。
  • Jenkins は、構成チャヌトず Helm チャヌトを開発ストレヌゞ バケットにプッシュしたす。
  • クラりド機胜は、構成ずチャヌトを開発ストレヌゞ バケットから開発 Git リポゞトリにコピヌしたす。
  • GitOps オペレヌタヌはクラスタヌを曎新したす。

4. 新しいクラむアントの远加:

  • マネヌゞャヌたたは管理者 (LCM/ops) は Gradle を呌び出しお、最初にネットワヌク ロヌド バランサヌ (NLB) を展開しお構成したす。
  • LCM/ops は、新しい構成をコミットしお、曎新甚のデプロむメントを準備したす。
  • GitOps オペレヌタヌはクラスタヌを曎新したす。

GitOps の簡単な説明

  1. 各環境の宣蚀仕様を䜿甚しお、システム党䜓の望たしい状態を蚘述したす (このストヌリヌでは、Bob のチヌムは Git でシステム構成党䜓を定矩したす)。
    • Git リポゞトリは、システム党䜓の望たしい状態に関する唯䞀の信頌できる情報源です。
    • 望たしい状態ぞのすべおの倉曎は、Git のコミットを通じお行われたす。
    • 必芁なクラスタヌ パラメヌタヌはすべお、クラスタヌ自䜓でも監芖できたす。 このようにしお、それらが䞀臎する (収束する) かどうかを刀断できたす。 収束する) たたは異なる (発散、 発散する) 望たしい状態ず芳察された状態。
  2. 望たしい状態ず芳察された状態が異なる堎合は、次のようになりたす。
    • 遅かれ早かれタヌゲットず芳枬された状態を自動的に同期させる収束メカニズムがありたす。 クラスタヌ内では、Kubernetes がこれを行いたす。
    • プロセスはすぐに開始され、「倉曎がコミットされたした」ずいうアラヌトが衚瀺されたす。
    • 蚭定可胜な䞀定の時間が経過するず、状態が異なる堎合に「diff」アラヌトを送信できたす。
  3. このようにしお、Git 内のすべおのコミットにより、クラスタヌに察する怜蚌可胜か぀冪等の曎新が行われたす。
    • ロヌルバックずは、以前に望たしい状態に収束するこずです。
  4. 収束は最終的です。 その発生は次のように瀺されたす。
    • 䞀定期間、差分アラヌトがありたせん。
    • 「収束」アラヌト (Webhook、Git ラむトバック むベントなど)。

ダむバヌゞェンスずは䜕ですか?

もう䞀床繰り返しおみたしょう: 必芁なすべおのクラスタヌ プロパティがクラスタヌ自䜓で監芖可胜である必芁がありたす.

盞違の䟋をいく぀か瀺したす。

  • Git のブランチのマヌゞによる構成ファむルの倉曎。
  • GUI クラむアントによっお行われた Git コミットによる構成ファむルの倉曎。
  • Git での PR による望たしい状態ぞの耇数の倉曎、その埌のコンテナヌ むメヌゞのビルドず構成の倉曎。
  • ゚ラヌ、「䞍正な動䜜」を匕き起こすリ゜ヌスの競合、たたは元の状態からの単玔なランダムな逞脱によるクラスタヌの状態の倉化。

収束のメカニズムは䜕ですか?

いく぀かの䟋

  • コンテナヌずクラスタヌの堎合、収束メカニズムは Kubernetes によっお提䟛されたす。
  • 同じメカニズムを䜿甚しお、Kubernetes ベヌスのアプリケヌションず蚭蚈 (Istio や Kubeflow など) を管理できたす。
  • Kubernetes、むメヌゞ リポゞトリ、Git 間の運甚䞊の盞互䜜甚を管理するメカニズム。 GitOps オペレヌタヌ Weave Fluxの䞀郚です りィヌブクラりド.
  • ベヌス マシンの堎合、収束メカニズムは宣蚀的か぀自埋的である必芁がありたす。 私たち自身の経隓から蚀えたすが、 テラフォヌム この定矩に最も近いものですが、それでも人間による制埡が必芁です。 この意味で、GitOps はコヌドずしおのむンフラストラクチャの䌝統を拡匵したす。

GitOps は、Git ず Kubernetes の優れたコンバヌゞェンス ゚ンゞンを組み合わせお、掻甚モデルを提䟛したす。

GitOps を䜿甚するず、次のこずが可胜になりたす。 蚘述および芳察できるシステムのみを自動化および制埡できたす。.

GitOps は、クラりド ネむティブ スタック党䜓 (Terraform など) を察象ずしおいたす。

GitOps は単なる Kubernetes ではありたせん。 システム党䜓を宣蚀的に駆動し、コンバヌゞェンスを䜿甚したいず考えおいたす。 システム党䜓ずは、Kubernetes で動䜜する環境のコレクション (たずえば、「開発クラスタヌ 1」、「実皌働」など) を意味したす。各環境には、マシン、クラスタヌ、アプリケヌションに加え、デヌタ、モニタリングを提䟛する倖郚サヌビスのむンタヌフェむスが含たれたす。など

この堎合、ブヌトストラップ問題にずっお Terraform がいかに重芁であるかに泚目しおください。 Kubernetes はどこかにデプロむする必芁がありたすが、Terraform を䜿甚するず、同じ GitOps ワヌクフロヌを適甚しお、Kubernetes ずアプリケヌションの基盀ずなる制埡局を䜜成できるこずになりたす。 これは圹立぀ベスト プラクティスです。

GitOps の抂念を Kubernetes 䞊のレむダヌに適甚するこずに重点が眮かれおいたす。 珟時点では、Istio、Helm、Ksonnet、OpenFaaS、Kubeflow 甚の GitOps タむプの゜リュヌションのほか、たずえば Pulumi 甚の゜リュヌションがあり、クラりド ネむティブ甚のアプリケヌションを開発するためのレむダヌを䜜成したす。

Kubernetes CI/CD: GitOps ず他のアプロヌチの比范

前述したように、GitOps には次の XNUMX ぀の芁玠がありたす。

  1. 䞊で説明した Kubernetes ずクラりド ネむティブのオペレヌティング モデル。
  2. 開発者䞭心のアプリケヌション管理環境ぞのパス。

倚くの人にずっお、GitOps は䞻に Git プッシュに基づくワヌクフロヌです。 私たちも圌のこずが奜きです。 しかし、それだけではありたせん。次に、CI/CD パむプラむンを芋おみたしょう。

GitOps により Kubernetes の継続的デプロむ (CD) が可胜になりたす

GitOps は、個別の「デプロむメント管理システム」の必芁性を排陀する継続的デプロむメント メカニズムを提䟛したす。 Kubernetes がすべおの䜜業を行いたす。

  • アプリケヌションを曎新するには、Git での曎新が必芁です。 これは、望たしい状態ぞのトランザクション曎新です。 その埌、曎新された説明に基づいお、Kubernetes 自䜓によっおクラスタヌ内で「デプロむ」が行われたす。
  • Kubernetes の動䜜の性質䞊、これらの曎新は集䞭的です。 これにより、すべおの曎新がアトミックである継続的な展開のメカニズムが提䟛されたす。
  • 泚意 りィヌブクラりド は、Git ず Kubernetes を統合し、クラスタヌの望たしい状態ず珟圚の状態を調敎しお CD を実行できるようにする GitOps オペレヌタヌを提䟛したす。

kubectl ずスクリプトなし

クラスタヌの曎新に Kubectl を䜿甚するこずは避け、特にスクリプトを䜿甚しお kubectl コマンドをグルヌプ化するこずは避けおください。 代わりに、GitOps パむプラむンを䜿甚するず、ナヌザヌは Git 経由で Kubernetes クラスタヌを曎新できたす。

利点は次のずおりです。

  1. 右。 䞀連の曎新を適甚、統合し、最終的に怜蚌するこずで、アトミックなデプロむの目暙に近づくこずができたす。 察照的に、スクリプトを䜿甚しおも、収束の保蚌はありたせん (これに぀いおは以䞋で詳しく説明したす)。
  2. セキュリティ. 匕甚 Kelsey Hightower: 「Kubernetes クラスタヌぞのアクセスは、自動化ツヌルず、デバッグたたは保守を担圓する管理者に制限しおください。」 こちらも参照 私の出版物 安党性ず技術仕様ぞの準拠に぀いお、たた Homebrew のハッキングに関する蚘事 䞍甚意に曞かれた Jenkins スクリプトから資栌情報を盗むこずによっお。
  3. ナヌザヌ䜓隓。 Kubectl は、非垞に耇雑な Kubernetes オブゞェクト モデルの仕組みを公開したす。 理想的には、ナヌザヌはより高い抜象レベルでシステムず察話する必芁がありたす。 ここで私は再びケルシヌに蚀及し、芖聎するこずをお勧めしたす そのような履歎曞.

CIずCDの違い

GitOps は既存の CI/CD モデルを改善したす。

最新の CI サヌバヌはオヌケストレヌション ツヌルです。 特に、これは CI パむプラむンを調敎するためのツヌルです。 これらには、ビルド、テスト、トランクぞのマヌゞなどが含たれたす。CI サヌバヌは、耇雑な耇数ステップのパむプラむンの管理を自動化したす。 よくある誘惑は、Kubernetes 曎新のセットをスクリプト化し、それをパむプラむンの䞀郚ずしお実行しお倉曎をクラスタヌにプッシュするこずです。 実際、これは倚くの専門家が行っおいるこずです。 ただし、これは最適ではありたせん。その理由は次のずおりです。

曎新をトランクにプッシュするには CI を䜿甚する必芁があり、Kubernetes クラスタヌはそれらの曎新に基づいお自䜓を倉曎しお、CD を内郚で管理する必芁がありたす。 私たちはそれをそう呌んでいたす CD甚プルモデルCI プッシュ モデルずは異なりたす。 CDは䞀郚です ランタむムオヌケストレヌション.

CI サヌバヌが Kubernetes の盎接曎新を介しお CD を実行すべきではない理由

Kubernetes ぞの盎接曎新を䞀連の CI ゞョブずしお調敎するために CI サヌバヌを䜿甚しないでください。 これが私たちが話しおいるアンチパタヌンです すでに蚀った あなたのブログで。

アリスずボブの話に戻りたしょう。

圌らはどのような問題に盎面したしたか? ボブの CI サヌバヌは倉曎をクラスタヌに適甚したすが、そのプロセス䞭にクラッシュした堎合、ボブはクラスタヌがどのような状態にある (たたはあるべきである) のか、たたそれを修正する方法がわかりたせん。 成功した堎合も同様です。

Bob のチヌムが新しいむメヌゞを構築し、そのむメヌゞをデプロむするためにデプロむメントにパッチを適甚したず仮定したす (すべお CI パむプラむンから)。

むメヌゞが正垞にビルドされおもパむプラむンが倱敗した堎合、チヌムは次のこずを解決する必芁がありたす。

  • アップデヌトは展開されたしたか?
  • 新しいビルドを起動するのでしょうか? これにより、同じ䞍倉むメヌゞの XNUMX ぀のビルドが存圚する可胜性など、䞍必芁な副䜜甚が発生する可胜性がありたすか?
  • ビルドを実行する前に次のアップデヌトを埅ったほうがよいでしょうか?
  • 正確に䜕が間違っおいたのでしょうか? どのステップを繰り返す必芁がありたすか (たた、どのステップを繰り返しおも安党ですか)?

Git ベヌスのワヌクフロヌを確立しおも、Bob のチヌムがこれらの問題に遭遇しないずいう保蚌はありたせん。 コミットプッシュ、タグ、その他のパラメヌタで間違いを犯す可胜性は䟝然ずしおありたす。 ただし、このアプロヌチは䟝然ずしお、明瀺的な党か無かのアプロヌチにはるかに近いものです。

芁玄するず、CI サヌバヌが CD を凊理すべきではない理由は次のずおりです。

  • 曎新スクリプトは垞に決定的であるずは限りたせん。 間違いを犯しやすいのです。
  • CI サヌバヌは宣蚀型クラスタヌ モデルに収束したせん。
  • 冪等性を保蚌するのは困難です。 ナヌザヌはシステムの詳现なセマンティクスを理解する必芁がありたす。
  • 郚分的な障害から回埩するこずはより困難です。

Helm に関する泚意: Helm を䜿甚する堎合は、Helm を次のような GitOps オペレヌタヌず組み合わせるこずをお勧めしたす。 フラックスヘルム。 これは確実に収束するのに圹立ちたす。 Helm 自䜓は決定論的でも原子的でもありたせん。

Kubernetes の継続的デリバリヌを実装する最良の方法ずしおの GitOps

アリスずボブのチヌムは GitOps を実装し、゜フトりェア補品の操䜜がはるかに簡単になり、高いパフォヌマンスず安定性を維持できるこずに気づきたした。 圌らの新しいアプロヌチがどのようなものかを瀺す図でこの蚘事を終えたしょう。 ここでは䞻にアプリケヌションずサヌビスに぀いお話したすが、GitOps を䜿甚しおプラットフォヌム党䜓を管理できるこずに泚意しおください。

Kubernetesのオペレヌティングモデル

次の図を芋おください。 これは、Git ずコンテナヌ むメヌゞ リポゞトリを、次の XNUMX ぀の調敎されたラむフサむクルの共有リ゜ヌスずしお提䟛したす。

  • Git に察しおファむルを読み曞きし、コンテナヌ むメヌゞのリポゞトリを曎新できる継続的統合パむプラむン。
  • デプロむメントず管理および可芳枬性を組み合わせたランタむム GitOps パむプラむン。 Git に察しおファむルの読み取りず曞き蟌みを行い、コンテナヌ むメヌゞをダりンロヌドできたす。

䞻な発芋は䜕ですか?

  1. 関心事の分離泚䞡方のパむプラむンは、Git たたはむメヌゞ リポゞトリを曎新するこずによっおのみ通信できるこずに泚意しおください。 蚀い換えれば、CI ずランタむム環境の間にはファむアりォヌルがありたす。 私たちはこれを「䞍倉ファむアりォヌル」ず呌んでいたす。 (䞍倉ファむアりォヌル)、すべおのリポゞトリ曎新により新しいバヌゞョンが䜜成されるためです。 このトピックの詳现に぀いおは、スラむド 72  87 を参照しおください。 このプレれンテヌション.
  2. 任意の CI および Git サヌバヌを䜿甚できたす: GitOps はあらゆるコンポヌネントで動䜜したす。 お気に入りの CI および Git サヌバヌ、むメヌゞ リポゞトリ、テスト スむヌトを匕き続き䜿甚できたす。 垂堎にある他のほずんどすべおの継続的デリバリヌ ツヌルには、独自の CI/Git サヌバヌたたはむメヌゞ リポゞトリが必芁です。 これは、クラりド ネむティブの開発における制限芁因になる可胜性がありたす。 GitOps を䜿甚するず、䜿い慣れたツヌルを䜿甚できたす。
  3. 統合ツヌルずしおのむベント: Git 内のデヌタが曎新されるずすぐに、Weave Flux (たたは Weave Cloud オペレヌタヌ) がランタむムに通知したす。 Kubernetes が倉曎セットを受け入れるたびに、Git が曎新されたす。 これにより、以䞋に瀺すように、GitOps のワヌクフロヌを敎理するためのシンプルな統合モデルが提䟛されたす。

たずめ

GitOps は、最新の CI/CD ツヌルに必芁な匷力な曎新保蚌を提䟛したす。

  • オヌトメヌション;
  • 収束;
  • べき等性。
  • 決定䞻矩。

これは、クラりド ネむティブ開発者に運甚モデルを提䟛するため、重芁です。

  • システムを管理および監芖するための埓来のツヌルは、ランブック内で運甚する運甚チヌムに関連付けられおいたす。 (䞀連の日垞的な手順ず操䜜 - おおよその翻蚳)、特定の展開に関連付けられおいたす。
  • クラりド ネむティブ管理では、開発チヌムが迅速に察応できるように、可芳枬性ツヌルはデプロむメントの結果を枬定する最良の方法です。

さたざたなクラりドに分散した倚数のクラスタヌず、独自のチヌムず展開蚈画を持぀倚数のサヌビスを想像しおください。 GitOps は、この豊富なすべおを管理するためのスケヌル䞍倉モデルを提䟛したす。

翻蚳者からの远䌞

私たちのブログもお読みください:

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

これら XNUMX ぀の翻蚳が Habré に掲茉される前に、GitOps に぀いおご存知でしたか?

  • はい、すべお知っおいたした

  • 衚面的にだけ

  • ノヌ

35 人のナヌザヌが投祚したした。 10名のナヌザヌが棄暩した。

出所 habr.com

コメントを远加したす