Como utilizar o Deployment Rollback no Kubernetes
- Rodrigo Saito
- há 2 dias
- 2 min de leitura
Fala pessoal, tudo bem?
Quando o seu deployment deu alguma coisa errada, precisamos utilizar o Dewployment Rollback, para voltarmos a uma versão anterior do Deployment.
Vamos fazer a listagem das nossas revisões
kubectl rollout history deployment.apps/frontend-deployment
Posso também fazer com que a revisão tenha uma versão específica:
kubectl rollout history deployment.apps/frontend-deployment --revision=2
Veja a revisão especifica 3
kubectl rollout history deployment.apps/frontend-deployment --revision=3
Veja a revisão especifica 5
kubectl rollout history deployment.apps/frontend-deployment --revision=5
Altere o seu arquiivo deployment.yaml e o salve:
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend-deployment
labels:
app: frontend
spec:
template:
metadata:
name: pod-my-nginx
labels:
env: production
spec:
containers:
- name: nginx-container
image: nginx:1.21.4
selector:
matchLabels:
env: production
replicas: 8Aplique novamente o arquivo:
kubectl apply -f my-deployment.yaml
Podemos verificar que os Pods começaram a ser atualizados:
kubectl get pods
Veja o historico dos deployments
kubectl rollout history deployment.apps/frontend-deployment
Altere o arquivo my-deployment.yaml e salve:
Altere o seu arquiivo deployment.yaml e o salve:
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend-deployment
labels:
app: frontend
spec:
template:
metadata:
name: pod-my-nginx
labels:
env: production
spec:
containers:
- name: nginx-container
image: nginx:1.21.5
selector:
matchLabels:
env: production
replicas: 8Aplique o arquivo, com um complemento de parametro:
kubectl apply -f my-deployment.yaml --record
Veja novamente o history:
kubectl rollout history deployment.apps/frontend-deployment
Supondo que essa versão tenha dado algum problema, podemos voltar a versão imediatamenta anterior a que estávamos:
kubectl rollout undo deployment.apps/frontend-deployment
Veja novamete os PODs sendo recriados:
kubectl get pods
Veja novamente o history e perceba que a versão 8 foi criada:
kubectl rollout history deployment.apps/frontend-deployment
Quando executamos o comando UNDO, voltamos para a revisão 6 (que não está mais na lista do history). É como se o k8s tivesse renomeado a nossa revisão 6 para a revisão 8. (pois a revisão 6 tem o mesmo conteúdo que a revisão 8)
Veja o conteúdo da revisão 8
kubectl rollout history deployment.apps/frontend-deployment --revision=8
Vamos fazer outro teste. Veja a revisao 5:
kubectl rollout history deployment.apps/frontend-deployment --revision=5
Vamos executar o comando UNDO com a revisão específica que queremos voltar:
kubectl rollout undo deployment.apps/frontend-deployment --to-revision=5
Verifique novamente o historico de revisões:
kubectl rollout history deployment.apps/frontend-deployment
Podemos perceber que o K8s criou a revisão 9. Veja especificamente a revisao 9.
kubectl rollout history deployment.apps/frontend-deployment --to-revision=9
Podemos perceber que o conteúdo da revisão 9 e 5 são iguais.
Dessa forma, conseguimos gerenciar as revisões que estão sendo executadas do deployment.
Esperamos que tenham gostado!
obrigado e até+!


Comentários