Repo for my Homek8s lab . Bare metal and cloud nodes bootstrapped with kubeadm. Repo synced with FluxCD .
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Lance Walters 09ad7485af fix(forgejo): arm64 runner back to multi-arch forgejo/runner image
alex3305/forgejo-runner-dind ships an amd64 binary in its arm64 manifest,
so the Pi failed with 'exec /usr/local/bin/forgejo-runner: exec format
error'. That took pi-runner (the only runner declaring the bare 'docker'
label) offline and stalled every runs-on: docker job.
2026-09-18 23:50:30 -04:00
apps fix(forgejo): arm64 runner back to multi-arch forgejo/runner image 2026-09-18 23:50:30 -04:00
clusters add apps kustomizations 2026-09-18 23:14:34 -04:00
infographic/home-k8s-mesh cillium gateway config switch to linode node as gateway 2026-09-14 23:47:48 -04:00
infrastructure feat(cilium): enable bpf-lb-external-clusterip for WG spokes 2026-09-18 20:37:18 -04:00
monitoring/controllers/home Initial HomeK8s tree matching lab GitOps layout. 2026-09-10 23:38:04 -04:00
.gitignore Initial HomeK8s tree matching lab GitOps layout. 2026-09-10 23:38:04 -04:00
Makefile Initial HomeK8s tree matching lab GitOps layout. 2026-09-10 23:38:04 -04:00
README.md Initial HomeK8s tree matching lab GitOps layout. 2026-09-10 23:38:04 -04:00

HomeK8s

Home Kubernetes cluster (kubeadm), same GitOps layout as lab/.

Flux CD will take over once Forgejo is back. Until then apply with kustomize:

kubectl apply -k infrastructure/home

Cluster

Node WG IP Roles Notes
siriussec 10.10.0.2 control-plane, worker default scheduling
rpi 10.10.0.1 traffic, worker dedicated=network:PreferNoSchedule
  • CNI: Cilium 1.18.13, kube-proxy replacement, Gateway API hostNetwork on dedicated=network
  • Overlay: WireGuard 10.10.0.0/24 (API only on WG)
  • Ingress: Cloudflare tunnel → 127.0.0.1:8080 on rpi → Gateway gateway-system/public
  • Storage: local-path on siriussec (/opt/local-path-provisioner)

Pin traffic / light workloads to the Pi:

nodeSelector:
  dedicated: network

Layout

homek8s/
├── apps/
│   ├── base/                 # app definitions
│   └── home/                 # overlay applied to this cluster
├── clusters/
│   └── home/                 # Flux Kustomizations (bootstrap later)
│       ├── flux-system/      # flux bootstrap (after Forgejo)
│       ├── apps.yaml
│       ├── infrastructure.yaml
│       └── monitoring.yaml
├── infrastructure/
│   ├── home/                 # kubectl apply -k target (no HelmRelease)
│   ├── networking/
│   │   ├── cilium/           # HelmRelease for Flux
│   │   └── gateway/          # Cilium Gateway API
│   ├── storage/              # local-path provisioner
│   ├── controllers/
│   └── databases/
└── monitoring/

Apply (now)

kubectl apply -k infrastructure/home

That installs storage + the public Gateway. Cilium is already running; its HelmRelease is only for Flux.

Flux (later)

When Forgejo is up:

flux bootstrap git \
  --url=ssh://[email protected]:222/sirius/homek8s.git \
  --branch=master \
  --path=clusters/home

clusters/home/*.yaml already point at ./apps/home, ./infrastructure/home, and ./monitoring/controllers/home.