Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

k8s-platform

Small Kubernetes platform on Verda Cloud.

What was built

  • 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

Bonus items completed

  • 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

Cluster

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

Repository layout

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

Deployment commands

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.sh

Access

The 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.

Security note

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.

About

A small Kubernetes cluster setup, application deployment, ingress, monitoring, and operational practices.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages