2022年12月7日

GitOps

Argo CDとは?

Argo CDは、オープンソースのGitOps継続的デリバリーツールです。 クラスターと、Gitリポジトリーに格納されている宣言的に定義されたインフラを監視し、2つの違いを解決して、アプリケーションのデプロイを効果的に自動化します。

6391224f47a38f6beefa8cdc_Harness-ArgoCD-blog-banner-p-1080.png最も単純なArgo CDは、オープンソースのGitOps継続的デリバリーツールです。 クラスターと、Gitリポジトリーに格納されている宣言的に定義されたインフラを監視し、2つの違いを解決して、アプリケーションのデプロイを効果的に自動化します。

Kubernetesコントローラーとして名前を聞いたことがあるかもしれません。Kubernetesはインフラの管理方法を変えるのに役立ちましたが、開発者やシステム管理者にとって複雑さも増しました。 GitOpsの動きがその複雑さの一部をさかのぼり、自動化の層の下に抽象化し始めているため、Argo CD(「CD」はもちろん「continuous delivery(継続的デリバリー)」の省略形です) は、この自動化を可能にする主要なツールの1つです。

Argo CD がなければ、GitOps は「ClickOps」のままです。 CI/CD ツールはインフラの変更をロールアウトできるかもしれませんが、差分を監視することはできないため、インフラはほとんど手動のままです。

この記事では、Argo CD の機能、仕組み、および使用を開始する方法の例について説明します。

Argo CDは何をするもの?

Argo CDは、金融ソフトウェア大手Intuitのチームによって構築された、宣言型の GitOps継続的デリバリーツールです。パブリッククラウドに移行した後、コンテナ化ツールとインフラを管理しなければならないことが、クラウドの最大のメリットを実現するというIntuitの目標を妨げていました。IntuitチームはArgo CDを開発し、最大のリリース速度と加速度を実現しました。 彼らは、その手作業の一部を取り除く自動化のペインを適用したかったので、コントローラー(Argo CD)を作成し、それをオープンソース化しました。

Argo CDは現在、Argo Projectの一部としてコミュニティによって維持されており、Kubernetesネイティブの継続的デプロイの配信ツールとして、おそらく親しみのある多くのGitOpsツールに組み込まれています(Harness独自のGitOpsソリューションは、その上に構築されています)。

Argo CDを選ぶ理由

Argo CDは、GitOps 継続的デリバリーツールとして、実行中のインフラ(実際の状態) を継続的に監視し、宣言的に定義されたコード (望ましい状態またはターゲットの状態) と比較して、非同期かどうかを判断します。

Argo CDは、新しいコードをターゲット環境に自動的にデプロイします。 Argo CD がどのように動作するように構成されているかに応じて、新しいgitのコミット後に同期していないことが通知されるか、アクションが実行されます。自動的に変更が適用されるように設定していると、不変で格納され、Gitリポジトリーでバージョン管理されている内容で本番構成が上書きされます。 このツールは、複雑なアプリケーションのロールアウトに最適です。

さらに、開発者チームがバージョン管理された環境で作業している場合、Argo CDは不可欠です。 ライフサイクル管理とアプリケーション展開の自動化により、Argo CDはアプリケーションの構成を事前に監視して、本番環境に到達する前に同期の問題がある可能性を調べます。

Argo CDのコアコンセプト

Argo CD と Kubernetes をセットアップして使用を開始するには、次の作業に精通している必要があります。

  • コンテナ、仮想マシン、そしておそらくコンテナ化ツールの Docker
  • Kubernetesのようなコンテナオーケストレーション システム(代替手段はありますが)
  • Harness などの継続的なデプロイとインテグレーション用ツール
  • (おそらく)YAML、Helm Chart、KustomizeのどれかでのKubernetesクラスターの管理とマニフェストの管理

上記の内容に精通している場合は、インフラのプロビジョニングに必要な手作業の量を減らすために、コンテナにデプロイし、それらのデプロイを調整し、コードに抽象化するのが役立つことをご存知でしょう。 これが、宣言型GitOps継続的デリバリーの中核となる前提です。ソース管理と自動化を最大限に活用できるGit リポジトリーに全てを移動するのです。

Argo CDは、Gitで定義されたインフラとコンテナオーケストレーションツール間の実際の監視と同期を提供します。 これに関しては、次の5つの主要コンポーネントがあります。‍

  1. Argo CD ユーザー インターフェイス (UI)
    UI 内でアプリケーションを作れますが、自動化に関心のある上級者はより詳細な制御を必要とし、Gitでこれを宣言的に行います。 接続された Gitリポジトリー、それらのリポジトリーにアクセスするための証明書、クラスター、およびプロジェクトを管理することもできます(プロジェクトを使うと、アプリケーションを構成して、各チームの作業に役立つサイロを作れます)。
    Argo CDインターフェイスのより便利なコンポーネントの1つは、インフラの展開の視覚的なパイプライン、およびさまざまなアプリケーションのサービスとクラスターを表示できることです。 アプリケーションがクラッシュループにある場合、これにより、全イベントとマニフェストと構成値を確認できるため、デバッグできます(あなたのシークレットも隠します)。
     
  2. API とコマンドライン (CLI) インターフェイスの両方
    API を介して Argo CDを管理するか、YAMLリソース定義を作る(または Kustomize または Helm チャートを使う)ことができます。 セットアップが完了したら、開発者は、展開するインフラのあらゆる複雑さを理解する必要はありません。 マージ要求に含めるアプリケーション定義だけが必要です。
     
  3. カスタム リソース定義 (CRD)
    Argo CDは、Kubernetes(または同等の)クラスター内に独自の名前空間を作成します。 そこに、リソース定義が格納されます。
     
  4. リポジトリ サービス
    Argo CDはGitリポジトリーをローカルにキャッシュし、アプリケーションマニフェストを保存します。
     
  5. アプリケーションコントローラー
    Argo CDアプリケーションコントローラーをサーバーにダウンロードすると、ソフトウェア開発ライフサイクルイベント(例: PreSync、Sync、PostSync)によって定義されたフックを呼び出せます。

Argo CDをダウンロードするには、プロジェクトの「Getting Started」ページにアクセスしてください。

Argo CDを使ってインフラの更新を展開する例

Argo CDをインストールし、証明書とクラスターを設定したら、Gitで定義されたバージョンを強制することで、インフラを自動的に「デプロイ」するように設定できます。

例えば次のことが可能になります。

  1. 開発者はリソースの変更を、単一のGitリポジトリーにプッシュする
  2. 継続的インテグレーションツールがトリガーされると新しいコンテナー イメージがレジストリーに保存される
  3. プルリクエスト(PR)によって Kubernetesマニフェストが変更され、マージされてArgo CDがトリガーされる
  4. Argo CDはリポジトリーを複製する。クラスターの望ましい状態と現在の状態を比較する
  5. Argo CDはこれらの違いを自動的に調整する
  6. 同期が完了したときにArgo CDレポートを出力する

これは逆の場合も機能します。これがKubernetesコントローラーの真の利点です。Kubernetesクラスターリソースが同期されていない場合、Argo CDはそれを検出し、Gitにあるものを適用して変更を調整します。単純にCDツールやJenkinsを使っている場合、同期の問題は検出されず、修復されません。

Argo CD:「ClickOps」を GitOps に変える

Argo CD は、(とりわけ)GitOpsを動かすコントローラーです。 Intuitによって開発され、コミュニティーによって維持されているため、宣言的に定義されたインフラと運用クラスターの間の変更を調整するための標準になりつつあります。

この記事では、Argo CDが重要な理由、その機能、主要な概念、Argo CDを使ったアプリケーション展開の例を確認しました。

CI/CD への投資を有効に活用したいと考えていて、インフラをほぼ自動的に管理したい場合は、複雑なアプリケーションのロールアウトのサポートを開始するのに最適な場所です。

Argo CDをお探しですか? Harness GitOps as a Service のデモをリクエストしてください


この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。

Harnessに関するお問い合わせはお気軽にお寄せください。

お問い合わせ