0Pricing
DevOps Bootcamp · Aula

Pods com vários contêineres (sidecars)

Explore padrões para executar vários contêineres colocados juntos em um único pod, como os contêineres sidecar.

Pods com vários contêineres (sidecars) é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.

Além de um único contêiner

Até agora, consideramos os pods como estruturas que executam um único contêiner. Mas e se sua aplicação precisar de um processo auxiliar?

O Kubernetes permite que um pod execute vários contêineres. Esses contêineres ficam sempre no mesmo local e compartilham recursos.

Por que usar pods com vários contêineres?

Executar vários contêineres em um pod é ideal para aplicações fortemente acopladas que precisam compartilhar:

  • Espaço de nomes de rede (o mesmo endereço IP; eles podem se comunicar por meio de localhost)
  • Volumes de armazenamento
  • Ciclo de vida (eles iniciam, param e reiniciam juntos)

Isso permite ter uma única unidade de gerenciamento para processos relacionados.

Explicação do padrão de contêiner auxiliar

Um design comum é o padrão de contêiner auxiliar. Nesse caso, um contêiner auxiliar é executado ao lado do contêiner da aplicação principal.

Ele amplia ou aprimora a funcionalidade da aplicação principal sem modificar a própria aplicação. Pense nele como um companheiro prestativo!

Casos de uso de contêineres auxiliares

Os contêineres auxiliares são extremamente versáteis. Entre os usos comuns estão:

  • Coleta de registros: um contêiner auxiliar coleta os registros da aplicação principal e os envia para um serviço central de registros.
  • Proxy: um contêiner auxiliar fornece funções de proxy de rede, por exemplo, para segurança (mTLS) ou gerenciamento de tráfego.
  • Sincronização de arquivos: um contêiner auxiliar mantém um volume compartilhado atualizado com configurações ou dados.

Pod com dois contêineres (YAML)

Veja como definir vários contêineres no manifesto YAML de um pod. Cada contêiner é um item na matriz containers.

Observe os contêineres nginx-proxy e main-app definidos em spec.containers.

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
  - name: nginx-proxy
    image: nginx:latest
    ports:
    - containerPort: 80
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "echo 'Hello from main app!' && sleep 3600"]

Armazenamento compartilhado: emptyDir

Os contêineres dentro do mesmo pod podem compartilhar dados usando volumes do Kubernetes. Uma forma simples de fazer isso é usar um volume emptyDir.

Um volume emptyDir é criado quando um pod é atribuído a um nó e existe enquanto esse pod estiver em execução nesse nó. Trata-se de armazenamento temporário.

Exemplo: contêiner auxiliar coletor de registros

Imagine uma aplicação principal que gera registros em um arquivo. Um contêiner auxiliar pode ler esse arquivo de registro e enviá-lo para um serviço de registros.

Isso separa a lógica de registro da aplicação principal, mantendo-a limpa e concentrada em sua função.

YAML do coletor de registros (parte 1)

Veja o YAML do nosso exemplo de coletor de registros. Definimos um volume emptyDir chamado log-volume. Ambos os contêineres montarão esse volume.

O contêiner main-app grava uma mensagem de registro em /var/log/app.log, dentro do volume compartilhado.

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

YAML do coletor de registros (parte 2)

Agora, o contêiner log-sidecar monta o mesmo log-volume. Em seguida, ele usa tail -f para ler continuamente o arquivo de registro gravado pela aplicação principal.

Em um cenário real, esse contêiner auxiliar processaria e enviaria esses registros para um sistema de registros, como Elasticsearch ou Splunk.

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod # Same Pod as before
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log
  - name: log-sidecar
    image: busybox:latest
    command: ["sh", "-c", "tail -f /var/log/app.log"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

Verificação rápida: benefícios dos contêineres auxiliares

Os pods com vários contêineres, especialmente com o padrão de contêiner auxiliar, oferecem várias vantagens para gerenciar aplicações complexas.

Quais das opções a seguir são benefícios importantes do uso de um contêiner auxiliar?

Resumo: pods com vários contêineres

Parabéns! Você aprendeu sobre pods com vários contêineres e o poderoso padrão de contêiner auxiliar.

  • Os pods podem hospedar vários contêineres que compartilham rede e armazenamento.
  • O padrão de contêiner auxiliar ajuda a ampliar ou aprimorar a funcionalidade da aplicação principal.
  • Os usos comuns incluem coleta de registros, proxies e sincronização de dados.
  • Os volumes emptyDir fornecem armazenamento temporário compartilhado dentro de um pod.

Esse padrão é essencial para criar aplicações robustas e modulares no Kubernetes!

Perguntas Frequentes

A aula “Pods com vários contêineres (sidecars)” é grátis?

Sim — o texto completo de “Pods com vários contêineres (sidecars)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.

O que vou aprender em “Pods com vários contêineres (sidecars)”?

Explore padrões para executar vários contêineres colocados juntos em um único pod, como os contêineres sidecar. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar DevOps Bootcamp?

Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Pods com vários contêineres (sidecars)”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de DevOps Bootcamp?

Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Pods: a menor unidade
  2. Ciclo de vida e estados dos pods
  3. Pods com vários contêineres (sidecars)
  4. Contêineres de inicialização e ordenação de inicialização
← Voltar para DevOps Bootcamp