Skip to content

Latest commit

Β 

History

76 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HomeLab

Structure

The hierarchy is: Cluster > Namespace > Application > Component

.
β”œβ”€ tofu                             MACHINE LAYER
β”‚  β”œβ”€ modules/talos-cluster         Proxmox VMs + Talos config + bootstrap
β”‚  β”œβ”€ clusters/<cluster>            one root module and one state file each
β”‚  └─ scripts                       the Proxmox identity OpenTofu runs as
β”‚
β”œβ”€ talos                            MACHINE CONFIG INPUTS
β”‚  β”œβ”€ talenv.yaml                   Talos + Kubernetes versions
β”‚  └─ patches                       shared machine config patches
β”‚
β”œβ”€ clusters                         WHAT EACH CLUSTER RUNS
β”‚  └─ <cluster>
β”‚     β”œβ”€ root.yaml                  app-of-apps root
β”‚     β”œβ”€ projects.yaml              AppProjects
β”‚     β”œβ”€ platform/*.yaml            one Application per platform component
β”‚     β”œβ”€ apps/*.yaml                one Application per workload
β”‚     └─ values/*.yaml              per-cluster Helm values
β”‚
β”œβ”€ infrastructure                   PLATFORM CONTENT
β”‚  β”œβ”€ base/<app>/values.yaml        Helm values shared by both clusters
β”‚  └─ <cluster>/<ns>/<app>/config   cluster-specific CRs
β”‚
└─ apps                             WORKLOAD CONTENT
   β”œβ”€ base/<app>                    manifests shared by both clusters
   └─ <cluster>/<app>               kustomize overlay

ToDos

  • Alerting: So for example a failed Argo sync is a push notification to my phone.
  • Backups: The workload data on local-path is currently node-local and unreplicated.
  • App Authentication Layer: Using Envoy Gateway with a OIDC Provider.
  • SAST and DAST Scanning: Trivy, SonarQube, OWASP ZAP, etc.
  • Security Review & Hardening Kubescape, etc.
  • Runtime Security: Tetragon, Falco, etc.
  • OS Isolation: Kata Containers or similar.
  • Virtual Machines: KubeVirt
  • Allow spreading of Talos nodes across physical hosts: e.g.:
    nodes = {
      "prod-cp-1" = { vm_id = 201, ip = "10.42.5.201", pve_node = "pvebig" }
      "prod-cp-2" = { vm_id = 202, ip = "10.42.5.202", pve_node = "pvesmall" }
      "prod-cp-3" = { vm_id = 203, ip = "10.42.5.203", pve_node = "pvelaptop" }
    }

About

🏑 Playground for testing and learning

Topics

Resources

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages