O KubeCube é uma plataforma open-source para gerenciamento de clusters Kubernetes com foco em provisionamento de múltiplos tenants e governança. Este guia explora os aspectos fundamentais de sua estrutura e operação.
Estrutura de Diretórios do Projeto
A organização do código-fonte do KubeCube segue um layout modular para facilitar a manutenção e expansão:
build/: Armazena scripts e configurações relacionados ao prcoesso de build, como Makefiles e definições de imagens de contêiner.cmd/: Contém os pontos de entrada (entrypoints) para os diversos binários do projeto. Cada subdiretório representa um serviço ou ferramenta de linha de comando (CLI) distinta.config/: Oferece templates e exemplos de arquivos de configuração. Inclui manifests YAML para Custom Resource Definitions (CRDs) e configurações de implantação.deploy/: Fornece recursos prontos para implantação no Kubernetes, como manifests Helm ou Kustomize, destinados a ambientes de produção ou teste.pkg/: Constitui o núcleo lógico do projeto, com pacotes Go organizados por funcionalidade, como autenticação, reconciliação de controladores e integrações.
Inicialização e Execução do Serviço
O processo de compilação e execução é gerenciado por ferramentas de build automatizadas. Para compilar o binário principal do servidor KubeCube:
- Garanta que o ambiente tenha o compilador Go e as ferramentas de build instaladas.
- Execute o comando de compilação: ```
make compile
Isso gera os executáveis na pasta `./out/bin/`. - Para iniciar o servidor principal, invoque o binário gerado passando o caminho para o arquivo de configuração: ```
./out/bin/kubecube-controller --config-file=./config/sample/kubecube-controller.yaml
Opcionalmente, variáveis de ambiente como KUBECUBE_LOG_LEVEL podem ser definidas para ajustar o comportamento antes da execução.
Parâmetros de Configuração Essenciais
A operação do KubeCube depende de vários arquivos de configuração, tipicamente localizados no diretório config/. Os principais incluem:
kubecube-controller.yaml: Define parâmetros do controlador principal, como portas de escuta, configurações de banco de dados, estratégias de sincronização e parâmetros de reconciliação de controladores.kubeconfig.yaml: Especifica as credenciais e endpoints para a conexão com o cluster Kubernetes gerenciado, incluindo contextos de autenticação e autorização.webhook.yaml: Configura os webhooks de validação e mutação para recursos customizados do KubeCube, garantindo políticas de governança.
A configuração pode ser sobrescrita em tempo de execução utilizando a flag --config-file ou através de variáveis de ambiente prefixadas, permitindo flexibliidade entre diferentes ambientes de implantação.