Empezando con Kubernetes en Produccion
Kubernetes se ha convertido en el estandar de facto para la orquestacion de contenedores, pero ejecutarlo en produccion requiere mas que un simple kubectl apply. En este post, comparto lecciones clave aprendidas gestionando clusters de Kubernetes en produccion.
Por que Kubernetes?
El cambio de aplicaciones monoliticas a microservicios ha creado la necesidad de herramientas de orquestacion sofisticadas. Kubernetes resuelve varios problemas criticos:
- Descubrimiento de servicios y balanceo de carga entre cargas de trabajo dinamicas
- Despliegues y rollbacks automatizados para deployments sin tiempo de inactividad
- Auto-reparacion mediante reinicios y reprogramacion automatica
- Escalado horizontal basado en la utilizacion de recursos
Componentes Esenciales para Produccion
1. Ingress Controller
Un ingress controller es tu puerta de entrada al cluster. Recomiendo NGINX Ingress Controller para la mayoria de casos:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/rate-limit: "100"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- app.example.com
secretName: app-tls
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app-service
port:
number: 80
2. Limites de Recursos
Siempre configura requests y limits de recursos. Sin ellos, un solo pod mal configurado puede tumbar un nodo entero:
resources:
requests:
memory: "128Mi"
cpu: "250m"
limits:
memory: "256Mi"
cpu: "500m"
3. Pod Disruption Budgets
Protege tus aplicaciones durante el mantenimiento:
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: app-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: my-app
Stack de Monitorizacion
Un cluster en produccion necesita monitorizacion completa. Mi stack recomendado:
| Componente | Herramienta | Proposito |
|---|---|---|
| Metricas | Prometheus | Recoleccion de metricas temporales |
| Visualizacion | Grafana | Dashboards y alertas |
| Logs | Loki | Agregacion de logs |
| Trazas | Jaeger | Trazado distribuido |
Mejores Practicas de Seguridad
- Usa RBAC - Nunca ejecutes cargas de trabajo con privilegios de cluster-admin
- Network Policies - Restringe la comunicacion pod-a-pod
- Pod Security Standards - Aplica contextos de seguridad
- Escaneo de Imagenes - Escanea imagenes en CI antes del despliegue
- Gestion de Secretos - Usa almacenes externos (Vault, AWS Secrets Manager)
Conclusiones
Ejecutar Kubernetes en produccion es un viaje, no un destino. Empieza con lo basico, automatiza todo lo que puedas e invierte en observabilidad desde el primer dia.