Skip to main content
LEAP Docs
Gitlab Wechsel zwischen Dunkel/Hell/Auto Modus Wechsel zwischen Dunkel/Hell/Auto Modus Wechsel zwischen Dunkel/Hell/Auto Modus Zurück zur Startseite

Podlily

Übersicht

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.

Helm-Charts

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

Cluster, Knoten und Pods

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
  

Pods, die auf dem Backend-Cluster ausgeführt werden

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

Pods, die auf einem Gateway-Cluster ausgeführt werden

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

Installation

Bitte folge dem Installationstutorial, wenn du den LEAP VPN stack mithilfe von Podlily aufsetzen willst.