mcpField
G
gitops-workflow

gitops-workflow

github.com/oimiragieoクラウド・DevOps4450 回インストール17 週間前に更新
リポジトリ

gitops-workflow について

ArgoCD または Flux を使う Kubernetes チーム向けの GitOps 実装ガイドです。デプロイ設定から同期ポリシー、段階的リリース、シークレット管理まで扱います。

主な機能

  1. 01ArgoCD と Flux のセットアップ
  2. 02Git 駆動のデプロイ
  3. 03自動同期ポリシー
  4. 04カナリア・ブルーグリーンリリース
  5. 05シークレット管理方式

活用シーン

  1. 01Kubernetes クラスターへの GitOps 導入
  2. 02Git からのアプリデプロイ自動化
  3. 03マルチクラスターリリースの管理
  4. 04段階的リリースと同期の設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oimiragieo/agent-studio --skill gitops-workflow

インストール後、Claude Code で/gitops-workflowを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

commands/
gitops-workflow.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
argocd-setup.md
research-requirements.md
sync-policies.md
rules/
gitops-workflow.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

詳細

GitOps ワークフロー

ArgoCD と Flux を使用して Kubernetes のデプロイを自動化する GitOps ワークフローの実装ガイドです。

目的

OpenGitOps の原則に従い、ArgoCD または Flux CD を使用して、宣言型の Git ベースの Kubernetes 向け継続的デリバリーを実装します。

このスキルを使用する場面

  • Kubernetes クラスターに GitOps をセットアップする
  • Git からのアプリケーションデプロイを自動化する
  • プログレッシブデリバリー戦略を実装する
  • マルチクラスターのデプロイを管理する
  • 自動同期ポリシーを設定する
  • GitOps でのシークレット管理をセットアップする

OpenGitOps の原則

  1. 宣言型 - システム全体を宣言型で記述します
  2. バージョン管理され、変更不可 - 望ましい状態を Git に保存します
  3. 自動的にプルされる - ソフトウェアエージェントが望ましい状態をプルします
  4. 継続的に調整される - エージェントが実際の状態と望ましい状態を調整します

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

ベストプラクティス

  1. 環境ごとに個別のリポジトリまたはブランチを使用する
  2. Git リポジトリにRBAC を実装する
  3. 同期の失敗に関する通知を有効にする
  4. カスタムリソースにヘルスチェックを使用する
  5. 本番環境に承認ゲートを実装する
  6. シークレットを Git に含めない(External Secrets を使用する)
  7. 構成の整理にApp of Apps パターンを使用する
  8. ロールバックを簡単にするためにリリースにタグを付ける
  9. アラートを使用して同期状態を監視する
  10. まずステージング環境で変更をテストする

トラブルシューティング

同期の失敗:

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

中断されることを前提にしてください。メモリに記録されていなければ、実行されていないのと同じです。

コメント