Kubernetes¶
A InteSys oferece clusters Kubernetes gerenciados e consultoria especializada em orquestração de contêineres. Cuidamos do ciclo de vida do cluster, escalabilidade, segurança e atualizações para que sua equipe possa focar na implantação de aplicações.
Kubernetes Gerenciado¶
Nosso serviço de Kubernetes gerenciado roda na infraestrutura Tier 3 da InteSys com:
- Alta disponibilidade — Control plane multi-master em múltiplas zonas de disponibilidade
- Atualizações automáticas — Atualizações de versão do Kubernetes com rolling updates sem downtime
- Monitoramento integrado — Prometheus e Grafana pré-configurados para métricas do cluster
- Rede privada — Nós do cluster em VLANs isoladas com ingress controlado
Versões Suportadas¶
Mantemos as três últimas versões menores do Kubernetes. Versões atualmente suportadas:
| Versão | Status | Fim do Suporte |
|---|---|---|
| 1.31 | Atual | Ativo |
| 1.30 | Suportada | Ativo |
| 1.29 | Suportada | 2026-06 |
Estratégias de Implantação¶
Deployments e Rolling Updates¶
O objeto Deployment padrão do Kubernetes gerencia rolling updates automaticamente:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: registry.intesys.io/myapp:v1.2.0
ports:
- containerPort: 8000
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
Sempre Defina Requests e Limits de Recursos
Os requests de recursos garantem que seu pod seja agendado em um nó com capacidade suficiente. Os limits evitam que um pod com mau comportamento consuma todos os recursos do nó e afete outras cargas de trabalho.
Health Probes¶
O Kubernetes usa probes para determinar a saúde dos pods. Probes configurados corretamente são essenciais para implantações confiáveis.
Liveness Probe¶
Detecta se um pod está travado e precisa ser reiniciado:
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
periodSeconds: 15
failureThreshold: 3
Readiness Probe¶
Determina se um pod está pronto para receber tráfego:
readinessProbe:
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 5
periodSeconds: 10
failureThreshold: 2
Startup Probe¶
Para aplicações com inicialização lenta:
startupProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 0
periodSeconds: 5
failureThreshold: 30
Liveness vs Readiness
Uma falha no liveness probe reinicia o pod. Uma falha no readiness probe remove-o do serviço, mas mantém-no em execução. Use readiness para dependências (conectividade com banco de dados) e liveness para detecção de deadlocks.
Horizontal Pod Autoscaler (HPA)¶
Escale pods automaticamente com base em CPU, memória ou métricas personalizadas:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
Boas Práticas de Escalabilidade¶
- Defina
minReplicascomo pelo menos 2 para alta disponibilidade - Use
PodDisruptionBudgetpara garantir disponibilidade mínima durante eventos de escala - Configure períodos de cooldown adequados para evitar oscilações
- Monitore o comportamento do HPA com
kubectl get hpae dashboards Grafana
Ingress e TLS¶
Exponha serviços externamente com ingress gerenciado e TLS automático:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- app.example.com
secretName: app-tls
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp
port:
number: 80
Boas Práticas de Segurança¶
| Prática | Implementação |
|---|---|
| Executar como não-root | securityContext.runAsNonRoot: true |
| Sistema de arquivos somente leitura | securityContext.readOnlyRootFilesystem: true |
| Remover capabilities | securityContext.capabilities.drop: ["ALL"] |
| Network policies | Restringir comunicação entre pods |
| Verificação de imagens | Verificar imagens no CI antes da implantação |
| RBAC | Service accounts com privilégio mínimo |
Próximos Passos¶
- Pipelines CI/CD — Automatize implantações no Kubernetes
- Visão Geral de DevOps — Catálogo completo de serviços