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」に従って公開されており、営利・非営利を問わず誰でも自由かつ無料で利用、変更、再配布できる。