(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como fazer GitOps para AKS com Flux CD em Infraestrutura como Código & DevOps

João Barros 31 de October de 2026 4 min de leitura

Explica-se como configurar um fluxo GitOps para um cluster AKS usando Flux CD: útil para automatizar deployments, ter histórico no Git e permitir rollback seguro em Infraestrutura como Código & DevOps.

Pré-requisitos

  • Conta Azure com permissões para criar recursos.
  • kubectl, az, flux CLI instalados localmente.
  • Cluster AKS criado e contexto kubectl configurado.
  • Repositório Git (GitHub, Azure Repos) onde guardar manifests YAML.

Passo 1: Preparar o repositório Git para GitOps

O repositório deve conter uma estrutura clara com manifests Kubernetes (deployments, services, kustomize ou Helm charts). Aqui usamos uma pasta "clusters/production" com Kustomize para gerir sobreposições.

# Estrutura mínima
clusters/
  production/
    kustomization.yaml
    app-deployment.yaml
    app-service.yaml

Exemplo simples de kustomization.yaml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- app-deployment.yaml
- app-service.yaml

Passo 2: Instalar o Flux CD no cluster AKS

Flux CD actua como operador que sincroniza o estado do cluster com o repositório Git. Instala-se com a CLI flux e cria-se um GitRepository e um Kustomization que apontam para o repositório.

# Autenticar no AKS
az aks get-credentials --resource-group rg-aks --name myAKS

# Instalar CRDs e controllers do Flux
flux install

Passo 3: Ligar o repositório Git ao Flux

Cria-se uma fonte Git no cluster que indica o repositório e o branch. O Flux vai ler essa fonte e aplicar os recursos descritos.

# Criar GitRepository (exemplo para GitHub)
flux create source git my-app-repo \
  --url=https://github.com/MEU_USER/meu-repo.git \
  --branch=main \
  --interval=1m

# Criar Kustomization apontando para a pasta no repositório
flux create kustomization my-app \
  --source=my-app-repo \
  --path="./clusters/production" \
  --prune=true \
  --interval=5m

Passo 4: Gerir segredos e credenciais de forma segura

Não colocar segredos em texto plano no Git. Usa Flux com SOPS ou integração com Azure Key Vault para proteger segredos.

# Exemplo rápido com SOPS (local):
# 1. Gerar chave GPG, 2. encriptar ficheiro secret.yaml
sops --encrypt secret.yaml > secret.enc.yaml
# Commit de secret.enc.yaml no repositório

Passo 5: Automatizar CI para actualizar manifests

Configura um workflow (GitHub Actions, Azure Pipelines) que valida YAML e actualiza a imagem do Deployment (image tag) no repositório — o Flux deteta a mudança e faz o deploy automático.

# Exemplo mínimo de passo em GitHub Actions (yaml simplificado)
- name: Update image tag
  run: |
    yq e '.spec.template.spec.containers[0].image="myregistry/myapp:$GITHUB_SHA"' -i clusters/production/app-deployment.yaml
    git add clusters/production/app-deployment.yaml && git commit -m "ci: update image" && git push

Passo 6: Monitorizar e fazer rollback

O Flux mantém historial das sincronizações. Para monitorizar usas os controllers e kubectl. O rollback simples é reverter no Git (reverter commit) e o Flux aplica a versão anterior.

# Verificar Kustomization status
flux get kustomizations

# Reverter a alteração no Git (exemplo)
git revert 
git push
# O Flux deteta e aplica o rollback automaticamente

Verificar o resultado

Confirma que o Flux sincronizou e que os recursos estão no cluster:

# Verificar fontes e sincronização
flux get sources git
flux get kustomizations

# Verificar recursos Kubernetes
kubectl get deployments,svc -n default
kubectl describe deployment meu-app

Verifica também no repositório Git que os commits do CI aparecem e que não existem segredos em texto plano.

Conclusão

Com GitOps e Flux CD para AKS obténs deployments declarativos, auditáveis e rollbacks simples, integrando Infraestrutura como Código & DevOps. Próximos passos: integrar Azure Key Vault para segredos, automatizar testes de integração antes do push e usar policies para segurança. Dica: começa por ambientes de staging para validar o fluxo antes de production — que parte queres automatizar a seguir?