ArgoCD

ArgoCDは、Kubernetes向けの宣言的GitOpsツールです。GitリポジトリをSingle Source of Truthとして、Kubernetesクラスターの状態を管理します。

ArgoCDは、GitOps原則に基づいてKubernetesアプリケーションのデプロイメントを自動化します。

概要

ArgoCDの主な特徴:

  • 宣言的なGitOps CD(Continuous Delivery)
  • Kubernetesマニフェストの自動同期
  • WebベースのUIとCLI
  • マルチクラスター管理
  • SSO統合サポート
  • Helm、Kustomize、Ksonnetなど複数のテンプレートツール対応

インストール

1. 名前空間の作成

kubectl create namespace argocd

2. ArgoCDのインストール

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

3. ArgoCDサーバーのアクセス確認

Ingressを設定するまで、Port Forwardingでアクセスできます。

kubectl port-forward svc/argocd-server -n argocd 8080:443

初期設定

初期パスワードの取得

初期管理者パスワードは自動生成されます。

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

CLIでのログイン

argocd login localhost:8080 --username admin --password <パスワード> --insecure

パスワードの変更

argocd account update-password

アプリケーションのデプロイ

Application リソースの作成

ArgoCD Applicationリソースを使用して、GitリポジトリからKubernetesリソースをデプロイします。

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: example-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/your-org/your-repo
    targetRevision: HEAD
    path: manifests
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

アプリケーションの作成

kubectl apply -f application.yaml

主要な機能

自動同期

syncPolicy.automatedを設定すると、Gitリポジトリの変更を自動的に検出してデプロイします。

セルフヒール

selfHeal: trueを設定すると、クラスター内の状態がGitと異なる場合、自動的に修正します。

プルーニング

prune: trueを設定すると、Gitから削除されたリソースをクラスターからも削除します。

ベストプラクティス

  • App of Apps パターン: ルートApplicationから他のApplicationをデプロイ
  • 環境ごとの分離: 各環境(dev, staging, prod)に別々のApplicationを作成
  • Projectの活用: チームやアプリケーションごとにProjectを作成してアクセス制御
  • Sync Waves: リソースのデプロイ順序を制御
  • Health Check: カスタムヘルスチェックで正確なステータス監視

トラブルシューティング

同期エラー

# アプリケーションの詳細を確認
argocd app get <app-name>

# ログの確認
kubectl logs -n argocd deployment/argocd-application-controller

リソースの強制同期

argocd app sync <app-name> --force

参考リンク