Kubernetes at home for fun and education
Homekube.org aims to set up a full operational kubernetes environment on a baremetal Ubuntu server. The focus is getting something done first and improve your kubernetes skills step by step along a happy path.
Following this tutorial you should have Kubernetes and a sample application installed along with the most useful and popular administration components on your local Ubuntu server(s):
App | Tutorial | Online AMD64 |
Online Raspberry |
Online IAM Keycloak |
---|---|---|---|---|
‘Who am I’ echo service | whoami.md | |||
Kubernetes dashboard | dashboard.md | |||
Grafana monitoring | grafana.md | |||
Prometheus metrics | prometheus.md | |||
Testing payloads and response times *1) |
workload-testing.md |
Where logins are required use demo/demo with only basic dashboard permissions to view namespaces, pods and logs.
Or use simple-user/s3cr3t (supported by Keycloak SSO IAM) with dashboard read access on (almost) all objects.
Then Logoff from SSO
Project philosophy
The idea of this project is to set up a fully functional kubernetes environment on budget hardware - a PC / Server or a Raspberry Pi. While learning step by step the final setup is a complete professional appliance with all major components integrated. All steps are explained in detail and accompanied by publicly accessible online demos.
There are many ways to install Kubernetes locally but for simplicity we’ll follow Ubuntu’s recommended MicroK8s installation recipes. With just a few commands we will setup a Kubernetes single node locally. For more complex setups including Multi-Host Multi-Cluster on a pile of Raspberrys see also the installation variants.
Requirements
- A PC / Server or arm64 (e.g. Raspberry 4 or 5) or a Virtual Machine with 4GB memory (8GB recommended) *2)
- When using a device without persistent memory (e.g. Raspberry) an external NAS drive supporting NFS filesystem.
Base Setup
This tutorial focuses on setting up a containerized environment using a container runtime. *3)
While its more complex than direct installation it offers the additional benefit of running multiple containers / instances of the target hardware.
Setup environment -> Provision container(s)
TLDR; Service installation
Use the (semi-) automated scripts in src/install-all.sh
(without Keycloak SSO)
or src/install-with-sso1.sh
and src/install-with-sso2.sh
(includes postgres db and keycloak)
Service installation
A step by step approach
Quick tour
Dashboard -> Helm I -> Helm / Echo Service -> Echo service II
Advanced tour I
Quick tour -> Ingress -> Dashboard II -> Nfs -> Prometheus Metrics -> Grafana
Advanced tour II
Advanced tour I -> Cert manager -> Testing response times and payloads
Pro tour
Advanced tour II -> Postgres Storage -> Keycloak installation -> Keycloak config -> Dashboard SSO / Oauth2-proxy
Footnotes
*1) -> open dashboard ‘Request Handling Performance’
*2) An ethernet connection to the target device is required. WLAN does not work out of the box.
NOTE that if you want to use a VM on your developers workstation as a target the installation requires additional steps not covered in this tutorial.
*3) If you prefer a simpler approach follow skipping containers