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.