Plataforma systemsgf
Minha própria nuvem: Kubernetes, GitOps e deploy automático em uma VPS
O problema
Eu queria publicar meus projetos com o padrão de uma empresa (HTTPS, deploy automático, rollback, monitoramento e alertas) sem pagar por vários serviços gerenciados e entendendo cada peça.
O que construí
Cluster K3s em uma VPS, com Traefik e certificados Let’s Encrypt emitidos automaticamente pelo cert-manager. GitOps com Argo CD no padrão app of apps: tudo o que roda no cluster está descrito em um repositório, e o rollback é um git revert. CI reutilizável no GitHub Actions: testes, imagem no GHCR, versão gravada no catálogo e deploy pelo Argo CD. Segredos versionados com segurança via Sealed Secrets. Monitoramento com Prometheus, Alertmanager e Blackbox Exporter, com avisos de build e deploy no Telegram. PostgreSQL 16 com banco e usuário criados automaticamente para cada aplicação. Kafka (Strimzi, modo KRaft) para mensageria entre serviços.
Arquitetura
- git pushbranch main
- GitHub Actionstestes e imagem Docker
- GHCRregistro de imagens
- Repositório GitOpsversão gravada no catálogo
- Argo CDsincroniza o cluster
- K3sapp no ar com HTTPS
Falhas de build e de deploy geram avisos no Telegram (Alertmanager).
Decisões técnicas
K3s em vez de um Kubernetes completo
Cabe em uma única VPS e mantém as mesmas APIs e ferramentas do Kubernetes.
Catálogo + ApplicationSet
Publicar um app novo é adicionar um arquivo app.yaml: um chart padrão atende APIs e frontends.
Segurança por padrão
Firewall só com 22/80/443, API do Kubernetes fora da internet, Argo CD com chave somente leitura e segredos nunca em texto no Git.
Trocas de versão sem queda
Reservas de CPU e memória dimensionadas e rolling update com maxSurge 1 e maxUnavailable 0.
Tecnologias
Resultado
Hoje a plataforma roda o G-Finance, o GGoals, o Projects Generator e este portfólio, cada um no seu namespace e com deploy automático a cada push.