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数過多 リソース制限を増加

おすすめツール


まとめ: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#多集群#渐进式交付