3.1 Overview
            
          
        
State/Version: 20250405
3.1 Overview
3.1.1 A few words before we start 🚀
Setting up a home lab takes time. The construction or renovation of a house is comparable in scope and complexity. In the end, you not only know where the pipes run, but also what you can do better when building the next one.
In addition to expertise, two character traits in particular are required to master a project like this.
Patience and Persistence
3.1.2 Tech skills 🧑💻
#loadbalancer
#metallb
#nat
#proxy-server
#vlan
#nat
#network-bridging
#yaml
#json
#traefik
#nginx
#etcd
#gitops
#fluxcd
#terraform
#ansible
#proxmox
#virtualbox
#kustomize
#helm
#k3s
#k8s
#k3d
#k9s
#cloudflare
#certmanager
#letsencrypt
#longhorn
#sealed-secrets
#dns
#ipam
#renovate
#prometheus
#grafana
3.1.3 State of automation 🏗️
  
      
          | Topic | Degree of automation | 
  
  
      
          | Provisioning - Proxmox | full ✅ | 
      
          | Provisioning - Docker | partially *3 🔥 | 
      
          | K8s Deployment - Virtualbox | full ✅ | 
      
          | K8s Deployment - Proxmox | full ✅ | 
      
          | K8s Deployment - Docker | full ✅ | 
      
          | GitOps Fluxcd - Virtualbox | full ✅ | 
      
          | GitOps Fluxcd - Proxmox | full ✅ | 
      
          | GitOps Fluxcd - Docker | full ✅ | 
      
          | Legend |  | 
      
          | *1 | Terraform Proxmox Plugin is currently broken | 
      
          | *2 | No tech demo (Because of *1) | 
      
          | *3 | This step is manuall | 
  
3.1.4 Workflow 🔀
Let’s flow through the setup.

3.1.5 Current Setup
Development Cluster (dxpsp1)
- The Development Cluster (🏷️Virtualbox) is provisioned and bootstraped with 🏷️Ansible
- Dell XPS 13 Plus 9320
Development Cluster (vmd95641)
The second Development Cluster (🏷️VPS) is provisioned manually as virtual machine at contabo and bootstraped with 🏷️Ansible.
Staging Cluster (K1) and Production Cluster (K2)
- Both Kubernetes clusters are provisioned with 🏷️Terraform on 🏷️Proxmox and bootstraped with 🏷️Talos.
%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart TD
    subgraph K2["`**K2**`"]
    direction LR
    K2-Loadbalancer["`_**Loadbalancer**_`"]
    K2-ControlPlane1["`_**Control Plane 1**_`"]
    K2-ControlPlane2["`_**Control Plane 2**_`"]
    K2-ControlPlane3["`_**Control Plane 3**_`"]
    K2-Worker1["`_**Worker 1**_`"]
    K2-Worker2["`_**Worker 2**_`"]
    K2-Worker3["`_**Worker 3**_`"]
    K2-Loadbalancer --> K2-ControlPlane1
    K2-Loadbalancer --> K2-ControlPlane2
    K2-Loadbalancer --> K2-ControlPlane3
    K2-ControlPlane1 --> K2-Worker1
    K2-ControlPlane1 --> K2-Worker2
    K2-ControlPlane1 --> K2-Worker3
    K2-ControlPlane2 --> K2-Worker1
    K2-ControlPlane2 --> K2-Worker2
    K2-ControlPlane2 --> K2-Worker3
    K2-ControlPlane3 --> K2-Worker1
    K2-ControlPlane3 --> K2-Worker2
    K2-ControlPlane3 --> K2-Worker3
    end
    style K2 fill:#9CD484,stroke:#00331a,stroke-width:1px
    subgraph K1["`**K1**`"]
    direction LR
    K1-Loadbalancer["`_**Loadbalancer**_`"]
    K1-ControlPlane1["`_**Control Plane 1**_`"]
    K1-ControlPlane2["`_**Control Plane 2**_`"]
    K1-ControlPlane3["`_**Control Plane 3**_`"]
    K1-Worker1["`_**Worker 1**_`"]
    K1-Worker2["`_**Worker 2**_`"]
    K1-Worker3["`_**Worker 3**_`"]
    K1-Loadbalancer --> K1-ControlPlane1
    K1-Loadbalancer --> K1-ControlPlane2
    K1-Loadbalancer --> K1-ControlPlane3
    K1-ControlPlane1 --> K1-Worker1
    K1-ControlPlane1 --> K1-Worker2
    K1-ControlPlane1 --> K1-Worker3
    K1-ControlPlane2 --> K1-Worker1
    K1-ControlPlane2 --> K1-Worker2
    K1-ControlPlane2 --> K1-Worker3
    K1-ControlPlane3 --> K1-Worker1
    K1-ControlPlane3 --> K1-Worker2
    K1-ControlPlane3 --> K1-Worker3
    end
    style K1 fill:#9CD484,stroke:#00331a,stroke-width:1px