Use Cases (Atualizado: 02/06/2026)

Kubernetes com Claude Code: Deployment, Service, Ingress e rollback

Guia prático para criar manifests Kubernetes seguros com Claude Code, probes, recursos, CI e rollback.

Kubernetes com Claude Code: Deployment, Service, Ingress e rollback

Gere YAML que possa ser revisado

Kubernetes executa aplicações em contêineres dentro de um cluster, mas o primeiro desafio para iniciantes é a quantidade de conceitos que aparecem ao mesmo tempo: Deployment, Service, Ingress, ConfigMap, Secret, probes, requests, limits, rollout e rollback. Se você pedir ao Claude Code apenas “gere YAML de Kubernetes”, ele pode entregar algo que parece bom, mas usa latest, não tem readinessProbe, coloca um Secret de exemplo no Git ou expõe a aplicação de forma inadequada.

Este guia usa Claude Code como ferramenta para criar uma base segura e revisável. O exemplo usa nginx:1.27-alpine e uma página HTML fornecida por ConfigMap. Assim, você consegue testar em kind, minikube, Docker Desktop Kubernetes ou um cluster temporário sem criar uma imagem privada. Depois, substitua a imagem, os caminhos de health check e o Ingress pelos valores da sua aplicação.

Use a documentação oficial como base: Deployments, Services, Ingress, probes, gerenciamento de recursos, ConfigMap, Secret e kubectl rollout. Para continuar, veja também integração Docker, CI/CD, code review e permissões.

Casos de uso reais

O melhor começo não é uma plataforma grande. É uma unidade pequena que você consegue aplicar, verificar, quebrar de propósito e recuperar.

CasoObjetivoO que pedir ao Claude Code
Primeiro app internoColocar uma aplicação web atrás de um Service estávelDeployment, ClusterIP Service, probes, requests e limits
Treinamento ou workshopFazer todos seguirem o mesmo roteiroManifest com namespace, comandos de verificação e falha controlada
Revisão antes de produçãoEncontrar configurações perigosas antes do releaseSelectors, Secret, probes, Ingress e rollback
Gate de Pull RequestBloquear erros de infraestrutura cedodry-run em CI e checklist de revisão

Esse conteúdo também ajuda na monetização porque o leitor quer evitar um erro real, não apenas aprender uma definição. Por isso o ClaudeCodeLab conecta o guia a materiais gratuitos, templates e treinamento e consultoria Claude Code para equipes que querem adaptar o fluxo ao próprio repositório.

Prompt com restrições explícitas

Em Kubernetes, diga também o que não deve ser criado. Sem limites, o modelo pode escolher LoadBalancer, inventar Secrets, criar RBAC de cluster ou assumir um Ingress Controller diferente do seu.

Crie um exemplo de deploy Kubernetes para iniciantes que possa ser testado localmente.

Requisitos:
- namespace claude-k8s-demo
- usar nginx:1.27-alpine, sem imagem privada
- incluir ConfigMap com uma página HTML
- Deployment com replicas 2, RollingUpdate, readinessProbe, livenessProbe e resources
- Service do tipo ClusterIP
- Ingress opcional com host claude-k8s.local
- explicar política de Secret sem gerar valores reais
- incluir comandos de apply, rollout status, port-forward, falha e rollback

Restrições:
- não usar NodePort nem LoadBalancer
- não escrever valores reais de Secret em YAML
- não criar ClusterRole, ClusterRoleBinding ou comandos destrutivos

Esse prompt torna a revisão objetiva: labels, selectors, probes, portas, resources e segredos. Se a equipe repete isso, coloque as regras estáveis em CLAUDE.md; veja boas práticas de CLAUDE.md.

Manifest pronto para copiar

Salve como k8s/claude-k8s-demo.yaml. O Ingress só funciona com controller instalado, mas o Service funciona via port-forward.

apiVersion: v1
kind: Namespace
metadata:
  name: claude-k8s-demo
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-page
  namespace: claude-k8s-demo
data:
  APP_ENV: "demo"
  index.html: |
    <!doctype html>
    <html lang="pt">
      <head><meta charset="utf-8" /><title>Claude Code Kubernetes Demo</title></head>
      <body><h1>Claude Code Kubernetes Demo</h1><p>Deployment, Service, ConfigMap, probes are running.</p></body>
    </html>
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-web
  namespace: claude-k8s-demo
  labels:
    app: demo-web
spec:
  replicas: 2
  revisionHistoryLimit: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: demo-web
  template:
    metadata:
      labels:
        app: demo-web
    spec:
      containers:
        - name: nginx
          image: nginx:1.27-alpine
          ports:
            - name: http
              containerPort: 80
          resources:
            requests:
              cpu: "50m"
              memory: "64Mi"
            limits:
              cpu: "250m"
              memory: "128Mi"
          readinessProbe:
            httpGet:
              path: /
              port: http
            initialDelaySeconds: 3
            periodSeconds: 5
          livenessProbe:
            httpGet:
              path: /
              port: http
            initialDelaySeconds: 10
            periodSeconds: 10
          volumeMounts:
            - name: demo-page
              mountPath: /usr/share/nginx/html/index.html
              subPath: index.html
              readOnly: true
      volumes:
        - name: demo-page
          configMap:
            name: demo-page
---
apiVersion: v1
kind: Service
metadata:
  name: demo-web
  namespace: claude-k8s-demo
spec:
  type: ClusterIP
  selector:
    app: demo-web
  ports:
    - name: http
      port: 80
      targetPort: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-web
  namespace: claude-k8s-demo
spec:
  ingressClassName: nginx
  rules:
    - host: claude-k8s.local
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: demo-web
                port:
                  name: http

O erro mais comum é desalinhamento entre selector.matchLabels, labels do template e selector do Service. Peça ao Claude Code para revisar esses três pontos juntos.

Verificação local

Confirme o cluster com kubectl cluster-info e rode:

kubectl apply -f k8s/claude-k8s-demo.yaml
kubectl -n claude-k8s-demo rollout status deployment/demo-web
kubectl -n claude-k8s-demo get pods -l app=demo-web
kubectl -n claude-k8s-demo get service demo-web
kubectl -n claude-k8s-demo port-forward service/demo-web 8080:80

Em outro terminal:

curl http://localhost:8080/

Ingress deve ser o último passo da investigação. Primeiro prove que Pod e Service funcionam.

kubectl -n claude-k8s-demo get ingress demo-web
kubectl -n claude-k8s-demo describe ingress demo-web

ConfigMap, Secret e rollback

ConfigMap é para configuração não sensível. Secret é para valores sensíveis, mas um Secret em YAML com base64 não deve ir para Git. Base64 não é criptografia. Em produção, use Secret Manager, External Secrets, Sealed Secrets, SOPS ou o processo vault aprovado pela equipe.

Para teste local:

kubectl -n claude-k8s-demo create secret generic demo-api-secret \
  --from-literal=API_TOKEN='replace-me-locally' \
  --dry-run=client \
  -o yaml > secret.local.yaml

kubectl apply -f secret.local.yaml

Pratique rollout e falha:

kubectl -n claude-k8s-demo set image deployment/demo-web nginx=nginx:1.27-alpine
kubectl -n claude-k8s-demo rollout status deployment/demo-web
kubectl -n claude-k8s-demo rollout history deployment/demo-web
kubectl -n claude-k8s-demo set image deployment/demo-web nginx=nginx:not-a-real-tag
kubectl -n claude-k8s-demo rollout status deployment/demo-web --timeout=30s
kubectl -n claude-k8s-demo rollout undo deployment/demo-web

Rollback de Deployment não reverte automaticamente ConfigMap, Secret, migrações, DNS ou feature flags. O runbook precisa dizer o que volta e o que exige outro procedimento.

CI, armadilhas e próximo passo

Use pelo menos um dry-run em Pull Request:

name: Kubernetes manifest review
on:
  pull_request:
    paths:
      - "k8s/**"
jobs:
  dry-run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: azure/setup-kubectl@v4
        with:
          version: "v1.30.0"
      - run: kubectl apply --dry-run=client -f k8s/

As falhas recorrentes são latest em produção, confundir readiness com liveness, esquecer resources, achar que base64 protege segredos, debugar Ingress antes do Service e publicar saída do Claude Code sem review humano. A defesa é documentação oficial, CI, verificação local, prompt com restrições e revisão crítica.

Este exemplo é pequeno de propósito. Em produção entram build Docker, tags imutáveis, TLS, secrets, observabilidade, RBAC, CI/CD e resposta a incidentes. Desenvolvedores individuais podem começar pelo cheatsheet gratuito. Equipes podem usar treinamento e consultoria Claude Code para adaptar prompts, CLAUDE.md, gates de CI e exercícios de rollback ao repositório real. O fluxo verificado aqui é apply, rollout status, Pods, port-forward, curl, imagem inválida, erro visível e rollout undo.

#Claude Code #Kubernetes #DevOps #container orchestration #infrastructure
Grátis

PDF grátis: cheatsheet do Claude Code

Informe seu e-mail e baixe uma página com comandos, hábitos de revisão e workflows seguros.

Cuidamos dos seus dados e não enviamos spam.

Masa

Sobre o autor

Masa

Engenheiro focado em workflows práticos com Claude Code.