run - kubernetes dashboard
¿Cómo iniciar sesión en el panel de control de Kubernetes? (7)
Desde la versión 1.7, Dashboard utiliza una configuración más segura. Significa que, por defecto, tiene un conjunto mínimo de privilegios y solo se puede acceder a través de HTTPS. Se recomienda leer la guía de control de acceso antes de realizar más pasos.
A partir de la versión 1.7, Dashboard admite la autenticación de usuarios basada en:
- Token de portador que se puede usar en la vista de inicio de sesión del Panel.
- Username/password que se puede usar en la vista de inicio de sesión del Tablero.
--- document
Simbólico
Aquí el
Token
puede ser
Static Token
,
Static Token
Service Account Token
,
Service Account Token
OpenID Connect Token
de
Kubernetes Authenticating
, pero no el
Bootstrap Token
kubeadm.
Con kubectl, podemos obtener una cuenta de servicio (por ejemplo, controlador de implementación) creada en kubernetes de forma predeterminada.
$ kubectl -n kube-system get secret
# All secrets with type ''kubernetes.io/service-account-token'' will allow to log in.
# Note that they have different privileges.
NAME TYPE DATA AGE
deployment-controller-token-frsqj kubernetes.io/service-account-token 3 22h
$ kubectl -n kube-system describe secret deployment-controller-token-frsqj
Name: deployment-controller-token-frsqj
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name=deployment-controller
kubernetes.io/service-account.uid=64735958-ae9f-11e7-90d5-02420ac00002
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZXBsb3ltZW50LWNvbnRyb2xsZXItdG9rZW4tZnJzcWoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVwbG95bWVudC1jb250cm9sbGVyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjQ3MzU5NTgtYWU5Zi0xMWU3LTkwZDUtMDI0MjBhYzAwMDAyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRlcGxveW1lbnQtY29udHJvbGxlciJ9.OqFc4CE1Kh6T3BTCR4XxDZR8gaF1MvH4M3ZHZeCGfO-sw-D0gp826vGPHr_0M66SkGaOmlsVHmP7zmTi-SJ3NCdVO5viHaVUwPJ62hx88_JPmSfD0KJJh6G5QokKfiO0WlGN7L1GgiZj18zgXVYaJShlBSz5qGRuGf0s1jy9KOBt9slAN5xQ9_b88amym2GIXoFyBsqymt5H-iMQaGP35tbRpewKKtly9LzIdrO23bDiZ1voc5QZeAZIWrizzjPY5HPM1qOqacaY9DcGc7akh98eBJG_4vZqH2gKy76fMf0yInFTeNKr45_6fWt8gRM77DQmPwb3hbrjWXe1VvXX_g
Kubeconfig
El usuario en el archivo kubeconfig necesita
username & password
o
token
, mientras que
admin.conf
solo tiene
client-certificate
.
$ kubectl config set-credentials cluster-admin --token=bearer_token
Alternativa (no recomendado para producción)
Aquí hay dos formas de omitir la autenticación, pero úsela con precaución.
Implemente el tablero con HTTP
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml
El tablero se puede cargar en
http://localhost:8001/ui
con el
kubectl proxy
.
Conceder privilegios de administrador a la cuenta de servicio del tablero
$ cat <<EOF | kubectl create -f -
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
EOF
Luego puede usar la opción
Skip
en la página de inicio de sesión para acceder al Panel.
Si está utilizando la versión de tablero v1.10.1 o posterior, también debe agregar
--enable-skip-login
a los argumentos de la línea de comandos de la implementación.
Puede hacerlo agregándolo a los
kubectl edit deployment/kubernetes-dashboard --namespace=kube-system
en
kubectl edit deployment/kubernetes-dashboard --namespace=kube-system
.
Ejemplo:
containers:
- args:
- --auto-generate-certificates
- --enable-skip-login # <-- add this line
image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
Acabo de actualizar kubeadm y kubelet a v1.8.0. E instale el tablero siguiendo el document oficial.
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
Después de eso, comencé el tablero ejecutando
$ kubectl proxy --address="192.168.0.101" -p 8001 --accept-hosts=''^*$''
Entonces, afortunadamente, pude acceder al tablero a través de http://192.168.0.101:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
Fui redirigido a una página de inicio de sesión como esta que nunca había conocido antes. Parece que hay dos formas de autenticación.
Traté de cargar el
/etc/kubernetes/admin.conf
como kubeconfig pero fallé.
Luego intenté usar el token que obtuve de la
kubeadm token list
para
kubeadm token list
sesión, pero fallé nuevamente.
La pregunta es cómo puedo iniciar sesión en el tablero. Parece que agregaron muchos mecanismos de seguridad que antes. Gracias.
TL; DR
Para obtener el token en una sola línea:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | awk ''/^deployment-controller-token-/{print $1}'') | awk ''$1=="token:"{print $2}''
Esto supone que su ~ / .kube / config está presente y es válido.
Y también que
kubectl config get-contexts
indica que está utilizando el contexto correcto (clúster y espacio de nombres) para el tablero en el que está iniciando sesión.
Explicación
Derivé esta respuesta de lo que aprendí de la respuesta de @ silverfox. Esa es una redacción muy informativa. Desafortunadamente no llega a decirle cómo poner en práctica la información. Tal vez he estado haciendo DevOps demasiado tiempo, pero creo que en shell. Es mucho más difícil para mí aprender o enseñar en inglés.
Aquí está ese línea con saltos de línea y sangría para facilitar la lectura:
kubectl -n kube-system describe secret $(
kubectl -n kube-system get secret | /
awk ''/^deployment-controller-token-/{print $1}''
) | /
awk ''$1=="token:"{print $2}''
Hay 4 comandos distintos y se llaman en este orden:
- Línea 2: este es el primer comando de la sección Token de @ silverfox.
-
Línea 3: imprima solo el primer
campo
de la línea que comienza con
deployment-controller-token-
(que es el nombre del pod) - Línea 1: este es el segundo comando de la sección Token de @ silverfox.
- Línea 5: imprima solo el segundo campo de la línea cuyo primer campo es "token:"
Combinando dos respuestas: 49992698 y 47761914 :
# Create service account
kubectl create serviceaccount cluster-admin-dashboard-sa
# Bind ClusterAdmin role to the service account
kubectl create clusterrolebinding cluster-admin-dashboard-sa /
--clusterrole=cluster-admin /
--serviceaccount=default:cluster-admin-dashboard-sa
# Parse the token
TOKEN=$(kubectl describe secret $(kubectl -n kube-system get secret | awk ''/^cluster-admin-dashboard-sa-token-/{print $1}'') | awk ''$1=="token:"{print $2}'')
añadir
type: NodePort for the Service
Y luego ejecuta este comando:
kubectl apply -f kubernetes-dashboard.yaml
Encuentra el puerto expuesto con el comando:
kubectl get services -n kube-system
Debería poder obtener el panel de control en http://hostname:exposedport/ sin autenticación
El inicio de sesión de omisión se ha deshabilitado de forma predeterminada debido a problemas de seguridad. https://github.com/kubernetes/dashboard/issues/2672
en su tablero yaml agregue este argumento
- --enable-skip-login
para recuperarlo
Si no desea otorgar permiso de administrador a la cuenta de servicio del tablero, puede crear una cuenta de servicio de administrador de clúster.
$ kubectl create serviceaccount cluster-admin-dashboard-sa
$ kubectl create clusterrolebinding cluster-admin-dashboard-sa /
--clusterrole=cluster-admin /
--serviceaccount=default:cluster-admin-dashboard-sa
Y luego, puede usar el token de la cuenta de servicio de administración de clúster recién creada.
$ kubectl get secret | grep cluster-admin-dashboard-sa
cluster-admin-dashboard-sa-token-6xm8l kubernetes.io/service-account-token 3 18m
$ kubectl describe secret cluster-admin-dashboard-sa-token-6xm8l
Lo cité de la guía giantswarm: https://docs.giantswarm.io/guides/install-kubernetes-dashboard/
Todas las respuestas anteriores son buenas para mí.
Pero una respuesta directa de mi parte vendría de
https://github.com/kubernetes/dashboard/wiki/Creating-sample-user#bearer-token
.
Simplemente use
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk ''{print $1}'')
.
Tendrá muchos valores para algunas claves (
Name
,
Namespace
,
Labels
, ...,
token
).
Lo más importante es el
token
que corresponde a tu nombre.
copie ese token y péguelo en el cuadro del token.
Espero que esto ayude.