Pular para o conteúdo principal

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​

  1. Qual é a diferença entre um Deployment e um ReplicaSet?
  2. Como funciona um rolling update?
  3. Por que utilizar um rollback?
  4. 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