Skip to content
Back to skills

Gitops Workflow

ASecurity

Guia completo para implementar workflows GitOps com ArgoCD e Flux para deployments automatizados em Kubernetes.

  • 11 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 8, 2026
devopsgobashkubernetesawsgitapi

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumUses curl or wget to download content

Pro scans all 3 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add artubss/SKILLS-CLAUDE-CODE --skill gitops-workflow --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gitops Workflow?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gitops Workflow
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/artubss-gitops-workflow/badge)](https://www.skillsdirectory.com/skills/artubss-gitops-workflow)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gitops-workflow
description: "Guia completo para implementar workflows GitOps com ArgoCD e Flux para deployments automatizados em Kubernetes."
risk: critical
source: community
date_added: "2026-02-27"
---

# Workflow GitOps

Guia completo para implementar workflows GitOps com ArgoCD e Flux para deployments automatizados em Kubernetes.

## Propósito

Implementar entrega contínua declarativa baseada em Git para Kubernetes usando ArgoCD ou Flux CD, seguindo os princípios do OpenGitOps.

## Use essa habilidade quando

- Configurar GitOps para clusters Kubernetes
- Automatizar deployments de aplicações a partir do Git
- Implementar estratégias de entrega progressiva
- Gerenciar deployments multi-cluster
- Configurar políticas de sincronização automática
- Configurar gerenciamento de secrets em GitOps

## Não use essa habilidade quando

- Você precisa de um deployment manual único
- Você não consegue gerenciar acesso ao cluster ou permissões de repositório
- Você não está fazendo deploy para Kubernetes

## Instruções

1. Defina layout de repositório e convenções de estado desejado.
2. Instale ArgoCD ou Flux e conecte clusters.
3. Configure políticas de sincronização, ambientes e fluxo de promoção.
4. Valide rollbacks e manipulação de secrets.

## Segurança

- Evite auto-sync para produção sem aprovações.
- Mantenha secrets fora do Git e use sealed secrets ou gerenciadores de secrets externos.

## Princípios do OpenGitOps

1. **Declarativo** - Sistema inteiro descrito declarativamente
2. **Versionado e Imutável** - Estado desejado armazenado em Git
3. **Puxado Automaticamente** - Agentes de software puxam estado desejado
4. **Continuamente Reconciliado** - Agentes reconciliam estado atual vs estado desejado

## Configuração do ArgoCD

### 1. Instalação

```bash
# 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
```

**Referência:** Consulte `references/argocd-setup.md` para configuração detalhada

### 2. Estrutura de Repositório

```
gitops-repo/
├── apps/
│   ├── production/
│   │   ├── app1/
│   │   │   ├── kustomization.yaml
│   │   │   └── deployment.yaml
│   │   └── app2/
│   └── staging/
├── infrastructure/
│   ├── ingress-nginx/
│   ├── cert-manager/
│   └── monitoring/
└── argocd/
    ├── applications/
    └── projects/
```

### 3. Criar Aplicação

```yaml
# 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. Padrão App of Apps

```yaml
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: {}
```

## Configuração do Flux CD

### 1. Instalação

```bash
# 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. Criar GitRepository

```yaml
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. Criar Kustomization

```yaml
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
```

## Políticas de Sincronização

### Configuração de Auto-Sync

**ArgoCD:**
```yaml
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:**
```yaml
spec:
  interval: 1m
  prune: true
  wait: true
  timeout: 5m
```

**Referência:** Consulte `references/sync-policies.md`

## Entrega Progressiva

### Canary Deployment com ArgoCD Rollouts

```yaml
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
```

### Deployment Blue-Green

```yaml
strategy:
  blueGreen:
    activeService: my-app
    previewService: my-app-preview
    autoPromotionEnabled: false
```

## Gerenciamento de Secrets

### External Secrets Operator

```yaml
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

```bash
# Encrypt secret
kubeseal --format yaml < secret.yaml > sealed-secret.yaml

# Commit sealed-secret.yaml to Git
```

## Melhores Práticas

1. **Use repositórios ou branches separados** para diferentes ambientes
2. **Implemente RBAC** para repositórios Git
3. **Habilite notificações** para falhas de sincronização
4. **Use health checks** para recursos customizados
5. **Implemente approval gates** para produção
6. **Mantenha secrets fora do Git** (use External Secrets)
7. **Use padrão App of Apps** para organização
8. **Marque releases com tags** para rollback fácil
9. **Monitore status de sincronização** com alertas
10. **Teste mudanças** em staging primeiro

## Solução de Problemas

**Falhas de sincronização:**
```bash
argocd app get my-app
argocd app sync my-app --prune
```

**Status fora de sincronização:**
```bash
argocd app diff my-app
argocd app sync my-app --force
```

## Habilidades Relacionadas

- `k8s-manifest-generator` - Para criar manifests
- `helm-chart-scaffolding` - Para empacotar aplicações

Files in this skill

  • SKILL.md6.6 KB
  • references/argocd-setup.md2.8 KB
  • references/sync-policies.md2.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…