Embora haja diferenças nas metodologias e nos recursos entre as ferramentas, a orquestração de contêiner é essencialmente um processo de três etapas (ou ciclo, quando parte de um pipeline iterativo agile ou DevOps).
A maioria das ferramentas de orquestração de contêineres suporta um modelo de configuração declarativa: um desenvolvedor escreve um arquivo de configuração (em YAML ou JSON, dependendo da ferramenta) que define um estado de configuração desejado. A ferramenta de orquestração que executa o arquivo usa sua própria inteligência para alcançar esse estado. O arquivo de configuração normalmente:
- Define quais imagens de contêiner compõem a aplicação e onde estão localizadas (em qual registro).
- Fornece os contêineres com armazenamento e outros recursos.
- Define e protege as conexões de rede entre os contêineres.
- Especifica o controle de versão (para lançamentos em fases ou canary rollouts).
A ferramenta de orquestração agenda a implementação dos contêineres (e réplicas dos contêineres, para resiliência) em um host. Ela escolhe o melhor host com base na capacidade disponível de CPU, memória ou outros requisitos ou restrições especificados no arquivo de configuração.
Assim que os contêineres são implementados, a ferramenta de orquestração gerencia o ciclo de vida da aplicação conteinerizada com base no arquivo de definição do contêiner (muitas vezes um Dockerfile). Isso inclui:
- Gerenciar a escalabilidade (para cima e para baixo), balanceamento de carga e alocação de recursos entre os contêineres.
- Garantir a disponibilidade e o desempenho, realocando os contêineres para outro host no caso de uma falha ou escassez de recursos do sistema.
- Coletar e armazenar dados de log e outras telemetrias que são usadas para monitorar a saúde e o desempenho da aplicação.
Benefícios da orquestração de contêineres
Provavelmente já é claro que o principal benefício da orquestração de contêineres é a automação - e não apenas porque reduz significativamente o esforço e a complexidade de gerenciar um grande conjunto de aplicações conteinerizadas. Ao automatizar operações, a orquestração suporta uma abordagem ágil ou DevOps que permite às equipes desenvolver e implementar em ciclos rápidos e iterativos e lançar novos recursos e recursos mais rapidamente.
Além disso, a inteligência de uma ferramenta de orquestração pode aprimorar ou estender muitos dos benefícios inerentes da conteinerização. Por exemplo, a seleção automatizada de hosts e a alocação de recursos, com base na configuração declarativa, maximizam o uso eficiente dos recursos de computação; o monitoramento automatizado da integridade e a realocação de contêineres maximizam a disponibilidade.