メトリックベースの分析とロールバックを伴う、カナリアまたはブルーグリーンなどの高度な自動デプロイ戦略を実装する。
→Argo Rolloutsを使用する。トラフィックルーティング構成(サービスメッシュ用)と、Prometheusのようなメトリクスプロバイダーを参照するAnalysisTemplateを含む戦略(例:カナリア)を持つRolloutリソースを定義する。
理由: デプロイをアプリケーションロジックから分離する。トラフィックのシフトと分析を自動化し、安全にリリースを昇格させ、障害時に自動的にロールバックすることで、デプロイのリスクを軽減する。
リファレンス↗
Gitにプレーンテキストの認証情報を保存せずに、GitOpsワークフローでシークレットを管理する。
→Sealed Secrets(特定のクラスターのシークレットを暗号化する)またはExternal Secrets Operator(Vault、AWS/GCP/Azureシークレットマネージャーから同期する)を使用する。暗号化されたシークレットまたは参照リソースのみをGitにコミットする。
理由: 機密データをGitから分離しつつ、GitOpsワークフローの一部としてシークレットを宣言的に管理できるようにし、単一の真実のソースを維持する。
複数のクラスター、環境、またはマイクロサービス向けのArgoCD Applicationの作成と管理を自動化する。
→ApplicationSetを使用する。Applicationのテンプレートを定義し、ジェネレーター(例:クラスター、Git、マトリックス)を使用して、クラスターリスト、Gitディレクトリ、またはその他のソースに基づいてApplicationを動的に作成する。
理由: 手動でのApplication作成を排除し、単一の定義から数百のアプリケーションまたはクラスターのスケーラブルな管理を可能にする。
開発者がプルリクエストでの変更をテストするための、一時的なプレビュー環境を提供する。
→Pull Requestジェネレーター付きのArgoCD ApplicationSetを使用する。PRがオープンされたときにApplicationを自動的に作成し、PRがクローズ/マージされたときに削除する。
理由: 開発者がマージ前にライブ環境で変更を検証できるようにし、コード品質を向上させ、統合の問題を減らし、手動での環境管理を不要にする。
大規模で複雑なアプリケーションとプラットフォームコンポーネントのセットを、構造化された方法でArgoCDを使用して管理する。
→App-of-Appsパターンを実装する。ルートApplicationは他の子Applicationを管理し、子Applicationはさらに他のApplicationを管理することで、階層構造を作成する。
理由: クラスターや環境をブートストラップするための単一のエントリポイントを提供し、個々のアプリケーションセットのモジュール式でチームベースの管理を可能にする。
リソースが正しい順序でデプロイされることを保証する(例:CRDの後にCR、アプリケーションの前にインフラストラクチャ)。
→ArgoCDではSync Wavesとリソースヘルスチェックを使用する。FluxではKustomizationまたはHelmReleaseリソースで`dependsOn`を使用する。
理由: 宣言型システムはデフォルトでリソースを並行して適用する。リソース間の依存関係を管理するには、明示的な順序付けメカニズムが必要である。
Fluxを使用して完全なGitOpsパイプラインを実装する。
→Fluxコントローラーを組み合わせる:Source Controller(Git/Helm/OCIソース用)、Kustomize Controller(マニフェスト適用用)、およびHelm Controller(HelmReleases用)。アラートにはNotification Controllerを使用する。
理由: Fluxは特化されたコントローラーの構成可能なセットである。それぞれの役割を理解することは、Fluxベースの継続的デリバリーを構築し、トラブルシューティングする上で重要である。
リファレンス↗
ライブクラスターの状態がGitの希望する状態に継続的に一致し、手動での変更を元に戻すことを保証する。
→ArgoCD Applicationを`syncPolicy.automated.selfHeal: true`で構成する。ArgoCDはドリフトを検出し、自動的に同期して不正な変更を元に戻す。
理由: 自己修復は、Gitを唯一の真実のソースとして強制し、コンプライアンスと安定性にとって重要な構成ドリフトを防ぐ、GitOpsの核となる原則である。
適切な監査および承認ゲートを使用して、アプリケーションバージョンを環境間(開発 -> ステージング -> プロダクション)で昇格させる。
→Gitで環境ごとに個別のディレクトリまたはブランチを使用する。プルリクエストを作成して変更を昇格させる(例:ステージングから本番ブランチ/ディレクトリへ)。PRレビューを強制する。
理由: 監査証跡と承認のためにGitを活用する。PRプロセスが正式な昇格ゲートとなり、変更が本番環境に到達する前にレビューされることを保証する。
共有ArgoCDインスタンスでマルチテナンシーを実装し、チームを自身の特定のリソースに制限する。
→各チーム用にArgoCD Projectを作成する。ソースGitリポジトリ、デスティネーションクラスター/名前空間、および許可されるリソースの種類を制限するようにプロジェクトを構成する。SSOと統合し、グループをプロジェクトロールにマッピングする。
理由: ProjectはArgoCDにおけるマルチテナント分離とRBACの主要なメカニズムであり、セキュアなセルフサービスアプリケーションデプロイメントを可能にする。