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