Todos os projetos

Plataforma systemsgf

Minha própria nuvem: Kubernetes, GitOps e deploy automático em uma VPS

Papel
Projeto pessoal: arquitetura e operação
Situação
Em produção

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

  1. git pushbranch main
  2. GitHub Actionstestes e imagem Docker
  3. GHCRregistro de imagens
  4. Repositório GitOpsversão gravada no catálogo
  5. Argo CDsincroniza o cluster
  6. 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

  • K3s
  • Argo CD
  • Helm
  • Traefik
  • cert-manager
  • Sealed Secrets
  • GitHub Actions
  • GHCR
  • Prometheus
  • Alertmanager
  • Kafka (Strimzi)
  • PostgreSQL 16
  • Linux (Ubuntu)

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.

Este site é Angular pré-renderizado em português e inglês, criado pelo meu Projects Generator e publicado na minha plataforma Kubernetes.

© 2026 Gustavo Gomes Farias