Kubernetes: Dashboard https Nicht autorisiert

Erstellt am 30. Aug. 2016  ·  3Kommentare  ·  Quelle: kubernetes/kubernetes

Dashboard-Version: 1.1
Kubernetes-Version: 1.3.6
Betriebssystem: ubuntu14.04
Go -Version: 1.6.2
Stellen Sie Kubernetes und Dashboard als http://kubernetes.io/docs/getting-started-guides/ubuntu/ bereit.

Ich kann auf das Dashboard zugreifen http://master-ip :8080/
bur, wenn ich auf https://master-ip :6443/ zugreife, gebe "Unauthorized" zurück
Warum?

areapiserver

Hilfreichster Kommentar

Ich vermute, dass Ihre Cluster Zertifikate für die sichere Kommunikation über HTTPS verwenden. Hier gibt es 2 Probleme.

  1. Der Browser erkennt die Root-CA nicht und kann daher nicht darauf vertrauen, dass die Verbindung sicher ist. Wir können das umgehen und es trotzdem verwenden. Dieser Teil ist kein Blocker. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. API Server benötigt Clientzertifikat/Token/Benutzer und Pass (je nach Konfiguration), um den Client zu autorisieren, andernfalls wird Unauthorized zurückgegeben.

Die Autorisierung mit curl ist einfach, da Sie die erforderlichen Daten einfach bereitstellen können.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

Beim Browser ist es komplizierter. Es gibt mehrere Möglichkeiten, auf das Dashboard zuzugreifen:

  1. Sie können es über den Dienst mit NodePort verfügbar machen und mit <MASTER_IP>:<NODE_PORT> darauf zugreifen. (Nicht sicher)
  2. Importieren Sie Zertifikate in Ihren Browser.
  3. Verwenden Sie kubectl proxy und gehen Sie zu http://127.0.0.1:8001/ (Bindungsadresse kann geändert werden). Es verarbeitet SSL-Tunneling, wenn Ihre kubeconfig -Datei für die Verwendung einer sicheren Verbindung konfiguriert ist.

Bezüglich der zweiten Möglichkeit. Ich kann einige Informationen zur Verfügung stellen, wie das mit Firefox gemacht wird.

  1. Importieren Sie das generierte CA-Zertifikat in den Browser.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Importieren Sie das Benutzerzertifikat nach Your Certificates . Wenn Sie 2 separate Zertifikate crt und key haben, ist es am besten, sie in ein PFX/PKCS#12 -Zertifikat zusammenzuführen, da es einfach direkt in den Browser-Zertifikatsspeicher importiert werden kann. Sie können diese Seite verwenden oder manuell mit openssl tun.
    zrzut ekranu z 2016-09-15 16-09-44

Wenn die Zertifikate korrekt generiert wurden, wird beim nächsten Versuch, über HTTPS auf den API-Server zuzugreifen, ein Popup angezeigt. Möglicherweise müssen Sie den Browser-Cache leeren.
zrzut ekranu z 2016-09-15 16-12-04

Sie sollten jetzt das Dashboard sehen. :)
zrzut ekranu z 2016-09-15 16-14-16

Ich weiß nicht, wie man Inhabertoken im Browser verwendet. Möglicherweise erfordert es einige manuelle Arbeiten, um dem HTTP-Header Daten hinzuzufügen, bevor eine Anfrage an den API-Server gesendet wird.

Es gibt natürlich noch andere Möglichkeiten, Benutzer zu autorisieren. Kubernetes unterstützt ABAC, RBAC und vieles mehr.

Alle 3 Kommentare

Ich habe das gleiche Problem. Und ich denke, der Autor hat es vielleicht noch nicht bedacht.
https://github.com/kubernetes/dashboard/issues/1116

Ich vermute, dass Ihre Cluster Zertifikate für die sichere Kommunikation über HTTPS verwenden. Hier gibt es 2 Probleme.

  1. Der Browser erkennt die Root-CA nicht und kann daher nicht darauf vertrauen, dass die Verbindung sicher ist. Wir können das umgehen und es trotzdem verwenden. Dieser Teil ist kein Blocker. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. API Server benötigt Clientzertifikat/Token/Benutzer und Pass (je nach Konfiguration), um den Client zu autorisieren, andernfalls wird Unauthorized zurückgegeben.

Die Autorisierung mit curl ist einfach, da Sie die erforderlichen Daten einfach bereitstellen können.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

Beim Browser ist es komplizierter. Es gibt mehrere Möglichkeiten, auf das Dashboard zuzugreifen:

  1. Sie können es über den Dienst mit NodePort verfügbar machen und mit <MASTER_IP>:<NODE_PORT> darauf zugreifen. (Nicht sicher)
  2. Importieren Sie Zertifikate in Ihren Browser.
  3. Verwenden Sie kubectl proxy und gehen Sie zu http://127.0.0.1:8001/ (Bindungsadresse kann geändert werden). Es verarbeitet SSL-Tunneling, wenn Ihre kubeconfig -Datei für die Verwendung einer sicheren Verbindung konfiguriert ist.

Bezüglich der zweiten Möglichkeit. Ich kann einige Informationen zur Verfügung stellen, wie das mit Firefox gemacht wird.

  1. Importieren Sie das generierte CA-Zertifikat in den Browser.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Importieren Sie das Benutzerzertifikat nach Your Certificates . Wenn Sie 2 separate Zertifikate crt und key haben, ist es am besten, sie in ein PFX/PKCS#12 -Zertifikat zusammenzuführen, da es einfach direkt in den Browser-Zertifikatsspeicher importiert werden kann. Sie können diese Seite verwenden oder manuell mit openssl tun.
    zrzut ekranu z 2016-09-15 16-09-44

Wenn die Zertifikate korrekt generiert wurden, wird beim nächsten Versuch, über HTTPS auf den API-Server zuzugreifen, ein Popup angezeigt. Möglicherweise müssen Sie den Browser-Cache leeren.
zrzut ekranu z 2016-09-15 16-12-04

Sie sollten jetzt das Dashboard sehen. :)
zrzut ekranu z 2016-09-15 16-14-16

Ich weiß nicht, wie man Inhabertoken im Browser verwendet. Möglicherweise erfordert es einige manuelle Arbeiten, um dem HTTP-Header Daten hinzuzufügen, bevor eine Anfrage an den API-Server gesendet wird.

Es gibt natürlich noch andere Möglichkeiten, Benutzer zu autorisieren. Kubernetes unterstützt ABAC, RBAC und vieles mehr.

Der Browser muss sich beim Zugriff auf den gesicherten API-Serverport authentifizieren. Wie https://github.com/kubernetes/kubernetes/issues/31665#issuecomment -247342834 zeigt, kann dies mit zertifikatbasierter Authentifizierung erfolgen.

Bei der tokenbasierten Authentifizierung bieten Ihnen Browser keine Möglichkeit, automatisch Inhabertoken mit Ihren Anforderungen zu senden.

Das Dashboard beschreibt, wie Sie kubectl proxy verwenden können, wodurch Ihre Authentifizierungsdaten hinzugefügt werden und Sie lokal über den Proxy auf das Dashboard zugreifen können - https://github.com/kubernetes/dashboard#usage

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen