Essa página detalha como, a partir de um Linux qualquer, instalar o k3s e configurá-lo para sincronizar com o GitLab via FluxCD + Flux operator. Esses são os passos seguidos para inicializar os ambientes de dev e de prd disponíveis publicamente. # **Setup com um nó** 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 Operator](https://fluxcd.io/flux/installation/#install-the-flux-cli) [](https://fluxoperator.dev/docs/guides/cli/#installation)[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`: ```text ~$ 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 Flux Operator** Agora vamos instalar o Flux Operator no cluster de produção utilizando o repositório Git que já estamos usando para o cluster de dev. Para isso, na pasta `clusters/prd`, crie o `flux-instance.yaml` baseado no arquivo do cluster de dev. Basta copiar o arquivo e mudar o `.spec.sync.path` para a pasta de `prd`. Após criar o arquivo novo, **dê commit e mande para o GitLab** as mudanças para a pasta existir quando o Flux for inicializar (a instalação falha caso a pasta não exista) Agora, no cluster de produção, precisamos criar o secret para o Flux poder acessar o GitLab. Crie um PAT (Personal Access Token) e use-o para criar o secret `flux-system` no cluster com o comando abaixo (referenciado pelo `flux-instance.yaml` em `.spec.sync.pullSecret`): ```text kubectl create ns flux-system || true && \ kubectl create secret generic \ --from-literal=username='CaronaShow FluxCD Prd' \ --from-literal=password="$(read)" \ -n flux-system flux-system ```
Com o secret criado, inicialize o flux usando o `flux-operator` via cli: ```text flux-operator install -f flux-instance.yaml ``` Após a inicialização do Flux, basta configurar os apps para executar em produção! ## **Conclusão** Agora o cluster vai observar os arquivos dentro do `clusters/prd` e aplicar automaticamente no cluster.