gitops-workflows について
gitops-workflowsは、GitOpsでKubernetesインフラをデプロイするチーム向けのスキルです。ArgoCDとFlux CDを対象に、リポジトリ設計、環境昇格、シークレット管理、段階的デリバリー、ロールバックを案内します。
主な機能
- 01ArgoCDとFlux CDのガイダンス
- 02リポジトリ構成パターン
- 03環境昇格戦略
- 04シークレット管理方法
- 05カナリアおよびブルーグリーンデリバリー
- 06ロールバックと災害復旧
活用シーン
- 01GitベースのKubernetesデリバリーの構築
- 02マルチクラスター環境の管理
- 03環境間での変更の昇格
- 04デプロイ失敗に備えたロールバック計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ nickcrew/ claude-cortex --skill gitops-workflowsインストール後、Claude Code で/gitops-workflowsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/argocd-implementation.mdbest-practices.mdcore-principles.mdenvironment-promotion.mdflux-implementation.mdprogressive-delivery.mdrepository-structures.mdrollback-strategies.mdsecret-management.md詳細
GitOps ワークフロー
ArgoCD と Flux CD を使用して、本番環境に対応した GitOps ワークフローを実装するための専門的なガイダンスです。宣言的なデプロイパターン、段階的デリバリー戦略、複数環境の管理、Kubernetes インフラストラクチャ向けの安全なシークレット管理を取り上げます。
このスキルを使用する場面
- Kubernetes デプロイに GitOps の原則を適用する
- Git リポジトリからの継続的デリバリーを自動化する
- 複数クラスターまたは複数環境へのデプロイを管理する
- 段階的デリバリー(カナリア、ブルーグリーン)戦略を実装する
- 自動同期ポリシーと調整を設定する
- GitOps ワークフローでシークレットを安全に管理する
- 環境昇格ワークフローを設定する
- GitOps 向けのリポジトリ構造(モノレポとマルチレポ)を設計する
- ロールバック戦略と災害復旧を実装する
- Git を通じてコンプライアンスと監査証跡を確立する
コアコンセプト
4 つの原則
- 宣言的:システム全体の状態をコードで表現します
- バージョン管理:正規の状態を完全な履歴とともに Git に保存します
- 自動取得:エージェントが望ましい状態を取得します(本番環境へのプッシュは行いません)
- 継続的な調整:ドリフトを自動検出して修正します
主なメリット
- デプロイ履歴と監査証跡を完全に記録できます
- Git 操作によって迅速にロールバックできます
- セキュリティが強化されます(CI にクラスターの認証情報を保存しません)
- インフラストラクチャが自己修復します
- 複数クラスター間で一貫性を保てます
- インフラストラクチャの変更に使い慣れた Git ワークフローを利用できます
クイックリファレンス
| タスク | 参照先 |
|---|---|
| GitOps の原則とメリット | skills/gitops-workflows/references/core-principles.md |
| リポジトリ構造のパターン(モノレポ、マルチレポ、ブランチ) | skills/gitops-workflows/references/repository-structures.md |
| ArgoCD のセットアップ、Applications、ApplicationSets | skills/gitops-workflows/references/argocd-implementation.md |
| Flux のブートストラップ、ソース、Kustomizations、HelmReleases | skills/gitops-workflows/references/flux-implementation.md |
| 環境昇格戦略 | skills/gitops-workflows/references/environment-promotion.md |
| シークレット管理(Sealed Secrets、ESO、SOPS) | skills/gitops-workflows/references/secret-management.md |
| 段階的デリバリー(カナリア、ブルーグリーン) | skills/gitops-workflows/references/progressive-delivery.md |
| ロールバック戦略と災害復旧 | skills/gitops-workflows/references/rollback-strategies.md |
| ベストプラクティスとパターン | skills/gitops-workflows/references/best-practices.md |
ワークフローの手順
1. リポジトリ構造を選択する
判断要因:
- チームの規模と組織構造
- アプリケーション間の結合度と依存関係
- アクセス制御の要件
- デプロイ頻度と独立性
選択肢:
- モノレポ:単一のリポジトリ、統合されたプラットフォームチーム、共有インフラストラクチャ
- マルチレポ:アプリまたはチームごとにリポジトリを分け、リリースサイクルを独立させます
- 環境ブランチ:Git フロー形式で、シンプルなメンタルモデルを採用します
2. GitOps ツールを選択する
ArgoCD:
- UI を重視し、視覚的にアプリケーションを管理できます
- 階層型デプロイ向けの App of Apps パターン
- 複数クラスターへのデプロイ向けの ApplicationSets
- 強力な RBAC とプロジェクト分離
Flux:
- CLI を優先する GitOps Toolkit アーキテクチャ
- Kustomize と Helm をネイティブにサポート
- イメージ更新を自動化
- 軽量でクラウドネイティブ
3. シークレット管理を設定する
暗号化されていないシークレットは決して Git にコミットしないでください
選択肢:
- Sealed Secrets:クライアント側で暗号化するシンプルなワークフロー
- External Secrets Operator:外部シークレットストア(AWS、Vault、GCP)から同期します
- SOPS:age またはクラウド KMS を使用したファイルベースの暗号化
4. 同期ポリシーを実装する
本番環境以外の環境:
pruneとselfHealを使った自動同期- 頻繁な調整(1~5 分)
- 即時フィードバックで迅速に失敗させます
本番環境:
- 手動承認または承認ゲート付きの自動化
- ヘルスチェックと待機条件
- リスクの高い変更には段階的デリバリーを適用
- メンテナンス期間に合わせた同期ウィンドウ
5. 環境の昇格を設定する
昇格戦略:
- Git ベース:Git 操作を使用してタグまたはブランチで昇格します
- Kustomize オーバーレイ:環境固有のオーバーレイでイメージタグを更新します
- 自動更新:semver ポリシーに対応する Flux ImageUpdateAutomation を使用します
6. プログレッシブデリバリーを設定する
リスクの高い変更の場合:
- ArgoCD Rollouts:自動分析を伴うカナリアデプロイ
- Flagger:メトリクスに基づく昇格を伴うプログレッシブデリバリー
- Istio またはその他のサービスメッシュを使用したトラフィックシフト
- 分析に失敗した場合の自動ロールバック
7. ロールバック手順を確立する
Git によるロールバック:
- 特定のコミットには
git revertを使用します - targetRevision を更新してタグベースでロールバックします
- 高速かつ宣言的です
ツール固有の方法:
- ArgoCD:リビジョン履歴を使って
argocd app rollbackを実行します - Flux:自動化を一時停止し、手動でロールバックしてから再開します
よくある間違い
- 暗号化されていないシークレットをコミットする - 必ずシークレット管理ソリューションを使用してください
- 非本番環境で自動同期を有効にしない - 開発のフィードバックが遅れます
- ゲートなしで本番環境の自動同期を有効にする - 破壊的な変更が発生するリスクが高まります
- ドリフト検出を無視する - 手動変更は調整するか、アラートを出す必要があります
- ヘルスチェックがない - 同期は成功しても、アプリが正常でない場合があります
- 依存関係の順序付けがない - インフラストラクチャの準備が整う前にアプリがデプロイされます
- ロールバックをテストしない - 実際のインシデント時に問題が発覚します
- 環境に一貫性がない - ステージング環境と本番環境の差が大きすぎます
- 昇格テストを行わない - 環境の昇格時に手動エラーが発生します
- RBAC が不十分 - GitOps サービスアカウントに過剰な権限が付与されています
リソース
- OpenGitOps: https://opengitops.dev/
- ArgoCD Documentation: https://argo-cd.readthedocs.io/
- Flux Documentation: https://fluxcd.io/docs/
- ArgoCD Rollouts: https://argoproj.github.io/argo-rollouts/
- Flagger: https://docs.flagger.app/
- External Secrets Operator: https://external-secrets.io/
- Sealed Secrets: https://github.com/bitnami-labs/sealed-secrets
- SOPS: https://github.com/mozilla/sops/
コメント
Markdown 対応