DEV Community

Daniel
Daniel

Posted on • Edited on

Deployment - Kubernetes (BR)

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
Enter fullscreen mode Exit fullscreen mode

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}
Enter fullscreen mode Exit fullscreen mode

Para verificar se o deploment foi criado

kubectl get deployments
Enter fullscreen mode Exit fullscreen mode

Ao rodar o kubectl get deployments, aparecerá os seguintes nomes.

NAME
nome do deployment que foi criado no namespace.

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 o state 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}
Enter fullscreen mode Exit fullscreen mode

  • 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}
Enter fullscreen mode Exit fullscreen mode

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}
Enter fullscreen mode Exit fullscreen mode

para voltar a uma versão específica:

kubectl rollout undo deployment/{nome_do_deployment} --revision={numero_da_revisao}
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Conclusão:

Observe a imagem a seguir:
Deployment kubernetes

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

Kubernetes

Top comments (4)

Collapse
 
robinamirbahar profile image
Robina

Amazing Work

Collapse
 
daniellcas profile image
Daniel

Thanks!

Collapse
 
bcouetil profile image
Benoit COUETIL 💫

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 😉

Collapse
 
daniellcas profile image
Daniel

thanks for the feedback, sorry for the inconvenience.