Content
Setup K3s + FluxCD + GitLab
Essa página detalha como, a partir de um Linux qualquer, instalar o k3s e configurá-lo para sincronizar com o GitLab via FluxCD.
Esses são os passos seguidos para inicializar os ambientes de dev e de prd disponíveis publicamente.
Setup com um nó (ambiente de dev)
Seguindo esse setup você terá um k3s rodando em uma máquina Linux, se tornando um "cluster" de apenas um nó.
Requisitos
-
Requisitos do K3s: Requirements | K3s
-
Flux CLI instalado na sua máquina
-
Conta no GitLab
-
Repositório já criado no GitLab
Passo-a-passo
Entre na máquina onde será instalado o K3s via SSH.
Instalação do K3s
Baseada na documentação oficial. Aqui apenas descrevo o passo a passo para o nosso caso de uso.
Execute o seguinte comando para instalar o K3s: curl -sfL https://get.k3s.io | sh -
Após a finalização, confirme o funcionamento: sudo k3s kubectl get node:
~$ sudo k3s kubectl get node
NAME STATUS ROLES AGE VERSION
caronashow-dev-0 Ready control-plane 40m v1.34.6+k3s1
Acesso remoto do cluster
Para acessar o cluster sem precisar ficar manualmente entrando no shell da máquina via SSH, copie o kubeconfig do k3s via SSH.
O kubeconfig fica localizado em /etc/rancher/k3s/k3s.yaml
Após copiar, abra o arquivo e altere o IP do server no YAML para apontar para o IP da máquina remota.
Configure seu kubectl para usar esse kubeconfig. Pronto!
Bootstrap do FluxCD
Agora o Flux vai criar os arquivos no repositório Git e manter o sincronismo do estado no Git com o cluster.
Baseado na documentação oficial: Flux bootstrap for GitLab
Para isso execute o bootstrap. Ele pedirá seu Gitlab PAT (token de autenticação):
# Explicação do Comando
flux bootstrap gitlab \
--components-extra=source-watcher \
--deploy-token-auth \
--owner=<grupo do gitlab> \
--repository=<nome do repositório> \
--branch=<branch default do git> \
--path=<caminho raíz aonde ficará os manifests>
# Nossa execução
flux bootstrap gitlab \
--components-extra=source-watcher \
--deploy-token-auth \
--owner=caronashow \
--repository=kubernetes \
--branch=main \
--path=clusters/dev
Conclusão
Agora o cluster vai observar os arquivos dentro do path configurado no bootstrap e automaticamente atualizar seu estado para manter o sincronismo. Por padrão, o cluster verifica atualizações uma vez por minuto.
Setup com múltiplos nós (ambiente de prd)
TODO