ArgoCDで実現するGitOps入門

インフラ・クラウド

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とセットで覚えておきたい必修ツールです。