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
- Início Rápido
- Conceitos
- Guia de desenvolvimento
- Contribuindo
- Vídeos explicando a arquitetura do Cluster API
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.