Gitops Workflow
Unverified●21/40Claude Code◐PartialHas SKILL.md but declares no allowed-tools — Claude Code will ask for permission each time
Cursor·UnknownWe have not crawled the repo tree, so we will not guess
Codex·UnknownWe have not crawled the repo tree, so we will not guess
Gemini CLI·UnknownThe spec defines no detection rule for Gemini
Copilot·UnknownWe have not crawled the repo tree, so we will not guess
npx agentalley add gitops-workflowWho is stuck, and on what
Implement GitOps workflows with ArgoCD and Flux for automated, declarative Kubernetes deployments with continuous reconciliation. Use when implementing GitOps practices, automating Kubernetes deployments, or setting up declarative infrastructure management.
The whole source
Frontmatter — 2 properties
| name | gitops-workflow |
|---|---|
| description | Implement GitOps workflows with ArgoCD and Flux for automated, declarative Kubernetes deployments with continuous reconciliation. Use when implementing GitOps practices, automating Kubernetes deployments, or setting up declarative infrastructure management. |
| 1 | --- |
| 2 | name: gitops-workflow |
| 3 | description: Implement GitOps workflows with ArgoCD and Flux for automated, declarative Kubernetes deployments with continuous reconciliation. Use when implementing GitOps practices, automating Kubernetes deployments, or setting up declarative infrastructure management. |
| 4 | ---A5 — No allowed-tools declared — no way to tell what this skill may touch |
| 5 | |
| 6 | # GitOps Workflow |
| 7 | |
| 8 | Complete guide to implementing GitOps workflows with ArgoCD and Flux for automated Kubernetes deployments. |
| 9 | |
| 10 | ## Purpose |
| 11 | |
| 12 | Implement declarative, Git-based continuous delivery for Kubernetes using ArgoCD or Flux CD, following OpenGitOps principles. |
| 13 | |
| 14 | ## When to Use This Skill |
| 15 | |
| 16 | - Set up GitOps for Kubernetes clusters |
| 17 | - Automate application deployments from Git |
| 18 | - Implement progressive delivery strategies |
| 19 | - Manage multi-cluster deployments |
| 20 | - Configure automated sync policies |
| 21 | - Set up secret management in GitOps |
| 22 | |
| 23 | ## OpenGitOps Principles |
| 24 | |
| 25 | 1. **Declarative** - Entire system described declaratively |
| 26 | 2. **Versioned and Immutable** - Desired state stored in Git |
| 27 | 3. **Pulled Automatically** - Software agents pull desired state |
| 28 | 4. **Continuously Reconciled** - Agents reconcile actual vs desired state |
| 29 | |
| 30 | ## ArgoCD Setup |
| 31 | |
| 32 | ### 1. Installation |
| 33 | |
| 34 | ```bash |
| 35 | # Create namespace |
| 36 | kubectl create namespace argocd |
| 37 | |
| 38 | # Install ArgoCD |
| 39 | kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml |
| 40 | |
| 41 | # Get admin password |
| 42 | kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d |
| 43 | ``` |
| 44 | |
| 45 | **Reference:** See `references/argocd-setup.md` for detailed setup |
| 46 | |
| 47 | ### 2. Repository Structure |
| 48 | |
| 49 | ``` |
| 50 | gitops-repo/ |
| 51 | ├── apps/ |
| 52 | │ ├── production/ |
| 53 | │ │ ├── app1/ |
| 54 | │ │ │ ├── kustomization.yaml |
| 55 | │ │ │ └── deployment.yaml |
| 56 | │ │ └── app2/ |
| 57 | │ └── staging/ |
| 58 | ├── infrastructure/ |
| 59 | │ ├── ingress-nginx/ |
| 60 | │ ├── cert-manager/ |
| 61 | │ └── monitoring/ |
| 62 | └── argocd/ |
| 63 | ├── applications/ |
| 64 | └── projects/ |
| 65 | ``` |
| 66 | |
| 67 | ### 3. Create Application |
| 68 | |
| 69 | ```yaml |
| 70 | # argocd/applications/my-app.yaml |
| 71 | apiVersion: argoproj.io/v1alpha1 |
| 72 | kind: Application |
| 73 | metadata: |
| 74 | name: my-app |
| 75 | namespace: argocd |
| 76 | spec: |
| 77 | project: default |
| 78 | source: |
| 79 | repoURL: https://github.com/org/gitops-repo |
| 80 | targetRevision: main |
| 81 | path: apps/production/my-app |
| 82 | destination: |
| 83 | server: https://kubernetes.default.svc |
| 84 | namespace: production |
| 85 | syncPolicy: |
| 86 | automated: |
| 87 | prune: true |
| 88 | selfHeal: true |
| 89 | syncOptions: |
| 90 | - CreateNamespace=true |
| 91 | ``` |
| 92 | |
| 93 | ### 4. App of Apps Pattern |
| 94 | |
| 95 | ```yaml |
| 96 | apiVersion: argoproj.io/v1alpha1 |
| 97 | kind: Application |
| 98 | metadata: |
| 99 | name: applications |
| 100 | namespace: argocd |
| 101 | spec: |
| 102 | project: default |
| 103 | source: |
| 104 | repoURL: https://github.com/org/gitops-repo |
| 105 | targetRevision: main |
| 106 | path: argocd/applications |
| 107 | destination: |
| 108 | server: https://kubernetes.default.svc |
| 109 | namespace: argocd |
| 110 | syncPolicy: |
| 111 | automated: {} |
| 112 | ``` |
| 113 | |
| 114 | ## Flux CD Setup |
| 115 | |
| 116 | ### 1. Installation |
| 117 | |
| 118 | ```bash |
| 119 | # Install Flux CLI |
| 120 | curl -s https://fluxcd.io/install.sh | sudo bashA1 — Downloads and executes without reading firstA4 — This skill pulls in web or user content but never says to treat that content as data. A signal, not proof. |
| 121 | |
| 122 | # Bootstrap Flux |
| 123 | flux bootstrap github \ |
| 124 | --owner=org \ |
| 125 | --repository=gitops-repo \ |
| 126 | --branch=main \ |
| 127 | --path=clusters/production \ |
| 128 | --personal |
| 129 | ``` |
| 130 | |
| 131 | ### 2. Create GitRepository |
| 132 | |
| 133 | ```yaml |
| 134 | apiVersion: source.toolkit.fluxcd.io/v1 |
| 135 | kind: GitRepository |
| 136 | metadata: |
| 137 | name: my-app |
| 138 | namespace: flux-system |
| 139 | spec: |
| 140 | interval: 1m |
| 141 | url: https://github.com/org/my-app |
| 142 | ref: |
| 143 | branch: main |
| 144 | ``` |
| 145 | |
| 146 | ### 3. Create Kustomization |
| 147 | |
| 148 | ```yaml |
| 149 | apiVersion: kustomize.toolkit.fluxcd.io/v1 |
| 150 | kind: Kustomization |
| 151 | metadata: |
| 152 | name: my-app |
| 153 | namespace: flux-system |
| 154 | spec: |
| 155 | interval: 5m |
| 156 | path: ./deploy |
| 157 | prune: true |
| 158 | sourceRef: |
| 159 | kind: GitRepository |
| 160 | name: my-app |
| 161 | ``` |
| 162 | |
| 163 | ## Sync Policies |
| 164 | |
| 165 | ### Auto-Sync Configuration |
| 166 | |
| 167 | **ArgoCD:** |
| 168 | |
| 169 | ```yaml |
| 170 | syncPolicy: |
| 171 | automated: |
| 172 | prune: true # Delete resources not in Git |
| 173 | selfHeal: true # Reconcile manual changes |
| 174 | allowEmpty: false |
| 175 | retry: |
| 176 | limit: 5 |
| 177 | backoff: |
| 178 | duration: 5s |
| 179 | factor: 2 |
| 180 | maxDuration: 3m |
| 181 | ``` |
| 182 | |
| 183 | **Flux:** |
| 184 | |
| 185 | ```yaml |
| 186 | spec: |
| 187 | interval: 1m |
| 188 | prune: true |
| 189 | wait: true |
| 190 | timeout: 5m |
| 191 | ``` |
| 192 | |
| 193 | **Reference:** See `references/sync-policies.md` |
| 194 | |
| 195 | ## Progressive Delivery |
| 196 | |
| 197 | ### Canary Deployment with ArgoCD Rollouts |
| 198 | |
| 199 | ```yaml |
| 200 | apiVersion: argoproj.io/v1alpha1 |
| 201 | kind: Rollout |
| 202 | metadata: |
| 203 | name: my-app |
| 204 | spec: |
| 205 | replicas: 5 |
| 206 | strategy: |
| 207 | canary: |
| 208 | steps: |
| 209 | - setWeight: 20 |
| 210 | - pause: { duration: 1m } |
| 211 | - setWeight: 50 |
| 212 | - pause: { duration: 2m } |
| 213 | - setWeight: 100 |
| 214 | ``` |
| 215 | |
| 216 | ### Blue-Green Deployment |
| 217 | |
| 218 | ```yaml |
| 219 | strategy: |
| 220 | blueGreen: |
| 221 | activeService: my-app |
| 222 | previewService: my-app-preview |
| 223 | autoPromotionEnabled: false |
| 224 | ``` |
| 225 | |
| 226 | ## Secret Management |
| 227 | |
| 228 | ### External Secrets Operator |
| 229 | |
| 230 | ```yaml |
| 231 | apiVersion: external-secrets.io/v1beta1 |
| 232 | kind: ExternalSecret |
| 233 | metadata: |
| 234 | name: db-credentials |
| 235 | spec: |
| 236 | refreshInterval: 1h |
| 237 | secretStoreRef: |
| 238 | name: aws-secrets-manager |
| 239 | kind: SecretStore |
| 240 | target: |
| 241 | name: db-credentials |
| 242 | data: |
| 243 | - secretKey: password |
| 244 | remoteRef: |
| 245 | key: prod/db/password |
| 246 | ``` |
| 247 | |
| 248 | ### Sealed Secrets |
| 249 | |
| 250 | ```bash |
| 251 | # Encrypt secret |
| 252 | kubeseal --format yaml < secret.yaml > sealed-secret.yaml |
| 253 | |
| 254 | # Commit sealed-secret.yaml to Git |
| 255 | ``` |
| 256 | |
| 257 | ## Best Practices |
| 258 | |
| 259 | 1. **Use separate repos or branches** for different environments |
| 260 | 2. **Implement RBAC** for Git repositories |
| 261 | 3. **Enable notifications** for sync failures |
| 262 | 4. **Use health checks** for custom resources |
| 263 | 5. **Implement approval gates** for production |
| 264 | 6. **Keep secrets out of Git** (use External Secrets) |
| 265 | 7. **Use App of Apps pattern** for organization |
| 266 | 8. **Tag releases** for easy rollback |
| 267 | 9. **Monitor sync status** with alerts |
| 268 | 10. **Test changes** in staging first |
| 269 | |
| 270 | ## Troubleshooting |
| 271 | |
| 272 | **Sync failures:** |
| 273 | |
| 274 | ```bash |
| 275 | argocd app get my-app |
| 276 | argocd app sync my-app --prune |
| 277 | ``` |
| 278 | |
| 279 | **Out of sync status:** |
| 280 | |
| 281 | ```bash |
| 282 | argocd app diff my-app |
| 283 | argocd app sync my-app --force |
| 284 | ``` |
| 285 | |
| 286 | ## Related Skills |
| 287 | |
| 288 | - `k8s-manifest-generator` - For creating manifests |
| 289 | - `helm-chart-scaffolding` - For packaging applications |
| 290 |
Reviews
Installed this one?Write the first review and take the Trailblazer badge.
Alternatives
Paper Poster (HTML): measurement-gated poster generationDEFAULT poster pipeline — build an academic conference poster (ICML/NeurIPS/ICLR/CVPR/...) as a single HTML/CSS file with measurement-driven hard gates, real paper figures, a two-hue design-token system, and print-ready PDF via headless Chromium. Use when the●····●36/40Brand Monitoring 📡Brand monitoring tool for tracking mentions across social media platforms. Monitor Reddit, Google News, YouTube, and DuckDuckGo for brand mentions. Includes sentiment analysis, trend tracking, crisis detection, and competitor comparison. No API key required fo◐····●34/40Spark Memory & Thermal OpsManage unified memory and thermals during long-running ML jobs on NVIDIA DGX Spark. Use when planning memory headroom for a training run on GB10, when a job OOMs on unified memory, or when monitoring temperature and power during multi-hour training.◐····●32/40Secrets ManagementImplement secure secrets management for CI/CD pipelines using Vault, AWS Secrets Manager, or native platform solutions. Use when handling sensitive credentials, rotating secrets, or securing CI/CD environments.◐····●32/40