![]() |
![]() |
This is an educational project to explore kubernetes cluster configurations using an ARM architecture and its automation using Ansible.
The entire process for creating this cluster at home, from cluster design and architecture to step-by-step manual configuration guides, has been documented and it is published in the project website: https://picluster.ricsanfre.com.
This repository contains the Ansible's source code (playbooks/roles) and Cloud-init's configuration files used for automated all manual tasks described in the documentation. The cluster can be re-deployed in minutes as many times as needed for testing new cluster configurations, new software versions or just take you out of any mesh you could cause playing with the cluster.
Automatically deploy and configure a lightweight Kubernetes flavor based on K3S and deploy cluster basic services such as: 1) distributed block storage for POD's persistent volumes, LongHorn, 2) backup/restore solution for the cluster, Velero and Restic, 3) service mesh architecture, Linkerd, and 4) observability platform based on metrics monitoring solution, Prometheus, logging and analytics solution, EFḰ+LG stack (Elasticsearch-Fluentd/Fluentbit-Kibana + Loki-Grafana), and distributed tracing solution, Tempo.
The following picture shows the set of opensource solutions used so far in the cluster, which installation process has been documented and its deployment has been automated with Ansible:
Home lab architecture, showed in the picture below, consist of a Kubernetes cluster of 5 nodes (1 master and 4 workers) and a firewall, built with another Raspberry PI, to isolate cluster network from your home network.
See further details about the architecture and hardware in the documentation
You can browse more information about Pi Cluster Project on https://picluster.ricsanfre.com/.
The content of this website and the source code to build it (Jekyll static based website) are also stored in this repo: /docs
folder.
Check out the documentation Quick Start guide to know how to use and tweak cloud-init files (/cloud-init
folder) and Ansible playbooks contained in this repository.
This project was started in June 2021 by Ricardo Sanchez