
Para seguir este artigo você pode obter os arquivos em - https://github.com/ProgrammingOnMars/kubernetes-for-dev
Vimos que o ReplicaSet mantém o número desejado de pods. Mas ao tentar alterar a versão da aplicação, é necessário remover os pods para forçar o ReplicaSet a criar novos pods, e consequentemente, o pod é criado com sua nova versão.
Para resolver este problema podemos usar o kind Deployment.
Um Deployment fornece atualizações declarativas para Pods e ReplicaSets. Recuperado em 26 de agosto de 2024 de https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
Para cada atualização na versão da imagem, o Deployment cria um novo ReplicaSet.
Você descreve um estado desejado em um Deployment, e o Controller do Deployment altera o estado atual para o estado desejado de forma controlada. Você pode definir Deployments para criar novos ReplicaSets, ou para remover Deployments existentes e adotar todos os seus recursos com novos Deployments. Recuperado em 26 de agosto de 2024 de https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

Vamos ver como criar um Deployment na prática:
Primeiro, você precisa definir um Deployment em um arquivo YML, especificando o número de réplicas e a versão da imagem do container a ser usada.
apiVersion: apps/v1
kind: Deployment
metadata:
name: programmingonmars-deployment
labels:
app: programmingonmars
spec:
replicas: 3
selector:
matchLabels:
app: programmingonmars
template:
metadata:
labels:
app: programmingonmars
spec:
containers:
- name: programmingonmars-container
image: andrelucastic/demo:1.0
ports:
- containerPort: 8080
Agora vamos aplicar no cluster Kubernetes.
kubectl apply -f 04-deployment-more-control-over-of-your-applications/deployment.yaml
A configuração cria um Deployment chamado programmingonmars-deployment que manterá três réplicas de pods.
kubectl get pods

Como os pods foram criados?
O ReplicaSet criado pelo Deployment
Você pode verificar usando o comando abaixo
kubectl get replicaset

Aplicar as mudanças
kubectl apply -f 04-deployment-more-control-over-of-your-applications/deployment.yaml
O Kubernetes criará um novo ReplicaSet para a versão atualizada e realizará um rolling update, substituindo gradualmente os pods antigos por novos.
Podemos monitorar este progresso usando o comando:
kubectl rollout status deployment/programmingonmars-deployment
Se algo der errado durante a atualização, você pode facilmente reverter para a versão anterior usando:
kubectl rollout undo deployment/programmingonmars-deployment
