ArgoCDは、Kubernetes向けのGitOpsツールです。Gitリポジトリの状態を「望ましい状態」と見なし、クラスタを自動同期します。本記事では、GitOpsの考え方とArgoCDの基本を入門レベルで解説します。
GitOpsとは
GitOpsは「インフラやアプリの構成をすべてGitで管理し、Gitの状態を真実の唯一の情報源(Single Source of Truth)にする」運用手法です。誰が何を変えたかGit履歴で追え、ロールバックもgit revertで済むのが大きな利点です。
ArgoCDの基本
- Application:「どのリポジトリの・どのパスを・どのクラスタに適用するか」を定義するリソース
- Sync:Gitの状態とクラスタを揃える操作
- Sync Policy:自動同期・self-heal・prune等の挙動制御
- Project:複数Applicationの権限・ターゲットを束ねる単位
導入手順
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# CLIインストール
brew install argocd
# ダッシュボードアクセス
kubectl port-forward svc/argocd-server -n argocd 8080:443
Applicationの定義例
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
destination:
server: https://kubernetes.default.svc
namespace: default
source:
repoURL: https://github.com/example/my-app
path: k8s
targetRevision: main
syncPolicy:
automated:
prune: true
selfHeal: true
主な機能
- Auto Sync:Git変更を検知して自動デプロイ
- Self-heal:クラスタ上の手動変更をGit状態に戻す
- Rollback:履歴から任意の世代に戻せる
- Sync Waves / Hooks:適用順序やフックを制御
- App of Apps:複数Applicationを1つのApplicationで束ねるパターン
Helm / Kustomizeとの組み合わせ
ArgoCDはマニフェストをそのままだけでなく、HelmやKustomize経由で扱えます。values.yamlを環境ごとに分けて、本番・ステージングで同じChartを差分パラメータで運用する構成が定番です。
GitOpsのメリット
- 変更履歴がGitで完全追跡可能
- レビュー前提のPRベース運用で安全
- クラスタ復旧がGit同期で完結
- 監査・コンプライアンスに強い
注意点
- 機密情報はSealed Secrets / External Secrets等を併用
- 大量Applicationの管理にはApp of AppsやArgoCD Image Updater活用
- クラスタ運用にKubernetes基礎知識が必須
まとめ
ArgoCDは、Kubernetes運用を「Gitに書く・あとは自動」に変える強力なGitOpsツールです。手動kubectl applyに依存しない運用は、再現性・監査性・復旧性すべての面で大きな優位性があります。Fluxとセットで覚えておきたい必修ツールです。