Este projeto é uma prova prática do "Operator Pattern", demonstrando como a lógica de um operador — que monitora e reconcilia o estado de recursos — pode ser implementada fora do Kubernetes, usando ferramentas básicas do Linux.
Ele atua como um HPA de pods Incus, baseando suas decisões no uso de memória.
O operador:
- Monitora o uso de memória de containers com o prefixo
pod. - Escala o número de pods para cima ou para baixo para manter a utilização de memória abaixo de um limite definido.
- Go: Linguagem de programação do operador.
- Incus: Para gerenciar os containers.
- systemd: Para rodar o operador como um serviço daemon.
- Shell Script: Para a instalação e desinstalação.
-
Prepare o ambiente: Execute o
lab-init.shpara criar o container inicial do Incus. -
Compile o operador: Rode
go build -o operador cmd/main.go. -
Instale e inicie o serviço: Execute
sudo ./operador/install-daemon.shpara instalar o operador como um serviçosystemd. Em seguida, rodesudo systemctl start operatorpara iniciá-lo. -
Configure os limites: Edite o arquivo
hpa.yamlpara ajustar os parâmetros de auto-escalonamento.
HPA:
minPods: 1
maxPods: 5
cpuThreshold: 80
memoryThreshold: 70