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