Skip to content
Latchkey

O que e um init container? Setup antes de o seu app iniciar

Um init container roda e termina antes de os contineres principais de um pod iniciarem - um step de setup garantido que impede o app de rodar ate que ele tenha sucesso.

As vezes um pod precisa de preparacao antes de o app iniciar: aguardar uma dependencia, rodar uma migracao, buscar config. Init containers cuidam exatamente disso. Eles rodam em ordem, um apos o outro, e os contineres de app so iniciam quando todos tiverem concluido com sucesso.

Semantica de run-to-completion

Init containers rodam sequencialmente antes dos contineres de app. Cada um deve terminar com sucesso antes de o proximo rodar. Se um falha, o Kubernetes reinicia o pod e tenta de novo - o app nunca inicia em um pod preparado pela metade.

Usos comuns

  • Aguardar ate que um banco de dados ou servico esteja acessivel.
  • Rodar uma migracao de schema antes de o app iniciar.
  • Buscar secrets, certs ou config para um volume compartilhado.
  • Definir permissoes de sistema de arquivos em um volume montado.

Init container vs sidecar

Um init container faz o setup e termina antes do app; um sidecar roda por toda a vida do pod ao lado do app. Use init para "faca isso primeiro", sidecar para "continue fazendo isso".

Compartilhando resultados

Init containers comumente escrevem em um volume que o continer de app tambem monta - config ou certs buscados vao parar ali, prontos para o app quando ele iniciar.

O paralelo com a CI

Isso espelha um step de setup de CI que deve ter sucesso antes de os testes rodarem - instalar dependencias, aguardar um service container, popular dados. Ambos impoem "prepare, verifique e entao prossiga".

Principais conclusões

  • Init containers rodam ate concluir, em ordem, antes de os contineres de app iniciarem.
  • Eles garantem o setup (esperas, migracoes, config) antes de o app iniciar.
  • Ao contrario dos sidecars, eles terminam; nao rodam por toda a vida do pod.

Guias relacionados