Search code examples
user-interfacekubernetesdashboard

Kubernetes Dashboard - Internal error (500): Not enough data to create auth info structure


I have Kubernetes with ClusterRoles defined for my users and permissions by (RoleBindings) namespaces. I want these users could be accessed into the Kubernetes Dashboard with custom perms. However, when they try to log in when using kubeconfig option that's got this message:

"Internal error (500): Not enough data to create auth info structure." 

https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md -- This guide is only for creating ADMIN users, not users with custom perms or without privileges... (edited)


Solution

  • Update SOLVED:

    You have to do this:

    1. Create ServiceAccount per user
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: NAME-user
      namespace: kubernetes-dashboard
    
    1. Adapt the RoleBinding adding this SA
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: PUT YOUR CR HERE
      namespace: PUT YOUR NS HERE
    subjects:
      - kind: User
        name: PUT YOUR CR HERE
        apiGroup: 'rbac.authorization.k8s.io'
      - kind: ServiceAccount
        name: NAME-user
        namespace: kubernetes-dashboard
    roleRef:
      kind: ClusterRole
      name: PUT YOUR CR HERE
      apiGroup: 'rbac.authorization.k8s.io'
    
    1. Get the token:
    kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/NAME-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
    
    
    1. Add token into your kubeconfig file. Your kb should be contain something like this:
    apiVersion: v1
    clusters:
    - cluster:
        server: https://XXXX
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: YOUR UER
      name: kubernetes
    current-context: "kubernetes"
    kind: Config
    preferences: {}
    users:
    - name: YOUR USER
      user:
        client-certificate-data: CODED
        client-key-data: CODED
        token: CODED  ---> ADD TOKEN HERE
    
    1. Login