GitOpsとArgoCD本番運用:2026年完全デプロイ自動化ガイド
DevOps
2026年、なぜGitOpsがKubernetesデプロイの標準なのか
Kubernetesデプロイは、手動kubectlからCI/CDパイプライン、そしてGitOpsへと進化してきました。2026年、GitOpsはKubernetesデプロイのデファクトスタンダードです。その核心は:GitがSingle Source of Truth。
| 特徴 | 従来のCI/CD | GitOps |
|---|---|---|
| デプロイモデル | Push | Pull |
| 状態ソース | CIシステム | Gitリポジトリ |
| クラスタ認証情報 | CIが保持 | クラスタ内が保持 |
| 状態ドリフト | 検出困難 | 自動検出・修復 |
| 監査証跡 | CIログ | Git履歴 |
| ロールバック | パイプライン再実行 | git revert |
| マルチクラスター | 複雑 | 統合管理 |
ArgoCDアーキテクチャとコアコンセプト
┌─────────────────────────────────────────────────────┐
│ Git Repository │
└──────────────────────┬──────────────────────────────┘
│ git clone/pull
┌──────────────────────▼──────────────────────────────┐
│ ArgoCD Controller │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Repo Server │ │ App Controller│ │
│ └──────────────┘ └──────────────┘ │
└──────────────────────┬──────────────────────────────┘
│ kubectl apply
┌──────────────────────▼──────────────────────────────┐
│ Kubernetes Cluster │
└─────────────────────────────────────────────────────┘
完全セットアップ
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.13.0/manifests/install.yaml
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
kubectl port-forward svc/argocd-server -n argocd 8080:443
最初のApplication
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/myorg/my-app-manifests.git
targetRevision: main
path: overlays/production
destination:
server: https://kubernetes.default.svc
namespace: my-app
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
マルチクラスター管理
argocd cluster add production-cluster --name prod-us-east
argocd cluster add production-cluster-eu --name prod-eu-west
ApplicationSet
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: my-app-multi-cluster
namespace: argocd
spec:
generators:
- clusters:
selector:
matchLabels:
environment: production
template:
metadata:
name: 'my-app-{{name}}'
spec:
project: production
source:
repoURL: https://github.com/myorg/my-app-manifests.git
targetRevision: main
path: overlays/production
destination:
name: '{{name}}'
namespace: my-app
プログレッシブデリバリー:Argo Rollouts
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-app
spec:
replicas: 10
strategy:
canary:
steps:
- setWeight: 10
- pause: { duration: 5m }
- setWeight: 20
- analysis:
templates:
- templateName: success-rate
- setWeight: 50
- pause: { duration: 10m }
- setWeight: 100
canaryService: my-app-canary
stableService: my-app-stable
selector:
matchLabels:
app: my-app
template:
spec:
containers:
- name: my-app
image: myorg/my-app:v2.0.0
Secret管理:Sealed Secrets
kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.0/controller.yaml
kubeseal --format yaml < secret.yaml > sealed-secret.yaml
ArgoCD vs Flux vs Spinnaker
| 次元 | ArgoCD | Flux | Spinnaker |
|---|---|---|---|
| UI | 優秀 | 基本 | 優秀 |
| マルチクラスター | ネイティブ | ネイティブ | ネイティブ |
| プログレッシブデリバリー | Argo Rollouts | Flagger | ネイティブ |
| 学習曲線 | 中 | 低 | 高 |
| 適合シナリオ | 中大チーム | 小チーム | 大企業 |
5つのよくある落とし穴
1. 自動同期による本番インシデント
本番環境では手動同期+承認を推奨。
2. Resource Hookの無視
Hookを正しく処理しないとデプロイフローが異常になります。
3. Application過多によるパフォーマンス問題
100以上のApplicationを管理するとボトルネックが発生する可能性。
4. Sealed Secrets証明書の未バックアップ
証明書を紛失すると、暗号化されたSecretを復号できません。
5. Gitリポジトリ構造の不適切な設計
clusters/helm-charts/kustomize/argocdでディレクトリを整理。
10のエラートラブルシューティング
| # | 症状 | 原因 | 解決方法 |
|---|---|---|---|
| 1 | Applicationが常にOutOfSync | Git変更が同期をトリガーしていない | WebhookとsyncPolicyを確認 |
| 2 | 同期失敗 | マニフェスト形式エラー | argocd app diff |
| 3 | イメージプルエラー | レジストリ認証情報なし | imagePullSecretsを設定 |
| 4 | マルチクラスター接続失敗 | RBAC権限不足 | ServiceAccountを確認 |
| 5 | Helm Chartレンダリングエラー | values参照の問題 | helm templateで検証 |
| 6 | リソースが予期せず削除 | prune: trueの誤設定 | syncPolicy.pruneを確認 |
| 7 | Rolloutがスタック | Analysis指標未達成 | kubectl argo rollouts get rollout |
| 8 | SealedSecret復号失敗 | 証明書不一致 | コントローラ証明書を確認 |
| 9 | Git接続タイムアウト | ネットワークポリシー制限 | NetworkPolicyを確認 |
| 10 | OOM | Application数過多 | リソース制限を増加 |
おすすめツール
- JSONフォーマッター:/ja/json/format
- Base64エンコーダー:/ja/encode/base64
- ハッシュ計算:/ja/encode/hash
まとめ:GitOpsはGitをSingle Source of Truthとし、「プルモデル」で従来のCI/CDのセキュリティと一貫性の問題を解決します。ArgoCDは2026年で最も成熟したKubernetes GitOpsツールであり、Argo Rolloutsによるプログレッシブデリバリー、Sealed SecretsによるSecret管理、ApplicationSetによるマルチクラスター管理と組み合わせて使用します。
ブラウザローカルツールを無料で試す →
#GitOps#ArgoCD#Kubernetes#持续交付#Argo Rollouts#Sealed Secrets#多集群#渐进式交付