Kubernetes Cluster API

O Cluster API é um subprojeto do Kubernetes focado em fornecer APIs declarativas e ferramentas para simplificar o provisionamento, atualização e operação de vários clusters Kubernetes.

Iniciado pelo Grupo de Interesse Especial do Kubernetes (SIG) Cluster Lifecycle, o projeto Cluster API usa APIs e padrões no estilo do Kubernetes para automatizar o gerenciamento do ciclo de vida do cluster para operadores de plataforma. A infraestrutura de suporte, como máquinas virtuais, redes, balanceadores de carga e VPCs, bem como a configuração do cluster Kubernetes, são todas definidas da mesma forma que os desenvolvedores de aplicações trabalham, implantando e gerenciando suas cargas de trabalho. Isso permite implantações de cluster consistentes e repetíveis em uma ampla variedade de ambientes de infraestrutura.

⚠️ Breaking Changes ⚠️

Começando

Por que construir o Cluster API?

O Kubernetes é um sistema complexo que depende de vários componentes sendo configurados corretamente para ter um cluster funcionando. Reconhecendo isso como um potencial obstáculo para os usuários, a comunidade se concentrou em simplificar o processo de bootstrapping. Hoje, mais de 100 distribuições e instaladores para o Kubernetes foram criados, cada um com diferentes configurações padrão para clusters e provedores de infraestrutura suportados. O SIG Cluster Lifecycle viu a necessidade de uma única ferramenta para resolver um conjunto de preocupações comuns de instalação sobrepostas e iniciou o kubeadm.

O [Kubeadm] (https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/) foi projetado como uma ferramenta focada para inicializar um cluster Kubernetes com as melhores práticas. O princípio central por trás do projeto kubeadm era criar uma ferramenta que outros instaladores pudessem aproveitar e, finalmente, aliviar a quantidade de configuração que um instalador individual precisava manter. Desde que começou, o kubeadm tornou-se a ferramenta de bootstrapping subjacente para várias outras aplicações, incluindo Kubespray, minikube, tipo, etc.

No entanto, embora o kubeadm e outros provedores de bootstrap reduzam a complexidade da instalação, eles não abordam como gerenciar um cluster diariamente ou um ambiente Kubernetes a longo prazo. Você ainda se depara com várias perguntas ao configurar um ambiente de produção, incluindo:

  • Como posso provisionar consistentemente máquinas, balanceadores de carga, VPC, etc., em vários provedores de infraestrutura e locais?
  • Como posso automatizar o gerenciamento do ciclo de vida do cluster, incluindo coisas como atualizações e exclusão de cluster?
  • Como posso escalar esses processos para gerenciar qualquer número de clusters?

O SIG Cluster Lifecycle iniciou o projeto Cluster API como uma maneira de resolver essas lacunas criando APIs declarativas, no estilo Kubernetes, que automatizam a criação, a configuração e o gerenciamento de clusters. Usando esse modelo, a API de cluster também pode ser estendida para oferecer suporte a qualquer provedor de infraestrutura (AWS, Azure, vSphere, etc.) ou provedor de bootstrap (kubeadm é padrão) que você precisar. Veja a lista crescente de provedores disponíveis.

Escopo do projeto

  • Gerenciar o ciclo de vida (criar, dimensionar, atualizar, destruir) de clusters compatíveis com Kubernetes usando uma API declarativa.
  • Trabalhar em diferentes ambientes, tanto on-premises quanto na nuvem.
  • Definir operações comuns, fornecer uma implementação padrão e fornecer a capacidade de trocar implementações por outras alternativas.
  • Reutilizar e integrar componentes do ecossistema existentes em vez de duplicar sua funcionalidade (por exemplo, detector de problemas de nó, autoscaler de cluster, SIG-Multi-cluster).
  • Fornecer um caminho de transição para que os produtos do ciclo de vida do Kubernetes adotem a API de cluster de forma incremental. Especificamente, as ferramentas de gerenciamento do ciclo de vida do cluster existentes devem ser capazes de adotar a API de cluster de maneira escalonada, ao longo de várias versões ou até mesmo adotar um subconjunto da API de cluster.

Fora do escopo do projeto

  • Para adicionar essas APIs ao núcleo do Kubernetes (kubernetes/kubernetes).
    • Essa API deve existir em um namespace fora do core e seguir as práticas recomendadas definidas pelos revisores de api, mas não está sujeita a restrições de api principal.
  • Gerenciar o ciclo de vida da infraestrutura não relacionada à execução de clusters compatíveis com Kubernetes.
  • Forçar todos os produtos do ciclo de vida do Kubernetes (kOps, Kubespray, GKE, AKS, EKS, IKS etc.) a suportar ou usar essas APIs.
  • Para gerenciar clusters não provisionados em conformidade com Kubernetes provisionados pela API de cluster.
  • Gerenciar um único cluster abrangendo vários provedores de infraestrutura.
  • Para configurar uma máquina a qualquer momento que não seja criar ou atualizar.
  • Para duplicar a funcionalidade que existe ou está chegando a outras ferramentas, por exemplo, atualizando a configuração do kubelet (c.f. configuração dinâmica do kubelet), ou atualizando apiserver, controller-manager, configuração do agendador (c.f. component-config effort) após a implantação do cluster.

🤗 Comunidade, discussões, contribuição, e suporte

O projeto Cluster API é desenvolvido de forma aberta está constantemente sendo aprimorada por nossos usuários, colaboradores e mantenedores. É por sua causa que podemos automatizar o gerenciamento do ciclo de vida do cluster para a comunidade. Junte-se a nós!

Se você tiver dúvidas ou quiser obter as últimas notícias do projeto, você pode se conectar com a gente das seguintes maneiras:

  • Converse com a gente no slack do Kubernetes no canal #cluster-api
  • Inscreva-se no grupo do google do SIG Cluster Lifecycle para ter acesso a documentos e agendas
  • Participe de nossas sessões do grupo de trabalho, onde compartilhamos as últimas notícias do projeto, demonstrações, perguntas e triagem de issues
    • Semanalmente às quartas-feiras @ 10:00 PT em Zoom
    • Reuniões anteriores: [ [notas][notas] | [gravações] [gravações] ]

Pull Requests e feedback sobre issues são muito bem-vindos! Consulte o [tracker de issue] se não tiver certeza por onde começar, especialmente as tags Good first issue e Help wanted e também sinta-se livre para entrar em contato para discutir.

Consulte também nosso guia do colaborador e a [página da comunidade] do Kubernetes para obter mais detalhes sobre como se envolver.

Código de conduta

A participação na comunidade Kubernetes é regida pelo Código de Conduta do Kubernetes.