it-swarm.com.de

Zugriff auf das Kubernetes Dashboard mithilfe der Konfigurationsdatei Nicht genügend Daten, um eine Auth-Infostruktur zu erstellen.

Ich versuche mit der Konfigurationsdatei auf das kubernetes Dashboard zuzugreifen. Bei der Authentifizierung, wenn ich die Konfigurationsdatei auswähle, wird Not enough data to create auth info structure angezeigt. Die gleiche Konfigurationsdatei funktioniert für den Befehl kubectl.

 enter image description here

hier ist meine Konfigurationsdatei.

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: REDACTED
    server: https://kubemaster:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: [email protected]
current-context: [email protected]
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

Hilfe zur Lösung dieses Problems?

Vielen Dank

11
sfgroups

Nachdem Sie sich diese Antwort angesehen haben, wurde Wie melde ich mich im kubernetes-Dashboard an? Und der Quellcode die kubeconfig-Authentifizierung.

Rufen Sie nach der Installation von kubeadm auf dem Masterserver das Dienstkontokennzeichen default ab und fügen Sie es der Konfigurationsdatei hinzu. Verwenden Sie dann die Konfigurationsdatei zur Authentifizierung.

Sie können dies verwenden, um das Token hinzuzufügen.

#!/bin/bash
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')

kubectl config set-credentials kubernetes-admin --token="${TOKEN}"

ihre Konfigurationsdatei sollte so aussehen.

kubectl config view |cut -c1-50|tail -10
  name: [email protected]
current-context: [email protected]
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.ey
4
sfgroups

In der kubeconfig-Datei werden nur Authentifizierungsoptionen unterstützt, die durch das Flag --authentication-mode angegeben werden.

Sie können sich mit dem Token authentifizieren (jedes Token im kube-system-Namespace):

$ kubectl get secrets -n kube-system
$ kubectl get secret $SECRET_NAME -n=kube-system -o json | jq -r '.data["token"]' | base64 -d > user_token.txt

und auth mit dem Token (siehe user_token.txt file).

9
Arslanbekov

Wenn Sie an der Authentifizierungsaufforderung und des Dashboards vorbeikommen möchten, können Sie Verwaltungsaufgaben im Dashboard ausführen. Ich empfehle Folgendes: https://github.com/kubernetes/dashboard/wiki/Creating-sample) -Nutzer .

2
tobi42

1 - Angenommen, man hat die Anweisungen zur Einrichtung des Dashboards hier befolgt . https://docs.aws.Amazon.com/eks/latest/userguide/dashboard-tutorial.html

2 - Ihr normaler kubectl-Zugriff funktioniert über die Befehlszeile (d. H. Kubectl get services).

3 - Und Sie können sich manuell mit dem Token (mit kubectl -n kube-System beschreiben secret ...) beim Dashboard anmelden, indem Sie copy/paste verwenden.

4 - Jetzt möchten Sie sich jedoch zur Vereinfachung der Anmeldung beim Dashboard mit der Option "Kubeconfig" (anstelle von "Token") anmelden.

 enter image description here

Lösung:

  • Finden Sie Ihren Benutzer in der Konfigurationsdatei, die für den Zugriff auf den Cluster verwendet wird.
  • Der Benutzer ist in dieser ursprünglich veröffentlichten Frage "kubernetes-admin".
  • Fügen Sie eine Zeile mit dem "Token:" hinzu.
  • Vergessen Sie nicht, dass dies YAML ist. Verwenden Sie daher Leerzeichen und keine Tabulatoren.

So sollte es aussehen ...

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: REDACTED
    server: https://kubemaster:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: [email protected]
current-context: [email protected]
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: PUT_YOUR_TOKEN_HERE_THAT_YOU_USED_TO_MANUALLY_LOGIN
1
Sagan

Hier sind zwei Dinge los

  • die Kubernetes Dashboard-Anwendung benötigt ein Authentifizierungstoken
  • und dieses Authentifizierungstoken muss mit einem Konto mit ausreichenden Berechtigungen verknüpft sein.

Die übliche Methode zum Bereitstellen der Dashboard-Anwendung ist einfach

Diese Standardkonfiguration ist jedoch generisch und minimal. Es bildet lediglich eine Rollenbindung mit minimalen Privilegien ab. Insbesondere bei DigitalOcean fehlt der kubeconfig-Datei, die bei der Bereitstellung des Clusters bereitgestellt wird, das tatsächliche Token, das zum Anmelden am Dashboard erforderlich ist.

Um diese Mängel zu beheben, müssen Sie daher sicherstellen, dass ein Konto vorhanden ist, das eine Rollenbindung für die ClusterRole cluster-admin im Namespace kube-system enthält. Das oben erwähnte Standard-Setup stellt lediglich eine Bindung an kubernetes-dashboard-minimal..__ dar. Wir können das beheben, indem wir explizit deplyoing

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

Und dann müssen wir auch das Token für diesen ServiceAccount bekommen ...

  • kubectl get serviceaccount -n kube-system listet alle Dienstkonten auf. Vergewissern Sie sich, dass der gewünschte/erstellte vorhanden ist
  • kubectl get secrets -n kube-system sollte ein geheimes für dieses Konto auflisten
  • und mit kubectl describe secret -n kube-system admin-user-token-XXXXXX erhalten Sie Informationen zum Token.

Die anderen Antworten auf diese Frage geben reichlich Hinweise, wie dieser Zugriff auf bequeme Weise skriptiert werden kann (z. B. Verwendung von awk, Verwendung von grep, Verwendung von kubectl get mit -o=json und Weiterleitung zu jq oder Verwendung von -o=jsonpath).

Sie können dann entweder:

  • speichern Sie dieses Token in eine Textdatei und laden Sie dieses hoch
  • bearbeiten Sie Ihre kubeconfig-Datei und fügen Sie das Token in den dort angegebenen admin-Benutzer ein.
0
Ichthyo