Lab 3.3 - Deployments y Rolling Updates
Objetivos
Al final de este laboratorio, usted será capaz de:
- Crear y gestionar Deployments
- Realizar rolling updates
- Gestionar rollbacks
- Escalar Deployments
Ejercicio 1: Crear un Deployment
Paso 1: Crear el archivo YAML
Cree deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80
Paso 2: Aplicar
kubectl apply -f deployment.yaml
Paso 3: Verificar
# Ver el Deployment
kubectl get deployment
# Ver los ReplicaSets creados
kubectl get replicasets
# Ver los Pods
kubectl get pods -l app=web
Ejercicio 2: Rolling Update
Paso 1: Actualizar la imagen
# Actualizar a nginx:1.21
kubectl set image deployment/web-deployment nginx=nginx:1.21
# Observar el proceso
kubectl rollout status deployment/web-deployment
Paso 2: Observar los ReplicaSets
# Ver los ReplicaSets
kubectl get replicasets -w
# En otra terminal, ver los Pods
kubectl get pods -l app=web -w
Observación: Se crea un nuevo ReplicaSet, los Pods se reemplazan progresivamente.
Ejercicio 3: Rollback
Paso 1: Ver el historial
# Historial de rollouts
kubectl rollout history deployment/web-deployment
# Detalles de una revisión
kubectl rollout history deployment/web-deployment --revision=2
Paso 2: Realizar un rollback
# Rollback a la versión anterior
kubectl rollout undo deployment/web-deployment
# Verificar
kubectl rollout status deployment/web-deployment
Paso 3: Rollback a una revisión específica
# Rollback a la revisión 1
kubectl rollout undo deployment/web-deployment --to-revision=1
Ejercicio 4: Scaling
Paso 1: Scaling manual
# Aumentar a 5 réplicas
kubectl scale deployment web-deployment --replicas=5
# Verificar
kubectl get pods -l app=web
Paso 2: Scaling mediante edición
# Editar el Deployment
kubectl edit deployment web-deployment
# Modificar replicas: 5 a replicas: 2
# Guardar y salir
Ejercicio 5: Pausa y Reanudación
# Pausar el rollout
kubectl rollout pause deployment/web-deployment
# Realizar modificaciones
kubectl set image deployment/web-deployment nginx=nginx:1.22
# Verificar (nada cambia)
kubectl get pods -l app=web
# Reanudar el rollout
kubectl rollout resume deployment/web-deployment
# Observar
kubectl rollout status deployment/web-deployment
Limpieza
kubectl delete deployment web-deployment
Preguntas de Reflexión
- ¿Cuál es la diferencia entre un Deployment y un ReplicaSet?
- ¿Cómo funciona un rolling update?
- ¿Por qué utilizar un rollback?
- ¿Cuándo utilizar pausa/reanudación?
Próximos Pasos
Lab 3.4: Configuración de Health Checks
Capítulo 3.8: Health Checks
Lab creado el: diciembre 2024