Wie kann ich das Kubernetes Dashboard mit einem Ingress-Controller verwenden?

Melden
  1. Dashboard-Installation und Service-Typ
  2. Ingress-Controller vorbereiten
  3. Ingress-Ressource konfigurieren
  4. Zugriffssicherung und Authentifizierung
  5. Dashboard-Token zur Anmeldung
  6. Zusätzliche Sicherheit durch TLS im Ingress
  7. Zusammenfassung

Das Kubernetes Dashboard ist eine webbasierte Benutzeroberfläche, die es erlaubt, Clusterressourcen zu verwalten und zu überwachen. Standardmäßig ist das Dashboard als Service im Cluster verfügbar und wird oft über einen kubectl proxy aufgerufen, wenn man lokal darauf zugreifen möchte. Möchte man das Dashboard jedoch extern über einen Ingress-Controller zugänglich machen, sind einige Konfigurationsschritte notwendig, um sowohl die Sicherheit zu gewährleisten als auch die Erreichbarkeit sicherzustellen.

Dashboard-Installation und Service-Typ

Zunächst sollte das Kubernetes Dashboard als Deployment im Cluster installiert sein, falls dies noch nicht geschehen ist. Die offizielle Installation kann über die YAML-Datei erfolgen, die im Kubernetes Github-Repository bereitgestellt wird. Nach der Installation ist das Dashboard als Service vom Typ ClusterIP definiert. Das bedeutet, dass es von außerhalb des Clusters nicht direkt erreichbar ist, sondern nur intern im Cluster.

Ingress-Controller vorbereiten

Damit das Dashboard über einen Ingress zugänglich wird, muss im Cluster ein Ingress-Controller installiert sein, beispielsweise NGINX Ingress Controller oder Traefik. Der Ingress-Controller managt eingehende HTTP(S)-Anfragen und routet sie entsprechend der konfigurierten Ingress-Ressourcen an die richtigen Services im Cluster.

Ingress-Ressource konfigurieren

Für das Dashboard wird eine Ingress-Ressource erstellt, die den eingehenden Traffic an das Dashboard-Service weiterleitet. Dabei sollte auf die korrekten Pfade und den richtigen Namespace geachtet werden, in dem das Dashboard läuft (standardmäßig oft kubernetes-dashboard). Ein einfaches Beispiel für eine Ingress-Ressource sieht folgendermaßen aus:

apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: kubernetes-dashboard namespace: kubernetes-dashboard annotations: nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"spec: rules: - host: dashboard.example.com http: paths: - path: / pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 443

Beachte, dass das Dashboard-Service meist auf Port 443 läuft, da das Dashboard intern HTTPS verwendet. Deshalb ist die Annotation nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" notwendig, damit der Ingress Controller den Traffic mit TLS zum Dienst schickt.

Zugriffssicherung und Authentifizierung

Das Dashboard ist eine sensitive Komponente und sollte nicht ohne Schutz öffentlich zugänglich sein. Kubernetes ermöglicht die Authentifizierung via Bearer-Token. Um das Dashboard sicher zu betreiben, empfiehlt es sich, eine externe Authentifizierungsmechanismen wie OAuth2-Proxy, basic Auth oder Client-Zertifikate vor den Ingress zu setzen. Alternativ können auch Ingress-Controller-spezifische Authentifizierungsmechanismen verwendet werden.

Ohne zusätzlichen Schutz kann jeder mit Zugriff auf die Weboberfläche potenziell kritische Operationen ausführen, weshalb unbedingt ein sicherer Zugang implementiert werden muss.

Dashboard-Token zur Anmeldung

Für den Login im Dashboard benötigt man ein gültiges Service Account Token. Dieses kann man beispielsweise mit folgendem Befehl erzeugen:

kubectl -n kubernetes-dashboard create token admin-user

Alternativ kann man einen eigenen Service Account mit ClusterAdmin-Rechten anlegen und dessen Token verwenden. Dieses Token wird bei der Anmeldung im Dashboard benötigt.

Zusätzliche Sicherheit durch TLS im Ingress

Damit die Verbindung zum Dashboard vom externen Client bis zum Ingress verschlüsselt ist, sollte das Ingress TLS nutzen. Dies kann mit einem Zertifikat von einer Zertifizierungsstelle (z.B. Lets Encrypt) realisiert werden. Die TLS-Zertifikate werden im Ingress definiert und ermöglichen so HTTPS-Zugang zum Dashboard.

Zusammenfassung

Um das Kubernetes Dashboard mit einem Ingress-Controller verfügbar zu machen, muss das Dashboard Service und Deployment installiert sein, das Service hat meist den Typ ClusterIP. Ein Ingress-Controller im Cluster routet den Traffic basierend auf einer Ingress-Ressource weiter zum Dashboard-Service. Dabei ist es wichtig, dass der Ingress korrekt auf HTTPS auf dem Backend konfiguriert ist, weil das Dashboard intern TLS verwendet. Für den sicheren Zugriff empfiehlt sich, eine zusätzliche Authentifizierung am Ingress zu ergänzen und TLS im Ingress zu aktivieren, um eine sichere Verschlüsselung zu gewährleisten. Zuletzt wird ein Token für die Anmeldung im Dashboard bereitgestellt, sodass nur autorisierte Nutzer Zugriff auf die Weboberfläche erhalten.

0

Kommentare