Architekturübersicht
Die Plattform stellt private Dienste für den Eigenbedarf bereit.
Primäre Ziele sind:
-
Lernen neuer Technologien
-
Betrieb produktiver Dienste für den privaten Gebrauch
-
Vollständige Verwaltung über GitOps
-
Automatisierter Betrieb mit minimalem Administrationsaufwand
-
Nutzung von Kubernetes als zentrale Laufzeitplattform
Zu den bereitgestellten Diensten gehören unter anderem:
-
E-Mail
-
Passwortverwaltung
-
Kalender und Kontakte
-
Dateifreigaben
-
Medienstreaming
-
Dokumentenmanagement
Die Plattform besteht aus einem lokalen Standort sowie mehreren externen Komponenten.
Architekturprinzipien
-
Kubernetes First
-
GitOps First
-
Immutable Infrastructure
-
IPv6 First
-
Self Hosting vor Managed Services
-
Offsite Backups für kritische Daten
Standorte
Home
Der primäre Standort befindet sich im Heimnetzwerk.
Verantwortlichkeiten:
-
Kubernetes Plattform
-
Medienbibliotheken
-
Lokale Netzwerkdienste
-
DNS Resolver
-
Rechenkapazität
Kubernetes Plattform
Die Plattform besteht aus mehreren unabhängigen Kubernetes-Clustern.
| Cluster | Standort | Zweck |
|---|---|---|
home-tamay-cloud |
Home |
Primärer Produktionscluster |
tamay-cloud |
Netcup |
Öffentliche Dienste |
test-tamay-cloud |
Netcup |
Test- und Migrationscluster |
Alle Cluster basieren auf:
-
Talos Linux
-
Kubernetes
-
FluxCD
-
Cilium
-
Piraeus / LINSTOR
Netzwerkmodell
Das Heimnetzwerk verwendet Dual-Stack IPv4/IPv6.
Intern existieren keine Portfreigaben auf dem Internet-Router.
Externe Zugriffe erfolgen ausschließlich über einen WireGuard-Tunnel zwischen Netcup und dem Heimstandort.
Dadurch bleiben sämtliche internen Systeme vollständig vom Internet getrennt.
GitOps
Die komplette Plattform wird über FluxCD verwaltet.
Alle Cluster besitzen:
-
infrastructure/
-
apps/
Anwendungen und Infrastrukturkomponenten werden als wiederverwendbare Module bereitgestellt und clusterabhängig über Overlays aktiviert.
Storage
Piraeus dient als primärer Kubernetes Storage Provider.
Im Home-Cluster erfolgt die Speicherung repliziert über mehrere Nodes.
Externe Cluster verwenden lokale Storage Pools ohne Replikation.
Mediendaten liegen außerhalb von Kubernetes auf einem NAS und werden über NFS bereitgestellt.