ArgoCD

ArgoCD デプロイパイプライン設計ガイド|GitOps導入とチェックリスト

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

ArgoCD と GitOps の基礎

ArgoCD と GitOps を正しく理解すれば、Kubernetes 上でのデプロイ作業が 宣言的かつ自動化 されたフローに変わります。本節では、Git が唯一の真実源(Single Source of Truth)になる仕組みと、ArgoCD がその状態をどのように監視・同期するかを解説します。この記事全体で使用しているバージョンは ArgoCD v2.8.0(公式 Helm chart argo-cd の最新安定版)です。

ArgoCD の概要

ArgoCD は Kubernetes 向けの GitOps エンジンで、Git リポジトリとクラスター状態を常に比較し、差分があれば自動または手動で同期します。

  • 宣言的管理:すべてのマニフェストを Git に保存
  • 自動同期auto-sync を有効化すると差分が即時適用(必要に応じて手動も可)
  • UI/CLI:Web UI と argocd CLI が提供する視覚的・操作的な管理インタフェース

GitOps の基本原則

GitOps は「Git が唯一の真実源」という前提で運用し、変更は必ずプルリクエスト(PR)経由で行います。CI がイメージビルドとテストを担当し、ArgoCD がデプロイを担うことで コード → ビルド → デプロイ の一貫したパイプラインが実現します。

  • 単一ソース:インフラ定義もアプリケーションコードも同じリポジトリで管理
  • 自動化:手作業の介入を最小限に抑えることでヒューマンエラーを削減
  • 可観測性:すべての変更が Git のコミット履歴として残り、追跡可能

CI ツールとの連携パターン

CI と ArgoCD を組み合わせると、コード変更から本番デプロイまでを 完全自動化 できます。本章では代表的な CI ツール(GitHub Actions、GitLab CI、Jenkins)ごとにバージョン情報を明示した実装例を示します。使用するツールのバージョンは次の通りです。

ツール バージョン
GitHub Actions actions/checkout@v4docker/build-push-action@v5
GitLab CI 公式ランナー v16.3
Jenkins Declarative Pipeline(プラグイン pipeline-github-lib v1.12)
ArgoCD CLI v2.8.0

GitHub Actions でのフロー

GitHub Actions はリポジトリ直下に workflow ファイルを書くだけで完結します。以下は ビルド → イメージプッシュ → マニフェスト更新 → ArgoCD 同期 の流れを示すサンプルです。

ポイント:Git のコミットがトリガーになるため、ArgoCD は常に最新マニフェストを取得し、自動で同期します。

GitLab CI と Jenkins の統合例

GitLab CI と Jenkins を組み合わせると、CI のビルド・プッシュは GitLab が担当し、Jenkins がマニフェスト生成・ArgoCD 同期を行う形が取れます。以下のサンプルは GitLab CI(v16.3)Jenkins Declarative Pipeline(v2.8.0 の CLI) の流れです。

ポイント:CI ツールごとに得意領域(ビルド、テスト、マニフェスト生成)を分割し、全体としてシンプルで保守性の高いパイプラインが構築できます。


マルチステージ・マルチクラスター設計

本番とステージングを別クラスターで運用することで障害影響範囲を限定し、リスクヘッジが可能です。本章では ArgoCD ApplicationSetKustomize / Helm を組み合わせた実装例を示します。使用している ArgoCD のバージョンは v2.8.0 で、ApplicationSet CRD は argoproj.io/v1alpha1 がデフォルトです。

環境分離とクラスター登録

マルチクラスター構成では、ArgoCD の ConfigMap argocd-cm に各クラスタ情報を記載します。以下は ステージング本番 の例です(トークンはシークレット管理で安全に注入してください)。

ApplicationSet と Kustomize の連携例

list generator を用いると、環境ごとの Application オブジェクトを自動生成できます。以下は ステージング / 本番 向けの ApplicationSet 定義です。

Helm を使う場合のポイント

Helm アプリケーションでも同様に helm.valuesFiles に環境別ファイルを指定します。例として values-staging.yamlvalues-prod.yaml を用意し、ApplicationSet のテンプレート内で切り替えます。

まとめ:ApplicationSet と Kustomize/Helm を活用すれば、環境ごとの差分管理がコードベースで一元化され、クラスター追加や削除も最小の手間で実現できます。


セキュリティとロールバック戦略

機密情報の漏洩やデプロイ失敗は運用上の大きなリスクです。本章では シークレット管理自動ロールバック のベストプラクティスを、使用ツールのバージョンとともに具体的に示します。利用する Sealed Secrets は v0.20.5(Helm chart sealed-secrets、External Secrets Operator は v0.9.6 を想定しています。

シークレット管理のベストプラクティス

ArgoCD 自体はシークレットを直接扱わない設計です。代替手段として以下が主流です。

1. Sealed Secrets の運用方法(環境別コントローラ)

Sealed Secrets は コントローラのネームスペース を任意に設定できるため、ステージング・本番で異なる名前空間にデプロイ可能です。Helm でインストールする際は次のように指定します。

上記のように controller.namespace を環境変数や Helmfile のオーバーライドで切り替えると、環境ごとのコントローラネームスペース が柔軟に設定できます。

シークレット作成手順は以下です(バージョン情報付き):

db-secret.sealed.yaml を Git にコミットすれば、対応するクラスターの Sealed Secrets コントローラが自動復号し、通常の Secret として展開します。

2. External Secrets Operator の活用

外部 KMS(AWS Secrets Manager、GCP Secret Manager 等)と連携し、ランタイムでシークレットを取得するパターンです。以下は AWS Secret Store を参照する例です(バージョン v0.9.6)。

ベストプラクティス:平文シークレットは Git に決して保存せず、必ず Sealed Secrets または ExternalSecrets で暗号化・外部参照を行うこと。

自動ロールバックとヘルスチェック

デプロイ失敗時に自動で前バージョンへ復帰させるには Argo Rollouts と ArgoCD の healthChecks を組み合わせます。使用している Argo Rollouts は v1.7.0 です。

Canary デプロイの設定例(Argo Rollouts)

ヘルスチェック用 AnalysisTemplate

failureLimitinterval を本番環境で十分にテストし、失敗判定が早すぎないよう調整してください。これにより、Canary が期待した成功率を下回った場合は自動的に前バージョンへロールバックされます。


運用・可観測性・トラブルシューティング

運用フェーズでは アクセス制御モニタリング が鍵となります。本章では RBAC 設計例、Prometheus/Grafana でのメトリクス取得、そしてよくある障害と対策をまとめます。ArgoCD の UI は v2.8.0、Metrics エンドポイントは /metrics(Prometheus フォーマット)です。

RBAC 設計と監査ログ活用

ArgoCD の AppProject でチーム単位の権限を分離し、Kubernetes の RoleBinding と組み合わせます。以下は 開発チーム向け read‑only プロジェクト の例です。

監査ログは ArgoCD のサーバー起動時に --loglevel=info を指定し、Kubernetes の audit ポリシーと併せて外部 SIEM(例:Datadog, Splunk)へ転送します。

Prometheus / Grafana による可観測性

ArgoCD が提供する /metrics エンドポイントは標準的な Prometheus メトリクスです。以下の ServiceMonitor を作成すれば、Prometheus Operator が自動で取得できます(バージョン 0.55)。

Grafana の公式テンプレート(ID 12169)をインポートすると、同期成功率・エラー数・リソース差分 が一目で把握できます。さらに argocd_app_sync_totalargocd_app_health_status{status="Healthy"} などのクエリで独自ダッシュボードを拡張してください。

よくある落とし穴と対策

落とし穴 原因 推奨対策
マニフェストのコンフリクト 手動でクラスターを変更したまま Git が古い状態に同期しようとする selfHeal: true を有効化し、手動変更は原則禁止。定期的に argocd app diff で差分確認
シークレットが平文でコミット Sealed Secrets の生成漏れや CI が失敗した場合 CI パイプラインで git diff --checkkube-linter を実行し、平文シークレット検出時はビルドを失敗させる
ロールバックが機能しない Rollout の analysis 設定ミスや閾値が緩すぎる 本番環境で事前に ベンチマークテスト を行い、failureLimitinterval を適切に設定
監査ログが欠損 ログローテーション設定不足、永続化ボリューム未設定 logrotate または Cloud Logging の永続保存ポリシーを導入し、最低 30 日分の保持を確保

導入チェックリストと次のアクション

以下の項目を順に確認すれば、設計から本番運用までスムーズに移行できます。完了したら必ず ✔️ を付けて進めましょう。

  • [ ] ArgoCD のインストール:Helm (argo-cd chart v5.48.0) または Kustomize で v2.8.0 をデプロイ
  • [ ] Git リポジトリ構成の整備base/, overlays/staging/, overlays/prod/ のディレクトリを作成し、Kustomize または Helm のベースを置く
  • [ ] CI パイプライン実装:GitHub Actions(v4/v5)または GitLab CI(v16.3)でビルド・プッシュ・マニフェスト更新を自動化
  • [ ] ApplicationSet 定義:list generator で環境別 Application を自動生成し、selfHealprune を有効化
  • [ ] シークレット暗号化:Sealed Secrets(v0.20.5)を環境ごとのネームスペースにデプロイ、または External Secrets Operator(v0.9.6)で外部 KMS と連携
  • [ ] ロールバック設定:Argo Rollouts(v1.7.0)の Canary デプロイと AnalysisTemplate によるヘルスチェックを有効化
  • [ ] RBAC ポリシー:AppProject と Kubernetes RoleBinding で最小権限のアクセス制御を実装
  • [ ] 監査ログ収集:ArgoCD の --loglevel=info 設定と K8s audit を SIEM に転送
  • [ ] 可観測性基盤:Prometheus ServiceMonitor と Grafana ダッシュボード(ID 12169)を構築し、メトリクスのアラート設定も追加
  • [ ] テスト運用:ステージングクラスターでフルサイクルを最低 2 回実施し、差分・ロールバック・監査ログを確認

次のステップ

  1. GitOps フローの実行:CI がトリガーしたプッシュ → ArgoCD の自動同期が正常に完了することを検証。
  2. 障害シナリオのシミュレーション:意図的に Canary 失敗させ、ロールバックが期待通りに機能するか確認。
  3. 運用ドキュメント化:本チェックリストと実装例を社内 Wiki にまとめ、担当者間で共有。

全体まとめ

  • ArgoCD v2.8.0 と最新の CI ツール(GitHub Actions@v4, GitLab Runner v16.3, Jenkins Declarative)を組み合わせることで、コード変更から本番デプロイまでのフローが完全自動化できます。
  • ApplicationSet + Kustomize/Helm によるマルチクラスター管理は、環境ごとの差分をコードで一元管理でき、スケールアウトも容易です。
  • シークレットは Sealed Secrets(環境別ネームスペース) または External Secrets Operator で暗号化・外部参照し、平文コミットを防止します。
  • Argo Rollouts の Canary + AnalysisTemplate によるヘルスチェックで失敗時の自動ロールバックを実装し、リスクを最小化できます。
  • RBAC、監査ログ、Prometheus/Grafana による可観測性を整備すれば、運用中のトラブルも迅速に検知・対処可能です。

このガイドラインとチェックリストに沿って実装すれば、堅牢かつ拡張性の高い GitOps 基盤が構築できるでしょう。ぜひ本番環境で試し、継続的な改善サイクルを回してください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-ArgoCD