He estado siguiendo una guía sobre cómo configurar AWS EKS usando terraform. https://learn.hashicorp.com/tutorials/terraform/eks
Estoy en la sección donde necesito autenticar el tablero. https://learn.hashicorp.com/tutorials/terraform/eks#authenticate-the-dashboard
$ kubectl apply -f https://raw.githubusercontent.com/hashicorp/learn-terraform-provision-eks-cluster/master/kubernetes-dashboard-admin.rbac.yaml kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep service-controller-token | awk '{print $1}')kubectl proxySin embargo, después de iniciar sesión e intentar hacer clic en cualquiera de los paneles para ver los recursos, recibo una serie de errores similares a los siguientes.
los espacios de nombres están prohibidos: el usuario "system:serviceaccount:kube-system:service-controller" no puede enumerar los "espacios de nombres" de recursos en el grupo de API "" en el alcance del clúster
cronjobs.batch está prohibido: el usuario "system:serviceaccount:kube-system:service-controller" no puede enumerar el recurso "cronjobs" en el grupo API "batch" en el espacio de nombres "predeterminado"
Los mensajes me sugieren que el usuario inició sesión porque a través del token no tiene los permisos para ver estos recursos. Aunque puedo verlos usando la herramienta kubectl cli.
kubectl describe clusterrole kubernetes-dashboard Name: kubernetes-dashboard Labels: k8s-app=kubernetes-dashboard Annotations: <none> PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- nodes.metrics.k8s.io [] [] [get list watch] pods.metrics.k8s.io [] [] [get list watch]Lo siguiente lo iniciará como admin-user , que parece ser el comportamiento que está buscando.
$ ADMIN_USER_TOKEN_NAME=$(kubectl -n kube-system get secret | grep admin-user-token | cut -d' ' -f1) $ echo $ADMIN_USER_TOKEN_NAME admin-user-token-k4s7r # The suffix is auto-generated $ ADMIN_USER_TOKEN_VALUE=$(kubectl -n kube-system get secret "$ADMIN_USER_TOKEN_NAME" -o jsonpath='{.data.token}' | base64 --decode) $ echo "$ADMIN_USER_TOKEN_VALUE" eyJhbGciOiJ ... .....................-Tg # Copy this token and use it on the Kubernetes Dashboard login page La cuenta de servicio que se usó en el tutorial es service-controller , que parece tener muy pocos permisos.
$ kubectl -n kube-system describe clusterrole system:controller:service-controller Name: system:controller:service-controller Labels: kubernetes.io/bootstrapping=rbac-defaults Annotations: rbac.authorization.kubernetes.io/autoupdate: true PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- events [] [] [create patch update] events.events.k8s.io [] [] [create patch update] services [] [] [get list watch] nodes [] [] [list watch] services/status [] [] [patch update]Avísame si tienes algún problema.