Kubernetes Deployment YAML Generator & Manifest Builder

Kubernetes Deployment YAML Generator & Manifest Builder

Crie manifestos de Kubernetes Deployment prontos para produção com réplicas de pods, limites de recursos (requests/limits), sondas de saúde e estratégias de rolling update.

Predefinições:
Entrada
Pods máximos acima do número de réplicas desejado
Definir como 0 para rollouts 100% sem tempo de inatividade
:
:
:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-api-gateway
  namespace: production
  labels:
    app: "web-api-gateway"
    tier: "backend"
    env: "production"
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "8080"
    prometheus.io/path: "/metrics"
spec:
  replicas: 3
  selector:
    matchLabels:
      app: "web-api-gateway"
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 0
  minReadySeconds: 5
  template:
    metadata:
      labels:
        app: "web-api-gateway"
        tier: "backend"
        env: "production"
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "8080"
        prometheus.io/path: "/metrics"
    spec:
      serviceAccountName: web-api-sa
      securityContext:
        runAsNonRoot: true
        runAsUser: 10001
        runAsGroup: 10001
      containers:
      - name: api-server
        image: ghcr.io/acme-corp/api-gateway:v2.4.1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 8080
          protocol: TCP
        - name: metrics
          containerPort: 9090
          protocol: TCP
        securityContext:
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
          capabilities:
            drop:
            - ALL
        resources:
          requests:
            cpu: "250m"
            memory: "256Mi"
            ephemeral-storage: "50Mi"
          limits:
            cpu: "1000m"
            memory: "512Mi"
            ephemeral-storage: "200Mi"
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
          initialDelaySeconds: 15
          periodSeconds: 10
          timeoutSeconds: 3
          successThreshold: 1
          failureThreshold: 3
        readinessProbe:
          httpGet:
            path: /ready
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5
          timeoutSeconds: 2
          successThreshold: 1
          failureThreshold: 2
        env:
        - name: NODE_ENV
          value: "production"
        - name: PORT
          value: "8080"
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-credentials
              key: password
        - name: CONFIG_JSON
          valueFrom:
            configMapKeyRef:
              name: app-config
              key: settings.json
        volumeMounts:
        - name: tmp-cache
          mountPath: /tmp
      volumes:
      - name: tmp-cache
        emptyDir: {}
      nodeSelector:
        kubernetes.io/os: "linux"
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - "web-api-gateway"
              topologyKey: "kubernetes.io/hostname"
Replicas & Rollout StrategyRollingUpdate
3 Réplicas de Pod

Excesso: 25% | Máx. indisponível: 0

Resource Quotas & AllocationGarantido
CPU: 250m / 1000m

Mem: 256Mi / 512Mi

SegurançaGrau A+
100 / 100 Prontidão

Sondas: 2 /3 ativas

Execução Local Zero-Knowledge

Todo o processamento, análise e geração de código ocorrem estritamente na memória do seu navegador. Zero uploads para servidores externos.

Motor Reativo de Submilissegundos

All data payloads remain strictly local with zero external server communication.

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Gerador de YAML e Construtor de Manifestos Kubernetes Deployment — Guia de referência

Crie manifestos de Kubernetes Deployment prontos para produção com réplicas de pods, limites de recursos (requests/limits), sondas de saúde e estratégias de rolling update.

Parâmetros principais e controles

spec.replicasinteger

Número desejado de instâncias de pods executadas concorrentemente nos nós do cluster.

Padrão: 1
spec.template.spec.containers[*].imagestring

Repositório e tag da imagem do contêiner OCI/Docker (ex: 'nginx:1.25-alpine').

Padrão: Obrigatório
spec.template.spec.containers[*].resourcesobject

Requisições (requests: alocação mínima garantida) e limites (limits: teto máximo antes de throttling ou OOMKill) de CPU e memória.

Padrão: Opcional (Altamente recomendado)
spec.strategyobject

Estratégia de atualização do deploy: 'RollingUpdate' com zero downtime ou 'Recreate' com substituição total simultânea.

Padrão: RollingUpdate
spec.template.spec.containers[*].livenessProbeobject

Sonda de verificação que reinicia automaticamente o contêiner em caso de travamentos (deadlocks).

Padrão: Opcional

Dicas profissionais e melhores práticas

Declare requests para assegurar o

Declare requests para assegurar o agendamento no nó e limits para prevenir esgotamento de memória no host. Igualar request e limit de memória garante a classe QoS Guaranteed.

Configure maxUnavailable

Configure maxUnavailable: 0 e maxSurge: '25%' (ou 1) para manter a capacidade de tráfego inalterada durante implantações contínuas em ambientes de produção.

Use readiness probes para aguardar

Use readiness probes para aguardar migrações de banco e aquecimento de cache antes de direcionar tráfego, reservando liveness probes estritamente para travamentos irrecuperáveis do processo.

Fixe tags de versão semântica ou

Fixe tags de versão semântica ou hashes imutáveis SHA-256 no campo de imagem para garantir deploys previsíveis e rollbacks imediatos em caso de falha.

Problemas comuns e solução de problemas

CrashLoopBackOff ou OOMKilled (Exit Code 137)

O contêiner encerra inesperadamente na inicialização ou excede o limite de memória configurado (limits.memory), sendo terminado pelo kernel do Linux. Inspecione com kubectl describe pod <name> e logs --previous; aumente resources.limits.memory.

Atualização progressiva travada em estado 'Pending'

Novos pods não conseguem ser alocados porque os resources.requests superam a capacidade disponível nos nós do cluster. Verifique a ocupação dos nós com kubectl describe nodes ou habilite o Cluster Autoscaler.

Erro de imutabilidade de seletor (Selector is immutable)

O Kubernetes impede a alteração de spec.selector em Deployments já criados. Exclua o deployment mantendo os pods em execução (kubectl delete deploy <name> --cascade=orphan) e aplique o novo manifesto.

Perguntas frequentes (FAQ)

Qual a diferença entre um Deployment, um StatefulSet e um DaemonSet?▼

O Deployment gerencia cargas de trabalho sem estado (stateless) onde réplicas são totalmente descartáveis e intercambiáveis. O StatefulSet oferece nomes de rede previsíveis e discos persistentes para bancos de dados. O DaemonSet garante exatamente um pod em cada nó do cluster.

Por que priorizar RollingUpdate em vez de Recreate?▼

O RollingUpdate sobe novas réplicas gradualmente e só desativa pods antigos após as novas instâncias passarem na checagem de prontidão, evitando quedas de serviço. O Recreate derruba todas as réplicas ativas antes de iniciar as novas, causando downtime inevitável.

Como o Kubernetes associa os Pods a um Deployment?▼

Através de seletores de rótulos (spec.selector.matchLabels). O controlador do Deployment monitora continuamente os pods cujos metadados (spec.template.metadata.labels) coincidem com o seletor para garantir o número exato de réplicas configuradas.

Para que serve um Pod Disruption Budget (PDB) em relação a um Deployment?▼

Enquanto o Deployment define a quantidade de réplicas desejada, o PDB estabelece o número mínimo ou percentual de pods que devem permanecer ativos durante manutenções voluntárias no cluster, como drenagem de nós ou atualizações de versão.

Ferramentas e utilitários relacionados

Todas as ferramentas →