Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/
  3. k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/

Headscale

Inhaltsverzeichnis

Headscale
#

Headscale ist eine quelloffene, selbst gehostete Implementierung des Tailscale Control Servers. Es ermöglicht Ihnen, Ihr eigenes Tailscale-Netzwerk zu betreiben und somit die vollständige Kontrolle über Ihre Knoten und Daten zu haben.

Deployment
#

Argo Deployment

Quelle
#

Das Projekt basiert auf der offiziellen Headscale-Website. Das Helm-Chart stammt aus einem privaten Repository.

Dokumentation
#

Funktion
#

Dieser Dienst bietet einen selbst gehosteten Tailscale Control Server, der die Verwaltung von Tailscale-Knoten und die Einrichtung eines privaten Tailscale-Netzwerks ermöglicht. Er unterstützt die Integration mit Cert-Manager für TLS-Zertifikate und MetalLB für LoadBalancer-IPs.

Lokale Anpassungen
#

  • Die values.yaml-Datei konfiguriert den Headscale-Server, einschließlich der Listen-Adressen, Server-URL und DNS-Einstellungen.
  • Die Persistenz wird über einen nfs-client StorageClass verwaltet.
  • Es sind Patches für den DERP-Dienst enthalten, um Dual-Stack (IPv4/IPv6)-Unterstützung zu ermöglichen.
  • TLS-Zertifikate werden über Cert-Manager verwaltet.
  • Private Schlüssel für WireGuard, Noise und DERP werden als Secrets generiert.

Wichtige Einstellungen
#

  • Server URL: Die öffentliche URL des Headscale-Servers ist https://hs.zyria.de.
  • Datenbank: Headscale verwendet eine SQLite-Datenbank, die auf einem persistenten Volume gespeichert wird.
  • Zertifikate: TLS-Zertifikate für den Ingress werden automatisch von cert-manager ausgestellt.
  • DNS: Nodes im Headscale-Netzwerk erhalten DNS-Namen unter der Domain hsn.zyria.de.
  • DERP: Es werden die öffentlichen DERP-Server von Tailscale verwendet. Ein eigener DERP-Service ist konfiguriert, aber nicht als Server aktiviert. Der STUN-Dienst läuft über einen LoadBalancer-Service.
  • Speicher: Die Konfiguration und die SQLite-Datenbank werden auf einem persistenten Volume via NFS gespeichert.

Installation
#

Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/headscale-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:

1kubectl kustomize --enable-helm apps/headscale | kubectl apply -n headscale -f -

Abhängigkeiten
#

  • Ein laufender Kubernetes-Cluster.
  • Ein Ingress-Controller (z.B. Traefik) für den externen Zugriff.
  • Eine Zertifikatsmanagement-Lösung (z.B. cert-manager) zur Bereitstellung von TLS-Zertifikaten.
  • MetalLB für LoadBalancer-IP-Zuweisung.
  • Ein NFS-Server für persistente Speicherung.
Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin