Orquestração com Kubernetes (k8s)
A infraestrutura de contêineres e microsserviços do Centro de Tecnologia e Inovação (CeTI/PMDF) é orquestrada através do Kubernetes. Nosso cluster hospeda as principais aplicações corporativas, sites e sistemas internos.
Arquitetura do Cluster
- Control Plane: Múltiplos masters garantem alta disponibilidade.
- Worker Nodes: Separados em node pools de acordo com o recurso demandado (CPU/Memória intensiva, ou genéricos).
- Ingress Controller: Empregamos um Ingress Controller (como NGINX ou Traefik) que recebe o tráfego externo, passando primeiro pelo Firewall Checkpoint, para rotear aos services em namespaces adequados.
Ferramentas de CI/CD
O deploy de novas aplicações na infraestrutura k8s é integrado a canais de CI/CD definidos pelos times de desenvolvimento, porém a SSSI é responsável pela alocação de namespaces e cotas de recursos, bem como pela configuração de volumes persistentes (PVC) e Secrets (como o Client Secret do Keycloak).
# Exemplo Técnico: Estrutura de Deployment Básico e Resource Limits
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-frontend
namespace: pmdf-apps
spec:
replicas: 3
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: container-frontend
image: dev-repo.pmdf.df.gov.br/frontend:latest
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
ports:
- containerPort: 80Gestão de Cotas (Resource Quotas)
Cada namespace das secretarias e diretorias possui Resource Quotas rígidos, impedindo que um Pod ou Deployment defectivo comprometa totalmente a banda ou capacidade de processamento do cluster.
Monitoramento
O tráfego de pods e a saúde do cluster são acompanhados através da integração do K8s com o Zabbix e Prometheus/Grafana locais. Todos os logs das aplicações (stdout/stderr) são centralizados.
Guia de Operação: Scale e Restart de Pods
Público-alvo: Operadores de Infraestrutura SSSI
- Para escalar rapidamente aplicações com gargalo (por Ex., um alto volume de acessos repentino num serviço específico).
kubectl scale deployment/api-frontend --replicas=5 -n pmdf-apps- Para resolver falhas intermitentes realizando um restart do Deployment sem ocasionar downtime na ponta (Rolling Restart):
kubectl rollout restart deployment/api-frontend -n pmdf-apps