Kubernetes: tableau de bord https Non autorisé

Créé le 30 août 2016  ·  3Commentaires  ·  Source: kubernetes/kubernetes

Version du tableau de bord : 1.1
Version Kubernetes : 1.3.6
Système d'exploitation : ubuntu14.04
Aller à la version:1.6.2
Déployez kubernetes et le tableau de bord en tant que http://kubernetes.io/docs/getting-started-guides/ubuntu/

Je peux accéder au tableau de bord http://master-ip :8080/
bur quand j'accède à https://master-ip :6443/, retourne "Unauthorized"
Pourquoi?

areapiserver

Commentaire le plus utile

Je suppose que vos clusters utilisent des certificats pour une communication sécurisée via HTTPS. Il y a 2 problèmes ici.

  1. Le navigateur ne reconnaît pas l'autorité de certification racine, il ne peut donc pas croire que la connexion est sûre. Nous pouvons contourner cela et continuer à l'utiliser. Cette partie n'est pas un bloqueur. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. Le serveur d'API a besoin d'un certificat client/jeton/utilisateur et passe (selon la configuration) pour autoriser le client, sinon il renverra Unauthorized .

Il est facile d'autoriser avec curl car vous pouvez facilement fournir les données requises.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

Avec un navigateur, c'est plus compliqué que ça. Il existe plusieurs façons d'accéder au tableau de bord :

  1. Vous pouvez l'exposer via le service à l'aide de NodePort et y accéder avec <MASTER_IP>:<NODE_PORT> . (Pas sécurisé)
  2. Importez des certificats dans votre navigateur.
  3. Utilisez kubectl proxy et allez à http://127.0.0.1:8001/ (l'adresse de liaison peut être modifiée). Il gérera le tunnel SSL si votre fichier kubeconfig est configuré pour utiliser une connexion sécurisée.

Concernant la deuxième option. Je peux fournir des informations sur la façon de le faire en utilisant Firefox.

  1. Importez le certificat CA généré dans le navigateur.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Importez le certificat utilisateur dans Your Certificates . Si vous avez 2 certificats distincts crt et key , il est préférable de les fusionner en un certificat PFX/PKCS#12 car il est facile de l'importer directement dans le magasin de certificats du navigateur. Vous pouvez utiliser cette page ou le faire manuellement en utilisant openssl .
    zrzut ekranu z 2016-09-15 16-09-44

Si les certificats sont générés correctement, une fenêtre contextuelle s'affichera lors de la prochaine tentative d'accès au serveur API via HTTPS. Vous devrez peut-être vider le cache du navigateur.
zrzut ekranu z 2016-09-15 16-12-04

Vous devriez voir le tableau de bord maintenant. :)
zrzut ekranu z 2016-09-15 16-14-16

Je ne sais pas comment utiliser le jeton du porteur dans le navigateur. Cela nécessite peut-être un travail manuel pour ajouter des données à l'en-tête HTTP avant d'envoyer la demande au serveur API.

Il existe bien sûr d'autres options pour autoriser l'utilisateur. Kubernetes prend en charge ABAC, RBAC et bien plus encore.

Tous les 3 commentaires

J'ai le même problème. Et je pense que l'auteur ne l'a peut-être pas encore envisagé.
https://github.com/kubernetes/dashboard/issues/1116

Je suppose que vos clusters utilisent des certificats pour une communication sécurisée via HTTPS. Il y a 2 problèmes ici.

  1. Le navigateur ne reconnaît pas l'autorité de certification racine, il ne peut donc pas croire que la connexion est sûre. Nous pouvons contourner cela et continuer à l'utiliser. Cette partie n'est pas un bloqueur. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. Le serveur d'API a besoin d'un certificat client/jeton/utilisateur et passe (selon la configuration) pour autoriser le client, sinon il renverra Unauthorized .

Il est facile d'autoriser avec curl car vous pouvez facilement fournir les données requises.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

Avec un navigateur, c'est plus compliqué que ça. Il existe plusieurs façons d'accéder au tableau de bord :

  1. Vous pouvez l'exposer via le service à l'aide de NodePort et y accéder avec <MASTER_IP>:<NODE_PORT> . (Pas sécurisé)
  2. Importez des certificats dans votre navigateur.
  3. Utilisez kubectl proxy et allez à http://127.0.0.1:8001/ (l'adresse de liaison peut être modifiée). Il gérera le tunnel SSL si votre fichier kubeconfig est configuré pour utiliser une connexion sécurisée.

Concernant la deuxième option. Je peux fournir des informations sur la façon de le faire en utilisant Firefox.

  1. Importez le certificat CA généré dans le navigateur.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Importez le certificat utilisateur dans Your Certificates . Si vous avez 2 certificats distincts crt et key , il est préférable de les fusionner en un certificat PFX/PKCS#12 car il est facile de l'importer directement dans le magasin de certificats du navigateur. Vous pouvez utiliser cette page ou le faire manuellement en utilisant openssl .
    zrzut ekranu z 2016-09-15 16-09-44

Si les certificats sont générés correctement, une fenêtre contextuelle s'affichera lors de la prochaine tentative d'accès au serveur API via HTTPS. Vous devrez peut-être vider le cache du navigateur.
zrzut ekranu z 2016-09-15 16-12-04

Vous devriez voir le tableau de bord maintenant. :)
zrzut ekranu z 2016-09-15 16-14-16

Je ne sais pas comment utiliser le jeton du porteur dans le navigateur. Cela nécessite peut-être un travail manuel pour ajouter des données à l'en-tête HTTP avant d'envoyer la demande au serveur API.

Il existe bien sûr d'autres options pour autoriser l'utilisateur. Kubernetes prend en charge ABAC, RBAC et bien plus encore.

Le navigateur doit s'authentifier lors de l'accès au port sécurisé du serveur API. Comme le montre https://github.com/kubernetes/kubernetes/issues/31665#issuecomment -247342834, cela peut être fait avec une authentification par certificat.

Pour l'authentification basée sur des jetons, les navigateurs ne vous permettent pas d'envoyer automatiquement des jetons au porteur avec vos demandes.

Le tableau de bord décrit comment vous pouvez utiliser kubectl proxy qui ajoute vos informations d'authentification et vous permet d'accéder au tableau de bord localement via le proxy - https://github.com/kubernetes/dashboard#usage

Cette page vous a été utile?
0 / 5 - 0 notes