Skip to content

emerconn/fleet-infra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

github-pages flux

fleet-infra

My homelab-as-code, with horrible commit messages.

hardware

network MikroTik Router AdGuard Home Unifi Network Server

  • MikroTik hAP ax³
    • DNS via containerized AdGuard Home (yes, MikroTik routers are based af, they can run containers)
    • WireGuard for secure external access
    • IKEv2 IPSec tunnels to my Azure subscription
  • Unifi Switch Lite 8 PoE
  • Unifi AP U6 Pro PoE

storage Synology DSM

  • Synology DS720+
    • Storage: 4x 1TB SATA SSD
    • Cache: 2x 256GB NVMe M.2 SD
    • RAM: 16GB
    • Network: 2x 1GbE ports using LAG (link aggregation)

servers

Talos Linux bare-metal Kubernetes cluster running on mini-desktop PCs. Cheap and simple, unlike my ex.

repository management

Renovate Renovate Dashboard

  • Automated detailed PRs for version upgrades of Flux HelmReleases, container image tags, & K8s .yaml resources
  • Configured as a GitHub app (migrate to GitHub Action cause it looks cooler?)

FluxCD

  • automatically manage Kubernetes resources as code
  • whenever main is updated, this GitHub Action remotely reconciles my cluster by connecting to the K8s API via Tailscale

SOPS

  • encrypts K8s secrets on the client with age.key, using the age protocol, before commiting them to Git
  • Flux decrypts the secrets within the cluster before applying, using a Secret containing age.key
  • configured via .sops.yaml & gotk-sync.yaml

kubernetes

external

Cloudflare Cloudflare DNS Records Cloudflare Audit Log Cloudflare API Tokens

Tailscale Tailscale Machines Tailscale ACL Editor

HCP Vault Secrets HCP Vault Secrets

internal

Kubernetes Dashboard Kubernetes Dashboard

  • K8s web UI & resource explorer

Headlamp Headlamp Main

  • K8s web UI & resource explorer

OpenObserve OpenObserve Home

  • Full-stack observability (logs, traces, metrics), ~71:1 compression ratio, & a web UI for queries & dashboards

Prometheus Prometheus Targets

  • Time-series database for collecting & alterting on application & infrastructure metrics
  • Deployed via kube-prometheus-stack

Grafana Grafana Dashboards

  • Visualize metrics, logs, & traces from multiple sources
  • Deployed via kube-prometheus-stack

Cilium

  • K8s eBPF-based CNI & kube-proxy replacement
  • K8s Ingress & Gateway API controller
  • K8s LoadBalancer backend via L2 Advertisments using gratuitous ARP

Hubble Cilium Hubble

  • Visual map & event log of the Cilium CNI

Traefik Traefik Dashboard

  • K8s Ingress & Gateway API controller
  • all *.homelab.emerconnelly.com links are directed, via AdGuard Home DNS config, to the LoadBalancer service for this IngressClass
    • this includes both intra- & inter-cluster resources

MinIO MinIO Main Tenant

  • Deploy highly-available & fully API-compliant S3 storage tenants
  • Controlled via minio-operator

GitHub Pages