Go e Kubernetes: Deploy de Containers
Guia completo para fazer deploy de aplicações Go em Kubernetes. Aprenda a containerizar apps Go, criar manifests K8s e implementar health checks.
Go e Kubernetes: Deploy de Containers
Neste guia completo, você aprenderá a fazer deploy de aplicações Go em Kubernetes, desde a containerização até a configuração de health checks e boas práticas de produção. Se você está construindo microserviços ou APIs REST em Go, o Kubernetes é a plataforma ideal para orquestrar seus containers.
Por que Kubernetes para Go?
Go foi projetada para a era dos containers. Sua compilação para binário único, baixo consumo de memória e startup instantâneo tornam aplicações Go perfeitas para Kubernetes:
Go e Docker: Containerização de Aplicações com Multi-Stage Builds
Aprenda a containerizar aplicações Go com Docker. Guia completo de Dockerfiles otimizados, multi-stage builds, Docker Compose para desenvolvimento, boas práticas de produção e segurança. Reduza imagens de 1GB para 15MB.
Go e Docker são uma combinação poderosa. Enquanto aplicações em outras linguagens precisam de runtimes pesados, Go compila para binários nativos que rodam em containers minimalistas de 10-20MB. Neste guia, você vai aprender a criar imagens Docker otimizadas, seguras e prontas para produção.
Por Que Docker com Go?
Vantagens da Combinação
| Aspecto | Go + Docker | Outras Linguagens |
|---|---|---|
| Tamanho da Imagem | 10-50MB | 100MB-1GB+ |
| Tempo de Startup | < 100ms | 1-30 segundos |
| Memory Footprint | 10-50MB | 100MB-1GB |
| Runtime | Nenhum (binário nativo) | JVM, Node, Python |
| Security Surface | Mínima (scratch/alpine) | Grande (SO completo) |
Casos de Uso
- Microserviços: Deploy rápido e escalável
- CI/CD: Builds reproduzíveis
- Desenvolvimento: Ambiente consistente
- Produção: Alta densidade de containers
Dockerfile Básico para Go
O Problema: Dockerfile Inicial
# ❌ NÃO FAÇA ISSO - Imagem gigante (~1GB)
FROM golang:1.21
WORKDIR /app
COPY . .
RUN go build -o main .
CMD ["./main"]
Problemas:
GOMAXPROCS Inteligente para Containers no Go 1.25
Go 1.25 introduz configuração automática de GOMAXPROCS baseada em limites de CPU de containers, evitando throttling e melhorando a performance em produção.
Go 1.25 inclui novos padrões de GOMAXPROCS que reconhecem limites de containers, proporcionando comportamento mais sensato para muitas cargas de trabalho em containers, evitando throttling que pode impactar a latência de cauda, e melhorando a prontidão do Go para produção.
Neste post, vamos explorar como Go agenda goroutines, como esse agendamento interage com controles de CPU de containers, e como Go pode performar melhor com consciência dos controles de CPU.