Olá! Bem-vindo de volta ao nosso módulo sobre Fundamentos do Kubernetes.
Na lição anterior, estabelecemos uma base sólida ao explorar a arquitetura do Kubernetes. Você aprendeu que um cluster é dividido em um Control Plane (o cérebro) e Worker Nodes (a força de trabalho), e como esses componentes colaboram para manter um estado desejado para nossas aplicações.
Hoje, vamos nos aprofundar em como definimos esse "estado desejado". Faremos isso aprendendo a linguagem do Kubernetes — os seus objetos fundamentais. Estes são os blocos de construção que usamos para descrever exatamente o que queremos que nossas aplicações façam dentro do cluster.
O objetivo desta lição é: Descrever os principais objetos do Kubernetes: Pod, Deployment, Service, ConfigMap e Secret.
Vamos descobrir o papel de cada um desses "tijolos" e como eles se encaixam para formar uma aplicação robusta e escalável.
O que são Objetos Kubernetes?
Em Kubernetes, um objeto é uma "entidade persistente" no sistema. Quando você cria um objeto, está essencialmente dizendo ao cluster qual é o estado desejado da sua carga de trabalho. O Kubernetes então trabalha constantemente para garantir que o estado atual do cluster corresponda a esse estado desejado que você especificou.
Pense nesses objetos como plantas ou projetos (blueprints). Você não diz ao Kubernetes como fazer algo passo a passo (forma imperativa); em vez disso, você descreve o que você quer no final (forma declarativa). Você envia essa descrição, geralmente em um arquivo YAML, para o API Server, e o Control Plane se encarrega do resto.
What Are Objects Used for in Kubernetes? 11 Types of Objects Explained.
Para solidificar essa ideia, o artigo 'What Are Objects Used for in Kubernetes?' da KodeKloud oferece uma excelente introdução ao conceito de objetos como "blueprints" para o estado desejado.
Leia a introdução e a seção 'What Are Kubernetes Objects?'. Foque em entender como os objetos são usados para fornecer instruções ao Kubernetes.
Agora, vamos conhecer os cinco objetos mais importantes com os quais você irá interagir. O vídeo a seguir, do canal TechWorld with Nana, oferece uma visão geral fantástica de como esses componentes se conectam para formar uma aplicação.
Kubernetes Components explained! Pods, Services, Secrets, ConfigMap | Kubernetes Tutorial 14
Este vídeo explica visualmente o papel de cada objeto principal do Kubernetes. Vamos usá-lo como um guia para explorar cada componente.
Assista apenas ao resumo rápido de 16:52 a 17:36. Ele lhe dará um mapa mental de todos os objetos que vamos discutir em detalhe a seguir.
1. Pod: A Unidade Fundamental
Tudo no Kubernetes roda dentro de um Pod. É a menor e mais simples unidade de computação que você pode criar e gerenciar.
- O que é? Um Pod é uma camada de abstração sobre um ou mais contêineres. Em vez de executar um contêiner diretamente, o Kubernetes o envolve em um Pod.
- Por que ele existe? Essa abstração permite que contêineres intimamente acoplados compartilhem recursos, como o mesmo endereço de IP de rede e volumes de armazenamento, e possam se comunicar via
localhost. Pense em um contêiner principal da aplicação e um contêiner auxiliar (um "sidecar") que coleta logs ou métricas. - Característica Chave: Efemeridade. Pods são mortais e descartáveis. Eles podem ser criados, destruídos e substituídos a qualquer momento. Um Pod nunca se "cura" ou se move para outro nó; ele é substituído por um novo. Essa natureza efêmera é um problema fundamental que outros objetos resolvem.

Para entender melhor o papel do Pod, assista a esta explicação.
Kubernetes Components explained! Pods, Services, Secrets, ConfigMap | Kubernetes Tutorial 14
Vamos ver a explicação detalhada sobre o que é um Pod no vídeo da TechWorld with Nana.
Assista ao trecho de 01:07 a 02:37. Preste atenção na ideia de que um Pod é uma abstração e que normalmente contém um único contêiner de aplicação.
2. Deployment: Gerenciando o Ciclo de Vida da Aplicação
Já que os Pods são efêmeros, não podemos contar com um único Pod para manter nossa aplicação em execução. E se precisarmos de múltiplas instâncias para escalabilidade e alta disponibilidade?
É aqui que entra o Deployment.
- O que é? Um Deployment é um objeto de nível superior que gerencia um conjunto de Pods idênticos (réplicas). Na prática, você quase nunca criará Pods diretamente; em vez disso, você definirá um Deployment.
- O que ele faz?
- Estado Desejado: Você especifica um "template" de Pod e o número de réplicas desejado (ex: "quero 3 instâncias deste contêiner Nginx").
- Auto-recuperação (Self-healing): Se um Pod gerenciado pelo Deployment falhar, o Deployment o substituirá automaticamente para manter o número de réplicas desejado.
- Escalabilidade: Você pode facilmente escalar sua aplicação para cima ou para baixo simplesmente alterando o número de réplicas no Deployment.
- Atualizações sem Downtime: Ele gerencia atualizações de imagem de forma controlada (rolling updates), criando novos Pods e desativando os antigos gradualmente.
Tecnicamente, o Deployment gerencia um objeto chamado ReplicaSet, que por sua vez é responsável por garantir que o número correto de Pods esteja em execução. Essa é uma camada de detalhe que reforça como o Kubernetes usa composições de objetos para atingir seus objetivos.
Kubernetes Components explained! Pods, Services, Secrets, ConfigMap | Kubernetes Tutorial 14
O próximo segmento do vídeo explica como o Deployment serve como um "blueprint" para os Pods, permitindo a replicação e o gerenciamento.
Assista de 12:45 a 14:01. O ponto principal é que, na prática, trabalhamos com Deployments, não diretamente com Pods.
3. Service: Expondo seus Pods
Temos agora um Deployment que garante que 3 réplicas do nosso Pod estejam sempre em execução. Mas cada Pod tem seu próprio endereço IP e, como são efêmeros, esses IPs mudam constantemente. Como outras partes da nossa aplicação (ou usuários externos) podem se conectar a eles de forma confiável?
A resposta é o Service.
- O que é? Um Service fornece um ponto de entrada de rede estável e único para um grupo de Pods.
- Como funciona?
- O Service recebe um endereço IP estável e um nome DNS dentro do cluster.
- Ele usa labels e selectors (etiquetas chave-valor) para identificar dinamicamente o grupo de Pods aos quais deve encaminhar o tráfego. Por exemplo, um Service pode ser configurado para encontrar todos os Pods com a etiqueta
app: minha-api. - Ele atua como um load balancer básico, distribuindo as requisições entre os Pods saudáveis que correspondem ao seu seletor.
Essa dissociação é crucial: o ciclo de vida de um Service é independente do ciclo de vida dos Pods. Mesmo que todos os Pods sejam substituídos, o ponto de entrada do Service permanece o mesmo.
Kubernetes Components explained! Pods, Services, Secrets, ConfigMap | Kubernetes Tutorial 14
Vamos ver como o Service resolve o problema de comunicação causado pela natureza efêmera dos Pods.
Assista de 03:32 a 06:08. Foque em entender por que um IP estático fornecido por um Service é necessário e a diferença entre serviços internos e externos.
4. ConfigMap e Secret: Gerenciando Configurações
Como um bom desenvolvedor, você sabe que não se deve embutir configurações, como URLs de banco de dados ou chaves de API, diretamente no código ou na imagem do contêiner. O Kubernetes oferece dois objetos para gerenciar isso.
- ConfigMap:
- O que é? Um objeto para armazenar dados de configuração não sensíveis em pares chave-valor. Pense em URLs de outros serviços, variáveis de ambiente para definir o modo de operação (ex:
ASPNETCORE_ENVIRONMENT=Production), ou até mesmo arquivos de configuração inteiros.
- O que é? Um objeto para armazenar dados de configuração não sensíveis em pares chave-valor. Pense em URLs de outros serviços, variáveis de ambiente para definir o modo de operação (ex:
- Secret:
- O que é? Similar a um ConfigMap, mas projetado especificamente para armazenar dados sensíveis, como senhas, tokens OAuth e chaves de API.
- Segurança: Os dados em um Secret são armazenados em formato base64. É importante notar que base64 é uma codificação, não uma criptografia, e pode ser facilmente revertida. A verdadeira segurança dos Secrets vem do controle de acesso (RBAC) do Kubernetes e da integração com sistemas de gerenciamento de segredos mais robustos.
Tanto ConfigMaps quanto Secrets podem ser injetados em Pods como variáveis de ambiente ou montados como arquivos em um volume. Isso dissocia sua aplicação da configuração, permitindo que você atualize as configurações sem ter que reconstruir a imagem do seu contêiner.

Kubernetes Components explained! Pods, Services, Secrets, ConfigMap | Kubernetes Tutorial 14
Os próximos clipes do vídeo da TechWorld with Nana explicam como externalizar a configuração da sua aplicação.
Assista aos trechos sobre ConfigMap (06:50 - 07:53) e Secret (07:53 - 08:57). Entenda a distinção fundamental entre eles: a sensibilidade dos dados que cada um armazena.
Teste seu entendimento!
Você está implantando uma API .NET em um cluster Kubernetes. A API precisa de uma string de conexão para um banco de dados PostgreSQL e uma variável de ambiente que define o nível de log como "Information".
Qual objeto Kubernetes você usaria para cada uma dessas configurações e por quê?
Show answer
- String de conexão do PostgreSQL: Você usaria um Secret. A string de conexão contém credenciais (usuário e senha), que são informações sensíveis e não devem ser expostas em texto plano.
- Nível de log ("Information"): Você usaria um ConfigMap. O nível de log é um dado de configuração não sensível.
Conclusão
Nesta lição, você aprendeu sobre os "substantivos" do Kubernetes — os objetos que representam os pilares de qualquer aplicação em execução no cluster. Ao combinar esses blocos de construção, podemos descrever sistemas complexos de forma declarativa e deixar que o Kubernetes cuide da implementação e manutenção.
Principais Pontos:
- Pod: A menor unidade de implantação, encapsulando um ou mais contêineres. É efêmero por natureza.
- Deployment: Gerencia o ciclo de vida de um conjunto de Pods idênticos, garantindo auto-recuperação, escalabilidade e atualizações controladas.
- Service: Fornece um ponto de acesso de rede estável e um nome DNS para um grupo de Pods, agindo como um load balancer.
- ConfigMap: Usado para externalizar e injetar dados de configuração não sensíveis em Pods.
- Secret: Semelhante a um ConfigMap, mas projetado para armazenar informações sensíveis, como senhas e chaves de API.
Próxima Lição:
Agora que você entende o que são esses objetos, a próxima etapa é aprender a interagir com eles. Na próxima lição, você será apresentado ao kubectl, a ferramenta de linha de comando essencial para se comunicar com um cluster Kubernetes. Usaremos o kubectl para listar, inspecionar e obter detalhes sobre os objetos que estão em execução em um cluster, tornando esses conceitos abstratos muito mais concretos.