ANÚNCIO

~/questoes/devops

O que um Deployment descreve em um cluster Kubernetes?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Arquitetura do Kubernetes: Aula 1
Para fixar

O que é um Deployment no Kubernetes?

Conceito central

Um Deployment é um objeto do Kubernetes que descreve como suas aplicações devem ser executadas, permitindo que você defina quantas cópias (réplicas) deseja, como atualizá-las sem parar o serviço e como escalá-las conforme a demanda. É a forma declarativa de gerenciar aplicações em produção.

Por que essa resposta faz sentido

Deployments descrevem aplicações que podem ser escaladas (aumentar ou diminuir o número de cópias), versionadas (trocar de versão da imagem do contêiner) e atualizadas de forma controlada (gradualmente, sem derrubar tudo de uma vez). É como dar instruções permanentes ao Kubernetes sobre como manter sua aplicação rodando.

Armadilhas comuns

  • Confundir Deployment com etcd: Deployment é um objeto que você cria; etcd é onde o Kubernetes armazena informações sobre ele.
  • Pensar que Deployment controla apenas uma cópia de um contêiner: na verdade, um Deployment pode gerenciar muitas réplicas da mesma aplicação rodando simultaneamente.
  • Achar que Deployment é o mesmo que Pod: um Pod é uma cópia única de um contêiner; um Deployment é o responsável por criar e manter vários Pods.

Entenda as alternativas

A

Isto descreve o etcd, que é o banco de dados distribuído do plano de controle do Kubernetes. O etcd armazena o estado de todos os objetos, mas não é um Deployment.

B

Isto descreve Network Policies, que são regras de segurança que controlam quem pode conversar com quem na rede interna do cluster. Deployments não fazem esse controle.

C

Exatamente. Um Deployment é um objeto que descreve sua aplicação com capacidade de escalabilidade (mais ou menos pods), versionamento (trocar versão) e atualizações controladas (sem downtime).

D

Isto descreve um Ingress, que é o recurso que roteia tráfego externo (da internet) para dentro do cluster. Um Deployment não faz esse roteamento externo.

Dica prática: Quando você cria um Deployment, você escreve um arquivo YAML descrevendo como quer que sua aplicação rode (qual imagem, quantas réplicas, etc). O Kubernetes lê esse arquivo e fica responsável por manter esse estado: se um Pod cair, ele cria outro; se você pedir para escalar, ele adiciona ou remove Pods automaticamente.

Revise pensando: Se você quiser atualizar sua aplicação para uma nova versão sem derrubar o serviço atual, qual recurso do Kubernetes você usaria?