Reference to install and configure a Kubernetes cluster
- Clone this repo to your intended master node machine
- Copy
xx-<CONFIG>.template.sh
toxx-<CONFIG>.sh
and update accordingly to your needs. - Set strict permissions with
chmod 700 -R config/
.
Below components are basic building blocks to provide a fully functional cluster.
- Hetzner Cloud Controller Manager (Hetzner Cloud API integration)
- Hetzner CSI driver (Storage)
- Hetzner Cloud floating IP controller
- Canal (Pod Networking)
- Metal LB (Bare metal load-balancer)
- Traefik (Ingress Controller)
- Longhorn (Storage provider)
Following services are the actual services I want to host on the cluster.
- Grafana: Dashboard for cluster monitoring and home temperature monitoring
- Guacamole: Remote desktop gateway for SSH hosts
- IMAP Alerter: Sends a notification to my main account, in case there is a mail on a secondary account
- IMAP Save attachments (ISA): Save all attachments which are sent to a mailbox to Nextcloud (or any other Rsync supported storage)
- Monitor Temp: InfluxDB to store my temperature at home. Temperature is measured with ESP32's and broadcasted over MQTT. Telegraf consumes the data and inserts it into this InfluxDB. Results are shown on a Grafana dashboard.
- Monitoring: Prometheus deployment to monitor the cluster
- Nextcloud: Private cloud to store files, contacts, calendars and tasks
- OpenVPN: Protects internet traffic on insecure networks
- Passit: Shared password manager
- Every 5 mins: Nextcloud cron.php (services/Nextcloud/50-nextcloud.yml: cron)
- Every 10 mins: Nextcloud generate previews (services/Nextcloud/50-nextcloud.yml: cron)
- None
- 02:00 Dump Nextcloud DB (services/Nextcloud/70-backup-mariadb.yml)
- 02:05 Dump Nextcloud calendars and contacts (services/Nextcloud/50-nextcloud.yml: backup-calcard)
- 02:15 Dump Passit DB (services/Passit/71-backup-postgresql.yml)
- 03:00 Run global Borgmatic (services/Borgmatic/30-borgmatic.yml)
- 03:30 Run Borgmatic for Nextcloud (services/Nextcloud/80-borgmatic.yml)
- 04:30 Update all Nextcloud apps (services/Nextcloud/50-nextcloud.yml)
- None