Argo CD概要

Argo CD概要

Argo CDはArgoプロジェクトのサブプロジェクトの一つであり、Kubernetes向けのGitOpsスタイルのデプロイを支援するCD(Continuous Delivery)ツールである。
Gitリポジトリの内容とKubernetesクラスタを同期する役割を持つエージェントであり、Kubernetesクラスタ内部にPodの形でデプロイされる。

2017年に始まったArgoプロジェクトには、Argo Workflows、Argo CD、Argo Events、Argo Rolloutsなどのサブプロジェクトがあり、2020年4月にはCNCF(Cloud Native Computing Foundation)のインキュベーティングプロジェクトになった。Argoという名前はギリシャ神話のアルゴ船から採用されており、そのマスコットは同名のタコの一種をイメージしたものとされている。

Argo CDは「CD」という名前からわかるように、継続的デリバリーに特化したツールであり、CI(Continuous Integration)機能はない。そのため、CIツールとは別に他の方法で統合する必要がある。

Argo CDは、目的のアプリケーション状態を定義するソース(マニフェスト)としてGitリポジトリを使用するGitOpsパターンに従う。Argo CDでのKubernetesマニフェストは、標準のYAML/JSONのほか、Kustomize、Helm chart、ksonnet、jsonnetなど複数の方法で指定できる。

Argo CDでは、Gitリポジトリの状態に合わせて自動デプロイを実行する。アプリケーション構成がGitで管理されるため、特定のブランチやタグの更新を追跡できる。また、デプロイ済みアプリケーションに問題がある場合でも、特定のコミットバージョンへすぐに戻すことができる。

Argo CDは、稼働中のk8sアプリケーションを継続的に監視し、現在の状態とGitリポジトリの状態を比較するKubernetesコントローラとして実装される。現在の状態とGitリポジトリの状態に差異がある場合、その差異を可視化し、自動または手動でアプリケーションを同期する。

Argo CDの主な特徴

  • アプリケーションの定義、構成、環境は宣言的であり、バージョン管理されている必要がある。
  • アプリケーションのデプロイとライフサイクル管理は自動化され、確認しやすい。
特徴 説明
自動デプロイ 指定された環境にアプリケーションを自動でデプロイ
構成管理/テンプレートツールのサポート Kustomize、Helm、Ksonnet、Jsonnet、plain YAMLなどをサポート
マルチクラスタサポート 複数のk8sクラスタを管理し、デプロイ可能
SSO統合 OIDC、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、LinkedInとのSSO統合が可能
認可機能 マルチテナントおよびRBACポリシーをサポート
ロールバック Gitリポジトリにコミットされたアプリケーションの任意の時点へロールバック可能
ヘルスチェック アプリケーションリソースのヘルス状態を分析可能
ドリフト検出と可視化 構成のドリフト検出と可視化を自動で実行
アプリケーション同期 自動または手動で理想状態へ同期可能
Web UI リアルタイムビューでアプリケーション活動を提供
CLI 自動化およびCI統合のためのCLIを提供
Webhook統合 GitHub、BitBucket、GitLabなどのWebhook統合をサポート
自動化トークン 自動化のためのアクセストークンをプロジェクトごとに発行
PreSync/Sync/PostSyncフック 複雑なアプリケーションデプロイを支援するPreSync/Sync/PostSyncフックをサポート(例: ブルーグリーンデプロイ、カナリアリリースなど)
監査証跡 アプリケーションイベントおよびAPI呼び出しの監査が可能
Prometheus対応 Prometheusメトリクスを標準でサポート
パラメータオーバーライド Gitのksonnet/helmパラメータを上書き可能

動作原理

  • Argo CDは、目的のアプリケーション状態を定義するソースとしてGit repositoryを使用するGitOpsパターンに従う。
  • Kubernetesマニフェストは複数の方法で指定できる。筆者はHelmチャートを使用した。
  • Argo CDは、指定された対象環境で目的のアプリケーション状態のデプロイを自動化する。

Argo CDの運用環境

Argo CDはKubernetesの構成要素として動作するため、オンプレミスまたはクラウドのKubernetes環境で動作する。

  • オンプレミス/クラウドに独自構築したKubernetes環境
  • クラウド管理サービスのKubernetes環境

類似機能を持つOSS

Kubernetes/GitOpsと互換性のあるオープンソースCDツールは次のとおりである。

  • Jenkins X
  • FluxCD
  • Spinnaker

Argo CDライセンス

Argo CDのライセンスは「Apache License version 2」に従って公開されており、営利・非営利を問わず誰でも自由かつ無料で利用、変更、再配布できる。

参考