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](https://docs.k3s.io/installation/requirements) * [Flux CLI](https://fluxcd.io/flux/installation/#install-the-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`: ```sh ~$ 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](https://fluxcd.io/flux/installation/bootstrap/gitlab/) Para isso execute o bootstrap. Ele pedirá seu Gitlab PAT (token de autenticação): ```sh # Explicação do Comando flux bootstrap gitlab \ --components-extra=source-watcher \ --deploy-token-auth \ --owner= \ --repository= \ --branch= \ --path= # 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