Pular para o conteúdo
Tecnologia

Deploy de Node.js no Kubernetes exige Dockerfile otimizado, manifests corretos e configuração de secrets. Tutorial passo a passo completo.

Conceitos Principais

Multi-Stage Dockerfile

Stage build: npm install + build. Stage production: Alpine + apenas node_modules prod. Imagem 150MB ao invés de 1GB.

Deployment YAML

Define replicas, imagem, ports, env vars. Rolling update strategy: maxSurge 1, maxUnavailable 0. Zero downtime garantido.

Service YAML

ClusterIP para comunicação interna. LoadBalancer para acesso externo. Selector matcheia labels do Deployment.

Secrets & ConfigMaps

Secret: DATABASE_URL, JWT_SECRET. ConfigMap: NODE_ENV, LOG_LEVEL. Montados como env vars ou files.

Passo a Passo

  1. Otimize Dockerfile: Multi-stage: FROM node:18 AS builder, npm ci, build. FROM node:18-alpine, COPY --from=builder. User non-root. HEALTHCHECK endpoint /health.
  2. Push para Registry: Build: docker build -t seu-registry/app:v1.0 .. Push: docker push. K8s puxa de registry (Docker Hub, GCR, ECR).
  3. Crie Secrets: kubectl create secret generic app-secrets --from-literal=DB_URL=postgres://.... Ou YAML: kind Secret, data com base64.
  4. Deploy App: deployment.yaml: replicas 3, image seu-registry/app:v1.0, envFrom secretRef app-secrets. kubectl apply -f deployment.yaml.
  5. Exponha Service: service.yaml: type LoadBalancer, port 80 targetPort 3000. kubectl apply -f service.yaml. Obtenha IP: kubectl get svc.

Boas Praticas

Recomendacoes

• Sempre versione imagens (não latest)

• Configure readinessProbe e livenessProbe

• Use HorizontalPodAutoscaler para auto-scale

• Resource requests/limits para cada Pod

Erros Comuns

Evite estes erros

• Não configurar health checks (restart loops)

• Hardcodar secrets no YAML

• Não limitar recursos (um Pod mata cluster)

Checklist

  • Dockerfile multi-stage criado
  • Imagem pushed para registry
  • Secrets configurados
  • Deployment com 3+ réplicas
  • Service com LoadBalancer
  • Health checks funcionando