2017-08-10 6 views
0

Même après l'octroi d'un rôle de cluster à l'utilisateur, je reçois Error from server (Forbidden): User "system:anonymous" cannot list nodes at the cluster scope. (get nodes)Kubernetes: Erreur du serveur (interdit): « Système: anonyme » utilisateur ne peut pas la liste des nœuds à la portée du cluster, même après l'octroi de l'autorisation

je donne les résultats suivants fixé pour l'utilisateur, - context: cluster: kubernetes user: [email protected] name: [email protected] ensemble dans le répertoire ~/.kube/config

et ci-dessous ajouté à admin.yaml pour créer le rôle de cluster-et-clusters rolebindings

kind: CluserRouster: kubernetes user: [email protected] name: [email protected] apiVersion: rbac.authorization.k8s.io/v1alpha1 metadata: name: admin-role rules: - apiGroups: ["*"] resources: ["*"] verbs: ["*"] --- oidckind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1alpha1 metadata: name: admin-binding subjects: - kind: User name: [email protected] roleRef: kind: ClusterRole name: admin-role

Lorsque j'essaie la commande, j'obtiens toujours une erreur. kubectl [email protected] get nodes Error from server (Forbidden): User "system:anonymous" cannot list nodes at the cluster scope. (get nodes)

quelqu'un peut s'il vous plaît suggérer sur la façon de procéder.

Répondre

1

Votre problème ne concerne pas votre ClusterRoleBindings, mais plutôt l'authentification de l'utilisateur. Kubernetes vous indique qu'il vous a identifié comme étant system:anonymous (ce qui est similaire à la personne de * NIX) et non à [email protected] (auquel vous avez appliqué votre liaison).

Dans votre cas spécifique, la raison en est que l'indicateur username utilise l'authentification HTTP de base et nécessite l'indicateur password pour effectuer réellement quelque chose. Mais même si vous fournissiez le mot de passe, vous devez toujours demander au serveur d'API d'accepter cet utilisateur spécifique.

Jetez un oeil à this partie de la documentation de Kubernetes qui traite de différentes méthodes d'authentification. Pour que l'authentification username et password fonctionne, vous pouvez consulter la section Fichier de mots de passe statiques, mais je vous recommande d'utiliser les Cents client X509 car ils sont plus sécurisés et plus simples d'utilisation (pas de secrets sur le serveur, aucun état à répliquer entre les serveurs API).

+0

Mais dans mon cas, j'utilise OIDC. Donc je suppose que je n'ai pas besoin de mot de passe et le jeton OIDC devrait me permettre de me connecter. S'il vous plait corrigez moi si je me trompe. – NSP

+0

Dans ce cas, vous devez supprimer l'option 'username' de kubectl et configurer correctement vos informations d'identification OIDC dans kubectl. – Lorenz

+0

Je suppose que l'utilisateur doit utiliser le certificat et la clé pour parler à l'apiserver. Je vais devoir utiliser l'identifiant d'email de l'utilisateur pour accéder au serveur api. – NSP