Saltar al contenido principal

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​

  1. ¿Cuál es la diferencia entre un Deployment y un ReplicaSet?
  2. ¿Cómo funciona un rolling update?
  3. ¿Por qué utilizar un rollback?
  4. ¿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