systemsgf platform
My own cloud: Kubernetes, GitOps and automatic deployments on a VPS
The problem
I wanted to ship my projects to company standards (HTTPS, automatic deployments, rollback, monitoring and alerts) without paying for several managed services, and understanding every piece.
What I built
K3s cluster on a VPS, with Traefik and Let’s Encrypt certificates issued automatically by cert-manager. GitOps with Argo CD using the app-of-apps pattern: everything running in the cluster is described in one repository, and rollback is a git revert. Reusable CI on GitHub Actions: tests, image on GHCR, version recorded in the catalog and deployment by Argo CD. Secrets safely versioned with Sealed Secrets. Monitoring with Prometheus, Alertmanager and Blackbox Exporter, with build and deploy alerts on Telegram. PostgreSQL 16 with a database and user created automatically for each application. Kafka (Strimzi, KRaft mode) for messaging between services.
Architecture
- git pushmain branch
- GitHub Actionstests and Docker image
- GHCRimage registry
- GitOps repositoryversion recorded in the catalog
- Argo CDsyncs the cluster
- K3sapp live with HTTPS
Build and deployment failures trigger Telegram alerts (Alertmanager).
Technical decisions
K3s instead of full Kubernetes
Fits on a single VPS while keeping the same Kubernetes APIs and tooling.
Catalog + ApplicationSet
Shipping a new app means adding an app.yaml file: one standard chart serves both APIs and front ends.
Secure by default
Firewall open only on 22/80/443, Kubernetes API not exposed, read-only key for Argo CD and no plain-text secrets in Git.
Zero-downtime upgrades
Sized CPU and memory reservations and rolling updates with maxSurge 1 and maxUnavailable 0.
Technologies
Outcome
The platform runs G-Finance, GGoals, the Projects Generator and this portfolio, each in its own namespace and deployed automatically on every push.