Lab 3.3 - Deployments e Rolling Updates
Objetivos
Ao final deste lab, você será capaz de:
- Criar e gerenciar Deployments
- Realizar rolling updates
- Gerenciar rollbacks
- Escalar Deployments
Exercício 1: Criar um Deployment
Etapa 1: Criar o arquivo YAML
Crie 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
Etapa 2: Aplicar
kubectl apply -f deployment.yaml
Etapa 3: Verificar
# Ver o Deployment
kubectl get deployment
# Ver os ReplicaSets criados
kubectl get replicasets
# Ver os Pods
kubectl get pods -l app=web
Exercício 2: Rolling Update
Etapa 1: Atualizar a imagem
# Atualizar para nginx:1.21
kubectl set image deployment/web-deployment nginx=nginx:1.21
# Observar o processo
kubectl rollout status deployment/web-deployment
Etapa 2: Observar os ReplicaSets
# Ver os ReplicaSets
kubectl get replicasets -w
# Em outro terminal, ver os Pods
kubectl get pods -l app=web -w
Observação: Um novo ReplicaSet é criado, os Pods são substituídos progressivamente.
Exercício 3: Rollback
Etapa 1: Ver o histórico
# Histórico dos rollouts
kubectl rollout history deployment/web-deployment
# Detalhes de uma revisão
kubectl rollout history deployment/web-deployment --revision=2
Etapa 2: Realizar um rollback
# Rollback para a versão anterior
kubectl rollout undo deployment/web-deployment
# Verificar
kubectl rollout status deployment/web-deployment
Etapa 3: Rollback para uma revisão específica
# Rollback para a revisão 1
kubectl rollout undo deployment/web-deployment --to-revision=1
Exercício 4: Scaling
Etapa 1: Scaling manual
# Aumentar para 5 réplicas
kubectl scale deployment web-deployment --replicas=5
# Verificar
kubectl get pods -l app=web
Etapa 2: Scaling via edição
# Editar o Deployment
kubectl edit deployment web-deployment
# Alterar replicas: 5 para replicas: 2
# Salvar e sair
Exercício 5: Pause e Resume
# Pausar o rollout
kubectl rollout pause deployment/web-deployment
# Fazer modificações
kubectl set image deployment/web-deployment nginx=nginx:1.22
# Verificar (nada muda)
kubectl get pods -l app=web
# Retomar o rollout
kubectl rollout resume deployment/web-deployment
# Observar
kubectl rollout status deployment/web-deployment
Limpeza
kubectl delete deployment web-deployment
Perguntas para Reflexão
- Qual é a diferença entre um Deployment e um ReplicaSet?
- Como funciona um rolling update?
- Por que utilizar um rollback?
- Quando usar pause/resume?
Próximos Passos
Lab 3.4: Configuração de Health Checks
Capítulo 3.8: Health Checks
Lab criado em: Dezembro 2024