gitops-workflow について
ArgoCD または Flux を使う Kubernetes チーム向けの GitOps 実装ガイドです。デプロイ設定から同期ポリシー、段階的リリース、シークレット管理まで扱います。
主な機能
- 01ArgoCD と Flux のセットアップ
- 02Git 駆動のデプロイ
- 03自動同期ポリシー
- 04カナリア・ブルーグリーンリリース
- 05シークレット管理方式
活用シーン
- 01Kubernetes クラスターへの GitOps 導入
- 02Git からのアプリデプロイ自動化
- 03マルチクラスターリリースの管理
- 04段階的リリースと同期の設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ oimiragieo/ agent-studio --skill gitops-workflowインストール後、Claude Code で/gitops-workflowを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
commands/gitops-workflow.mdhooks/post-execute.cjspre-execute.cjsreferences/argocd-setup.mdresearch-requirements.mdsync-policies.mdrules/gitops-workflow.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/implementation-template.md詳細
GitOps ワークフロー
ArgoCD と Flux を使用して Kubernetes のデプロイを自動化する GitOps ワークフローの実装ガイドです。
目的
OpenGitOps の原則に従い、ArgoCD または Flux CD を使用して、宣言型の Git ベースの Kubernetes 向け継続的デリバリーを実装します。
このスキルを使用する場面
- Kubernetes クラスターに GitOps をセットアップする
- Git からのアプリケーションデプロイを自動化する
- プログレッシブデリバリー戦略を実装する
- マルチクラスターのデプロイを管理する
- 自動同期ポリシーを設定する
- GitOps でのシークレット管理をセットアップする
OpenGitOps の原則
- 宣言型 - システム全体を宣言型で記述します
- バージョン管理され、変更不可 - 望ましい状態を Git に保存します
- 自動的にプルされる - ソフトウェアエージェントが望ましい状態をプルします
- 継続的に調整される - エージェントが実際の状態と望ましい状態を調整します
ArgoCD のセットアップ
1. インストール
# Create namespace
kubectl create namespace argocd
# Install ArgoCD
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Get admin password
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
参考: 詳細なセットアップについては references/argocd-setup.md を参照してください。
2. リポジトリ構成
gitops-repo/
├── apps/
│ ├── production/
│ │ ├── app1/
│ │ │ ├── kustomization.yaml
│ │ │ └── deployment.yaml
│ │ └── app2/
│ └── staging/
├── infrastructure/
│ ├── ingress-nginx/
│ ├── cert-manager/
│ └── monitoring/
└── argocd/
├── applications/
└── projects/
3. アプリケーションの作成
# argocd/applications/my-app.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/gitops-repo
targetRevision: main
path: apps/production/my-app
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
4. App of Apps パターン
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: applications
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/gitops-repo
targetRevision: main
path: argocd/applications
destination:
server: https://kubernetes.default.svc
namespace: argocd
syncPolicy:
automated: {}
Flux CD のセットアップ
1. インストール
# Install Flux CLI
curl -s https://fluxcd.io/install.sh | sudo bash
# Bootstrap Flux
flux bootstrap github \
--owner=org \
--repository=gitops-repo \
--branch=main \
--path=clusters/production \
--personal
2. GitRepository の作成
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: my-app
namespace: flux-system
spec:
interval: 1m
url: https://github.com/org/my-app
ref:
branch: main
3. Kustomization の作成
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: my-app
namespace: flux-system
spec:
interval: 5m
path: ./deploy
prune: true
sourceRef:
kind: GitRepository
name: my-app
同期ポリシー
自動同期の設定
ArgoCD:
syncPolicy:
automated:
prune: true # Delete resources not in Git
selfHeal: true # Reconcile manual changes
allowEmpty: false
retry:
limit: 5
backoff:
duration: 5s
factor: 2
maxDuration: 3m
Flux:
spec:
interval: 1m
prune: true
wait: true
timeout: 5m
参考: references/sync-policies.md を参照してください。
プログレッシブデリバリー
ArgoCD Rollouts によるカナリアデプロイ
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-app
spec:
replicas: 5
strategy:
canary:
steps:
- setWeight: 20
- pause: { duration: 1m }
- setWeight: 50
- pause: { duration: 2m }
- setWeight: 100
ブルーグリーンデプロイ
strategy:
blueGreen:
activeService: my-app
previewService: my-app-preview
autoPromotionEnabled: false
シークレット管理
External Secrets Operator
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: db-credentials
spec:
refreshInterval: 1h
secretStoreRef:
name: aws-secrets-manager
kind: SecretStore
target:
name: db-credentials
data:
- secretKey: password
remoteRef:
key: prod/db/password
Sealed Secrets
# Encrypt secret
kubeseal --format yaml < secret.yaml > sealed-secret.yaml
# Commit sealed-secret.yaml to Git
ベストプラクティス
- 環境ごとに個別のリポジトリまたはブランチを使用する
- Git リポジトリにRBAC を実装する
- 同期の失敗に関する通知を有効にする
- カスタムリソースにヘルスチェックを使用する
- 本番環境に承認ゲートを実装する
- シークレットを Git に含めない(External Secrets を使用する)
- 構成の整理にApp of Apps パターンを使用する
- ロールバックを簡単にするためにリリースにタグを付ける
- アラートを使用して同期状態を監視する
- まずステージング環境で変更をテストする
トラブルシューティング
同期の失敗:
argocd app get my-app
argocd app sync my-app --prune
同期されていない状態:
argocd app diff my-app
argocd app sync my-app --force
関連スキル
k8s-manifest-generator- マニフェストの作成に使用helm-chart-scaffolding- アプリケーションのパッケージ化に使用
メモリプロトコル(必須)
開始前:
cat C:\dev\projects\agent-studio\.claude\context\memory\learnings.md
完了後:
- 新しいパターン ->
C:\dev\projects\agent-studio\.claude\context\memory\learnings.md - 発見した問題 ->
C:\dev\projects\agent-studio\.claude\context\memory\issues.md - 決定事項 ->
C:\dev\projects\agent-studio\.claude\context\memory\decisions.md
中断されることを前提にしてください。メモリに記録されていなければ、実行されていないのと同じです。
コメント
Markdown 対応