Small Kubernetes platform on Verda Cloud.
- Two CPU virtual machines on Verda Cloud
- Two-node k3s Kubernetes cluster
- Traefik ingress controller
- metrics-server
- cert-manager with Let's Encrypt TLS
- Sample application exposed externally over HTTPS
- Prometheus and Grafana monitoring stack
- Basic Prometheus alert for sample application availability
- Basic read-only RBAC example
- Backup and restore notes
- HTTPS ingress with cert-manager and Let's Encrypt
- Prometheus and Grafana monitoring
- Grafana screenshots under
docs/screenshots/ - Basic Prometheus alert rule
- Read-only RBAC example
- Backup and restore notes
| Node | Role | Size | OS |
|---|---|---|---|
| control-plane-1 | k3s control plane | 4 vCPU / 16 GB RAM | Ubuntu 24.04 |
| worker-1 | k3s worker | 4 vCPU / 16 GB RAM | Ubuntu 24.04 |
| Path | Purpose |
|---|---|
kubernetes/sample-app/ |
Sample application Deployment, Service, and Ingress |
kubernetes/cert-manager/ |
Let's Encrypt ClusterIssuers |
kubernetes/monitoring/ |
Monitoring Helm values |
kubernetes/monitoring/alerts/ |
Basic Prometheus alert rules |
kubernetes/rbac/ |
Basic read-only RBAC example |
scripts/ |
Installation scripts |
docs/ |
Architecture, operations notes, backup notes, and |
| screenshots |
Install cert-manager:
./scripts/install-cert-manager.sh
kubectl apply -f kubernetes/cert-manager/Deploy the sample application:
kubectl apply -f kubernetes/sample-app/Install monitoring:
./scripts/install-monitoring.shThe sample application is exposed through HTTPS:
https://hello.<control-plane-public-ip>.sslip.io
The live demo endpoint uses sslip.io and includes the control-plane public IP as a practical demo hostname.
Grafana is accessed through port-forwarding and is not exposed publicly.
Secrets, kubeconfig files, SSH private keys, k3s node tokens, Grafana passwords, and generated TLS Secrets are not committed to this repository.
The .gitignore includes patterns for kubeconfigs, node tokens, private keys, env files, Terraform variable files, and crash logs.