5.7 KiB
5.7 KiB
Platform Overzicht & Architectuur
Dit document biedt een integraal overzicht van het homelab- en serverplatform gehost op vmserver (10.2.0.4) binnen het domein bnhmeijer.nl.
🎯 Doel & Filosofie van het Platform
Het platform fungeert als een betrouwbare, geautomatiseerde en zelf-gehoste infrastructurele backbone voor:
- Centrale infrastructuurdiensten: Databases, message brokers en interne netwerkdiensten.
- GitOps & CI/CD: Volledig geautomatiseerde build- en deploymentpijplijnen vanaf broncode tot Kubernetes pod.
- Smart Home & IoT: Integratie van domotica (Home Assistant) en sensoren in het thuisnetwerk.
- Gespecialiseerde Automatisering (HERMS): Een geavanceerd biersysteem met sensoren, actuatoren, microservices en webinterfaces.
🏛️ Systeemlagen
Het platform is opgebouwd in duidelijke scheiding van lagen:
flowchart TD
Internet([Publiek Internet / Lokaal LAN]) --> ApacheEdge["Apache Reverse Proxy (vmserver: 10.2.0.4)"]
subgraph HostLevel ["Host Laag (vmserver / bare-metal)"]
ApacheEdge
Gitea["Gitea (git.bnhmeijer.nl)"]
Keycloak["Keycloak (login.bnhmeijer.nl)"]
MediaDiensten["Media & Storage (Jellyfin, Nextcloud, *Arr)"]
DnsmasqHost["Dnsmasq (Lokale DNS / DHCP)"]
end
ApacheEdge -->|SSL / OIDC Terminatie| Keycloak
ApacheEdge -->|Reverse Proxy| Gitea
ApacheEdge -->|Reverse Proxy| MediaDiensten
ApacheEdge -->|"Cluster Ingress (NodePort 32608)"| EnvoyGateway["Envoy Gateway API (k8s)"]
subgraph K8sCluster ["Kubernetes Cluster"]
EnvoyGateway --> HTTPRoutes[HTTPRoutes]
subgraph Namespaces
subgraph NS_ClusterInfra ["namespace: cluster-infra"]
Postgres[(PostgreSQL)]
Mongo[(MongoDB)]
Influx[(InfluxDB)]
RabbitMQ[(RabbitMQ)]
Mosquitto[Mosquitto MQTT]
InfraWeb[Infra Web Dashboard]
end
subgraph NS_SmartHome ["namespace: smart-home"]
HomeAssistant[Home Assistant]
end
subgraph NS_HERMS ["namespace: herms"]
HermsFrontend[HERMS Web UI]
HermsController[HERMS Controller]
HermsStorage[HERMS Storage]
NATS[NATS Broker]
end
subgraph NS_ArgoCD ["namespace: argocd"]
ArgoCD[ArgoCD ApplicationSets]
end
end
HTTPRoutes --> InfraWeb
HTTPRoutes --> HomeAssistant
HTTPRoutes --> HermsFrontend
end
subgraph GitOpsPipeline ["CI/CD & GitOps"]
Gitea -->|Gitea Actions CI| ContainerReg[Gitea Container Registry]
ContainerReg --> GitOpsCommit[Update manifests in k8s-infra-vmserver]
GitOpsCommit --> ArgoCD
ArgoCD -->|Reconcile & Deploy| Namespaces
end
📦 Repositories & Submodules
De werkmap /home/bart/git/cluster is gestructureerd als een Git superproject dat de verschillende subsystemen als submodules integreert:
| Submodule | Doel | Primaire Stack |
|---|---|---|
cluster-infra |
Kerninfrastructuur & databases in K8s | PostgreSQL, MongoDB, InfluxDB, RabbitMQ, Mosquitto, Dnsmasq, Apache vhosts |
k8s-infra-vmserver |
GitOps repository gemonitord door ArgoCD | Kubernetes Kustomize manifests, HTTPRoutes, Service definities |
HERMS |
Geautomatiseerd brouwplatform (brouwautomatisering) | Rust microservices, Next.js / TypeScript GUI, ESP32 C++, KiCad PCB |
smart-home |
Huisautomatisering & IoT | Home Assistant, netwerk- en migratiescripts |
htpc |
HTPC & Media Services Platform | Jellyfin, *Arr stack, K8s manifests, GitOps |
🔒 Beveiliging, Ingress & Identiteitsbeheer
- SSL / TLS:
- Alle inkomende HTTPS-verbindingen worden afgehandeld door Apache met geautomatiseerde Let's Encrypt SSL-certificaten.
- Authenticatie & Autorisatie (OIDC):
- Beschermde diensten worden beveiligd via
mod_auth_openidcgekoppeld aan de centrale Keycloak-instantie (https://login.bnhmeijer.nl).
- Beschermde diensten worden beveiligd via
- Cluster Routing:
- Apache fungeert als edge gateway en forwardt verkeer bestemd voor Kubernetes pods naar Envoy Gateway via NodePort
127.0.0.1:32608. Envoy routeert vervolgens op basis vanHTTPRouteresources in de K8s namespaces.
- Apache fungeert als edge gateway en forwardt verkeer bestemd voor Kubernetes pods naar Envoy Gateway via NodePort
🔄 GitOps Workflow
De broncode en configuraties worden beheerd volgens strikte GitOps-principes:
- Wijziging in Broncode: Een ontwikkelaar pusht code naar
mainin bijv.cluster-infraofHERMS. - CI Pipeline (Gitea Actions):
- Detecteert gewijzigde componenten via
dorny/paths-filter. - Bouwt geoptimaliseerde Docker images en pusht deze naar de private Gitea container registry.
- Werkt de container image tag bij in de GitOps-repository
k8s-infra-vmserver.
- Detecteert gewijzigde componenten via
- CD Reconciliatie (ArgoCD):
- ArgoCD detecteert de gewijzigde manifests in
k8s-infra-vmserver. - Past automatisch een rolling update / sync toe op de Kubernetes cluster workloads.
- ArgoCD detecteert de gewijzigde manifests in