ANÚNCIO

~/questoes/devops

Qual recurso do Kubernetes é mais análogo a um serviço definido no docker-compose.yml?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Como Migrar do Docker Compose para Kubernetes
Para fixar

Mapeando Serviços do Docker Compose para Kubernetes

Conceito central

Ao migrar do Docker Compose para Kubernetes, é importante entender que um serviço definido no docker-compose.yml não corresponde diretamente a um único recurso Kubernetes. O Deployment é o equivalente mais próximo, pois gerencia replicação, atualizações e o ciclo de vida dos contêineres, assim como um serviço Docker Compose controla como sua aplicação é executada.

Por que essa resposta faz sentido

O Deployment é a resposta correta porque oferece controle granular sobre replicação de Pods, estratégias de atualização e gerenciamento do ciclo de vida dos contêineres. Essas funcionalidades espelham o que um serviço faz no Docker Compose: definir como a aplicação será executada, quantas instâncias haverá e como atualizações serão aplicadas.

Armadilhas comuns

  • Confundir Service com Deployment: lembrar que Service vem após Deployment para expor a aplicação, não para gerenciá-la.
  • Pensar que ConfigMap ou Secret substitui a definição do serviço: esses recursos apenas armazenam dados, não definem como a aplicação executa.
  • Acreditar que Pod é o equivalente direto: Pod é apenas um contêiner (ou grupo de contêineres), enquanto Deployment é quem controla quantos Pods existem e como são atualizados.

Entenda as alternativas

A

Service em Kubernetes é responsável por balanceamento de carga e descoberta de serviços entre Pods já existentes, mas não gerencia replicação ou ciclo de vida. É um complemento ao Deployment, não seu equivalente.

B

Deployment é o recurso Kubernetes que realmente corresponde a um serviço Docker Compose. Ele define quantas replicas da aplicação devem rodar, como as atualizações acontecem e garante que a aplicação mantenha o estado desejado.

C

ConfigMap armazena dados de configuração e variáveis de ambiente, mas não tem nenhuma relação com a definição de como a aplicação é executada ou replicada. É um recurso complementar de gerenciamento de configuração.

D

Pod é a menor unidade executável em Kubernetes, mas é uma abstração de baixo nível. Você não trabalha diretamente com Pods em produção; o Deployment gerencia os Pods por você, assim como Docker Compose gerencia contêineres.

Dica prática: Ao converter seu docker-compose.yml para Kubernetes, comece criando um Deployment para cada serviço, depois crie um Service para expor esse Deployment. Essa dupla (Deployment + Service) junto com ConfigMap para configurações é o equivalente do seu arquivo docker-compose.yml.

Revise pensando: Se você tem um serviço web no docker-compose.yml que precisa de 3 replicas e atualizações sem downtime, qual recurso Kubernetes você usaria para definir isso?