Podlily
Kubernetes ist ein verbreiteter Standard für das Ausrollen von Webanwendungen geworden, aber es ist (noch) nicht üblich, ein VPN-System auf Kubernetes auszuführen. Mit Podlily erkunden wir diese Deploymentmethode. Natürlich gibt es noch viel Raum für Verbesserungen, die wir in Zukunft adressieren werden, z.B. in Bezug auf die Ausführung rootloser Container.
Diese Übersicht zeigt das aktuelle Podlily-Setup, welche Helm-Charts welche Pods installieren, welche Pods auf welchen Knoten in welchen Clustern ausgeführt werden.
Derzeit beruht Podlily auf 4 Helm-Charts: helm-backend, helm-gateway, kube-prometheus-stack und Grafana Alloy. Du kannst diese Helm-Charts auf k3s-Clustern installieren. K3s ist eine leichte Kubernetes-Distribution.
graph
subgraph "grafana-alloy"
alloy(alloy)
end
subgraph "kube-prometheus-stack"
alertmanager(alertmanager)
node-exporter(node Exporter)
operator(prometheus Operator)
state-metrics(kube state metrics)
grafana(grafana)
end
subgraph "helm-gateway"
gw-openvpn(openvpn)
gw-menshen-agent(openvpn menshen-agent)
gw-obfsvpn(obfsvpn)
gw-ovpn-addons[kresd, openvpn prometheus exporter]
end
subgraph "helm-backend"
traefik(traefik)
menshen(menshen)
end
Um optimale globale Skalierbarkeit zu bieten, erfordert die Standard-Architektur von Podlily mindestens 2 verschiedene Cluster. Das erste enthält die Backend-Komponenten wie die Konfiguration-API menshen des Providers, Systemüberwachung und Alerting. Das zweite Cluster ist ein Single-Node-Cluster, der als Gateway dient. Das folgende Diagramm zeigt die Knoten in jedem Cluster.
graph TD
subgraph "gateway-cluster 1 location B"
gatewayB1((gateway-B-1))
end
subgraph "gateway-cluster 1 location A"
gatewayA1((gateway-A-1))
end
subgraph "backend-cluster"
monitoring((Monitoring))
controller((Controller))
backend((Menshen))
end
| Knoten | Pod | Rolle | Link |
|---|---|---|---|
| Monitoring | Alertmanager | Verwaltet Alerts und Benachrichtigungen | Repository |
| Grafana | Visualisierungstool für Metriken | Grafana | |
| Kube State Metrics | Stellt Metriken über den Zustand der Kubernetes-Objekte bereit | Repository | |
| Prometheus Operator | Verwaltet Lebenszyklus und Konfiguration von Prometheus-Komponenten | Repository | |
| Node Exporter | Stellt Hardware- und Betriebssystem-Metriken von Knoten bereit | Repository | |
| Prometheus | Sammelt und speichert Metriken | Prometheus Dokumentation | |
| Controller | Core DNS | Bietet DNS-Service für das Kubernetes-Cluster | CoreDNS |
| Node Exporter | Stellt Hardware- und Betriebssystem-Metriken von Knoten bereit | Repository | |
| Traefik | Ingress-Controller verwaltet externen Zugriff auf Services | Traefik Dokumentation | |
| Backend | Node Exporter | Stellt Hardware- und Betriebssystem-Metriken von Knoten bereit | Repository |
| Menshen | Verteilt Gateways und Bridges für LEAP VPN | Repository |
| Knoten | Pod / Daemon Set | Rolle | Link |
|---|---|---|---|
| Gateway 1 Standort A | Menshen Agent | Sendet Gateway-Konfiguration und Verfügbarkeit an Menshen | Repository |
| OpenVPN TCP | OpenVPN-Service, akzeptiert TCP-Verbindungen | OpenVPN | |
| OpenVPN UDP | OpenVPN-Service, akzeptiert UDP-Verbindungen | OpenVPN | |
| obfsvpn | Bridge / Traffic-Verschleierungsproxy | Repository | |
| Grafana Alloy | Metriken-Collector | Grafana | |
| kresd | DNS-Resolver für Gateway | Kresd Dokumentation | |
| OpenVPN Metrics Exporter | Exportiert OpenVPN-Metriken für Prometheus | Repository |
Bitte folge dem Installationstutorial, wenn du den LEAP VPN stack mithilfe von Podlily aufsetzen willst.