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