Pré-requisitos
O que é deployment ?
É um gerenciador de Pods e ReplicaSet, você pode definir o state
desejado e ele trabalhará para atualizar o seu state
.
Criação de um deployment
- sintaxe
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
O script acima irá criar um deployment que cria um ReplicaSet com 3 replicas como definido, que cria 3 pods que terão o template definido, com a imagem do nginx e o label de app:nginx.
- Comandos para criar e observar
Para aplicar o código acima.
kubectl apply -f {nome_do_arquivo}
Para verificar se o deploment foi criado
kubectl get deployments
Ao rodar o kubectl get deployments
, aparecerá os seguintes nomes.
NAME
nome do deployment que foi criado nonamespace
.READY
exibe quantas réplicas do aplicativo estão disponíveis. (pronto/desejado)UP-TO-DATE
exibe o número de réplicas que foram atualizadas para atingir ostate
desejado.AVAILABLE
exibe quantas réplicas do aplicativo estão disponíveis.AGE
exibe a quantidade de tempo que o aplicativo está em execução.
Para verificar o status de lançamento do deployment
kubectl rollout status deployment/{nome_do_deployment}
- Atualizações de Pods.
O deployment garante que apenas um determinado número de pods fiquem inativos, enquanto eles são atualizados. Por padrão 75% dos pods devem ficar ativos e somente 25% inativos para atualizações. ele primeiro cria novos pods para então começar a destruir os antigos. Ele não mata pods antigos até que um número suficiente de novos pods surjam e não cria novos pods até que um número suficiente de pods antigos tenha sido eliminado.
- Caso de criação de deployment's com erros.
Para esses casos a gente consegue ter o histórico de alterações do deployment pelo comando a seguir:
kubectl rollout history deployment/{nome_do_deployment}
esse comando mostrará o history
de alteração do deployment.
para voltar a uma versão anterior basta:
kubectl rollout undo deployment/{nome_do_deployment}
para voltar a uma versão específica:
kubectl rollout undo deployment/{nome_do_deployment} --revision={numero_da_revisao}
Política de limpeza
Você pode definir um campo na criação do seu deployment para especificar quantos ReplicaSets antigos para esta implantação você deseja reter. por padrão e 10.
spec:
revisionHistoryLimit: <-- Esse e o campo de definição
Conclusão:
Basicamente deployment vai fazer o controle de seus ReplicaSets e Pods por você, pode ser configurado da melhor maneira ao seu negócio. Podendo tanto fazer o controle, até definir seus recursos máximos e mínimos. também tem como trabalhar com suas escalas tanto vertical quanto horizontal junto com um serviço de HorizontalPodAutoscaler.
Referências
Top comments (4)
Amazing Work
Thanks!
Thanks for sharing.
Since you did not write in English, you should make it explicit in the title ; else most people will click and be disappointed 😉
thanks for the feedback, sorry for the inconvenience.