Como utilizar o Rollout History do Kubernetes
- Rodrigo Saito
- há 2 dias
- 2 min de leitura
Fala pessoal, tudo bem?
É possível fazermos revisões de deployment já utilizamos no kubernetes.
Para isso, abra o arquivo dentro de Downloads\my-deployment.yaml. Caso voce não tenha, segue conteúdo do arquivo:
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
selector:
matchLabels:
env: production
replicas: 4
Obedeça exatamente essa indentação e utilize <barra-espaço> ao invés de <tab>
Faça a aplicação do arquivo my-deployment.yaml, utilizando o seguinte comando:
kubectl apply -f my-deployment.yaml
Veja todos os compomentes com o comando:
kubectl get all
Vamos agora fazer o rollout
kubectl rollout status deployment.apps/frontend-deployment
Vamos ver o historio do deployment
kubectl rollout history deployment.apps/frontend-deployment
A primeira vez ele foi implementado, a revisão com 1
Altere o arquivo my-deployment.yaml, colocando o replicas para 8 e 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
selector:
matchLabels:
env: production
replicas: 8
Aplique novamente o arquivo:
kubectl apply -f my-deployment.yaml
Confira com o comando abaixo para verificar quandos PODs foram criados:
kubectl get podsVeja que ele já criou o restante:

Execute o comando history novamente para verificar o revisao:
kubectl rollout history deployment.apps/frontend-deployment
Perceba que a revisão não foi alterada. Simplesmente salvar o arquivo com o novo numero de replicas, não faz a revisão feita pela quantidade de replicas.
Altere mais uma vez o arquivo my-deployment.yaml e salve novamente o arquivo:
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.18.0
selector:
matchLabels:
env: production
replicas: 8
Aplique novamente o arquivo:
kubectl apply -f my-deployment.yaml
Nesse momento, todos os PODs estão sendo trocados:
kubectl get pods
Execute o comando rollout novamente:
kubectl rollout history deployment.apps/frontend-deploymentAgora perceba que apareceu a outra revisão:

Não fizemos uma alteração não somente na quantidade, mas sim agora na aplicação.
Altere novamente o arquivo my-deployment.yaml para a versao anterior e salve o arquivo:
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
selector:
matchLabels:
env: production
replicas: 8Aplique novamente o arquivo:
kubectl apply -f my-deployment.yaml
Veja novamente a versão:
kubectl rollout history deployment.apps/frontend-deployment
Veja que o K8s sabe que a revisao 1 e 3 são as mesmas, então ele apaga a revisao 1 para não deixar o historico tão longo.
Altere novamente o arquivo my-deployment.yaml para a versao anterior e salve o arquivo:
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.14.2
selector:
matchLabels:
env: production
replicas: 8Aplique novamente o arquivo:
kubectl apply -f my-deployment.yaml
Veja novamente a versão:
kubectl rollout history deployment.apps/frontend-deployment
Veja que ele manteve a versao agora.
Mude o arquivo novamente para a versao: nginx:1.20.2
Salve o arquivo
Aplique o arquivo
Faça a revisão novamente
Veja em que revisão o K8s controlou.
Esse é um recurso muito bom para conseguirmos versionar os novos arquivos.
Muito obrigado e até mais!


Comentários