Deployments

Un deployment en Kubernetes es un recurso que gestiona y mantiene el ciclo de vida de un conjunto de réplicas de un pod de manera declarativa. Es uno de los objetos más utilizados en Kubernetes, ya que te permite:
-
Desplegar una aplicación: Define qué imagen de contenedor se debe usar, cuántas réplicas deben ejecutarse y cómo deben exponerse.
-
Actualizar la aplicación sin tiempo de inactividad: Permite hacer rolling updates (actualizaciones progresivas) de los pods, minimizando la posibilidad de interrupciones.
-
Gestionar el estado deseado: Kubernetes se asegura de que siempre haya el número de réplicas especificadas corriendo; si un pod falla, automáticamente se crea uno nuevo.
-
Rollback: Puedes revertir a una versión anterior si una actualización falla.
Estructura básicaManifiesto de un "Deployment"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 2
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: httpd:latest
ports:
- containerPort: 80
Conceptos clave:
-
replicas: número de instancias de un pod.
-
selector: cómo Kubernetes identifica los pods que pertenecen a este deployment.
-
template: especifica la plantilla de los pods (contenedores, puertos, variables de entorno, etc.).
-
strategy: (opcional) puedes definir estrategias de despliegue como RollingUpdate o Recreate.
Comandos para deployments
# Aplica los cambios
kubectl apply -f myapp.yml
# Elimina
kubectl delete -f myapp.yml
# Comprueba deployments
kubectl get deployments
# Escala el despliegue
kubectl scale --replicas 2 deployment/myapp