Skip to content

cod3nest/rpi-home-cluster-setup

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Raspberry Pi kubernetes cluster on Alpine linux setup

This repository is supposed to help if I'd EVER AGAIN destroy the whole cluster by accident. Code is a result of 6 hours coding marathon, but will be improved and patched in future.

Enhanced documentation

More explainatory documentation can be found in Medium article "I broke my Raspberry Pi kubernetes cluster" published 14/03 ( Pi day ).

Usage

Memory card preparations [step1]

To prepare memory cards check the step1 directory. If your Pi memory card is present under /dev/disk5 - you don't need to change anything, otherwise change it to the device of your choice.

PI_CARD="/dev/disk5"

Run the following script which will:

  • Format memory card
  • Split it into two partitions (1G + remaining)
  • Copy basic Alpine system onto 1G partition
  • Add an overlay allowing ethernet interface get up and SSH root access without the password
001-prepare-card.sh

Cluster preparations [step2]

Before

  • Modify pi-hosts.txt file and adjust it to your setup.
  • Modify address class in step2/static/k8s-metallb-dashboard-config.yaml to suit your network

Add following to your ~/.ssh/config file

Host pi?
  User root
  Hostname %h.local

Prepare your nodes for Ansible

001-prepare-ansible.sh

Run the playbook

ansible-playbook rpi.yaml -f 10

K8S definitions [step3]

Use makefile from step3 to apply / destroy resources

Required environment variables:

TRAEFIK_API_KEY // Traefik API key
GH_USER // GitHub user
GH_PAT // GitHub Personal Access Token

Outcome

  • Raspberry Pi cluster running Alpine linux as a base
  • MetalLB for load balancing in your LAN
  • Kubernetes dashboard installed and exposed via MetalLB
  • Traefik managing the.. traffic

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 58.1%
  • HCL 40.5%
  • Makefile 1.4%