Zum Inhalt springen

Festlegen, wer die API erreicht

Die Kubernetes-API eines Clusters lauscht auf Port 6443, und die Firewall des Clusters in deinem Hetzner-Projekt entscheidet, wer sie erreicht. Diese Seite beschränkt sie auf die Adressen, von denen aus du und deine Werkzeuge arbeiten, damit die API nicht für das ganze Internet offen steht.

PortVonFür
TCP 6443den Bereichen, die du festlegst (voreingestellt: alle, 0.0.0.0/0 und ::/0)die Kubernetes-API
TCP 80 und 443allendeine Apps, über den Ingress auf dem Node
ICMPallenPing

Sonst kommt nichts herein: SSH (Port 22) und die Ports, die k3s innerhalb des Clusters nutzt, bleiben zu. Die Firewall filtert nur eingehenden Verkehr; die Verbindungen, die der Node selbst nach außen aufbaut, etwa die von pbx-agent zum Portal, betrifft sie nicht.

  • Du bist Team-Admin. Mitglieder sehen die Bereiche, können sie aber nicht ändern.
  • Die Adressen, von denen aus du arbeitest, als IPv4- oder IPv6-Bereiche in CIDR-Form, etwa 203.0.113.7/32 oder 2001:db8:1234::/48. Nimm jeden Ort auf, von dem aus kubectl läuft: dein Büro, deine CI-Runner, den Rechner, auf dem dein Agent läuft.
  1. Öffne auf der Seite des Clusters Settings.
  2. Bearbeite unter Kubernetes API access das Feld Who may reach the Kubernetes API (port 6443): ein Bereich pro Zeile, IPv4 oder IPv6. Eine Adresse ohne Präfixlänge wird zu einer einzelnen Adresse (203.0.113.7 wird 203.0.113.7/32).
  3. Wähle Save.

Das Portal ändert zuerst die Firewall des Clusters in deinem Projekt, mit allen Regeln auf einmal, und speichert die Bereiche erst, wenn Hetzner sie übernommen hat. Die Seite sagt dann „Saved. The cluster’s firewall lets only these ranges reach the Kubernetes API.” Antwortet Hetzner mit einem Fehler, bleiben Firewall und gespeicherte Bereiche, wie sie waren, und die Seite zeigt den Fehler.

Mindestens ein Bereich muss bleiben; 0.0.0.0/0 und ::/0 zusammen bedeuten alle. Die ersten Bereiche legst du fest, wenn du den Cluster anlegst.

Das Portal liegt nicht hinter der Firewall des Clusters. Ändert sich deine Adresse und kubectl verbindet sich nicht mehr, öffne Settings von überall aus und trag die neue Adresse ein. Kubeconfigs erzeugt pbx-agent auf dem Node, und der ruft das Portal von sich aus an; eine Kubeconfig bekommst du also weiterhin, du kannst sie nur außerhalb der Bereiche nicht benutzen.

Die Firewall ist eine Ressource in deinem Projekt, mit dem Namen pbx-<DNS-Label>-<acht Zeichen der ID des Clusters> und dem Label pbx-cluster=<die ID des Clusters>. Ihre Regeln kannst du in der Hetzner-Konsole unter Firewalls bearbeiten.

Das Portal liest diese Regeln nicht zurück. Es schreibt den ganzen Regelsatz neu, sobald ein Team-Admin die Bereiche auf Settings speichert, und wenn ein fehlgeschlagenes Anlegen ab seinem Firewall-Schritt oder einem früheren wiederholt wird; eine Regel, die du in der Hetzner-Konsole hinzugefügt hast, ist danach weg. Darum:

  • Wer Port 6443 erreicht, änderst du über Settings, solange das Portal den Cluster verwaltet.
  • Für alles andere, etwa Port 22, legst du eine eigene Firewall an und wendest sie auf den Server an. Hetzner wendet die Regeln aller Firewalls eines Servers gemeinsam an. Root auf dem Server bekommen macht das für SSH.

Nachdem du den Cluster abgekoppelt hast, ändert das Portal seine Firewall nicht mehr, und die Hetzner-Konsole ist der Ort, sie zu bearbeiten.