Kubernetes: tablero https no autorizado

Creado en 30 ago. 2016  ·  3Comentarios  ·  Fuente: kubernetes/kubernetes

Versión del tablero: 1.1
Versión de Kubernetes: 1.3.6
Sistema operativo: ubuntu14.04
Ir a la versión: 1.6.2
Implemente kubernetes y el tablero como http://kubernetes.io/docs/getting-started-guides/ubuntu/

Puedo acceder al tablero http://master-ip :8080/
pero cuando accedo a https://master-ip :6443/, devuelve "No autorizado"
¿Por qué?

areapiserver

Comentario más útil

Supongo que sus clústeres usan certificados para una comunicación segura a través de HTTPS. Aquí hay 2 problemas.

  1. El navegador no reconoce la CA raíz, por lo que no puede confiar en que la conexión sea segura. Podemos pasar por alto eso y seguir usándolo. Esta parte no es un bloqueador. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. El servidor API necesita el certificado/token/usuario del cliente y el pase (depende de la configuración) para autorizar al cliente; de ​​lo contrario, devolverá Unauthorized .

Es fácil autorizar con curl porque puede proporcionar fácilmente los datos requeridos.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

Con el navegador es más complicado que eso. Hay varias formas de acceder al panel de control:

  1. Puede exponerlo a través del servicio usando NodePort y acceder a él con <MASTER_IP>:<NODE_PORT> . (No es seguro)
  2. Importe certificados en su navegador.
  3. Use kubectl proxy y vaya a http://127.0.0.1:8001/ (la dirección de enlace se puede cambiar). Manejará el túnel SSL si su archivo kubeconfig está configurado para usar una conexión segura.

Respecto a la segunda opción. Puedo proporcionar información sobre cómo hacerlo usando Firefox.

  1. Importe el certificado CA generado en el navegador.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Importar certificado de usuario a Your Certificates . Si tiene 2 certificados separados crt y key , es mejor fusionarlos en el certificado PFX/PKCS#12 porque es fácil importarlo directamente al almacén de certificados del navegador. Puede usar esta página o hacerlo manualmente usando openssl .
    zrzut ekranu z 2016-09-15 16-09-44

Si los certificados se generan correctamente, se mostrará una ventana emergente en el próximo intento de acceder al servidor API a través de HTTPS. Es posible que deba borrar la memoria caché del navegador.
zrzut ekranu z 2016-09-15 16-12-04

Deberías ver el tablero ahora. :)
zrzut ekranu z 2016-09-15 16-14-16

No sé cómo usar el token de portador en el navegador. Posiblemente requiera algo de trabajo manual para agregar datos al encabezado HTTP antes de enviar la solicitud al servidor API.

Por supuesto, hay otras opciones para autorizar al usuario. Kubernetes es compatible con ABAC, RBAC y mucho más.

Todos 3 comentarios

Tengo el mismo problema. Y creo que el autor tal vez aún no lo haya considerado.
https://github.com/kubernetes/dashboard/issues/1116

Supongo que sus clústeres usan certificados para una comunicación segura a través de HTTPS. Aquí hay 2 problemas.

  1. El navegador no reconoce la CA raíz, por lo que no puede confiar en que la conexión sea segura. Podemos pasar por alto eso y seguir usándolo. Esta parte no es un bloqueador. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. El servidor API necesita el certificado/token/usuario del cliente y el pase (depende de la configuración) para autorizar al cliente; de ​​lo contrario, devolverá Unauthorized .

Es fácil autorizar con curl porque puede proporcionar fácilmente los datos requeridos.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

Con el navegador es más complicado que eso. Hay varias formas de acceder al panel de control:

  1. Puede exponerlo a través del servicio usando NodePort y acceder a él con <MASTER_IP>:<NODE_PORT> . (No es seguro)
  2. Importe certificados en su navegador.
  3. Use kubectl proxy y vaya a http://127.0.0.1:8001/ (la dirección de enlace se puede cambiar). Manejará el túnel SSL si su archivo kubeconfig está configurado para usar una conexión segura.

Respecto a la segunda opción. Puedo proporcionar información sobre cómo hacerlo usando Firefox.

  1. Importe el certificado CA generado en el navegador.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Importar certificado de usuario a Your Certificates . Si tiene 2 certificados separados crt y key , es mejor fusionarlos en el certificado PFX/PKCS#12 porque es fácil importarlo directamente al almacén de certificados del navegador. Puede usar esta página o hacerlo manualmente usando openssl .
    zrzut ekranu z 2016-09-15 16-09-44

Si los certificados se generan correctamente, se mostrará una ventana emergente en el próximo intento de acceder al servidor API a través de HTTPS. Es posible que deba borrar la memoria caché del navegador.
zrzut ekranu z 2016-09-15 16-12-04

Deberías ver el tablero ahora. :)
zrzut ekranu z 2016-09-15 16-14-16

No sé cómo usar el token de portador en el navegador. Posiblemente requiera algo de trabajo manual para agregar datos al encabezado HTTP antes de enviar la solicitud al servidor API.

Por supuesto, hay otras opciones para autorizar al usuario. Kubernetes es compatible con ABAC, RBAC y mucho más.

Se requiere que el navegador se autentique al acceder al puerto seguro del servidor API. Como demuestra https://github.com/kubernetes/kubernetes/issues/31665#issuecomment -247342834, eso se puede hacer con la autenticación basada en certificados.

Para la autenticación basada en tokens, los navegadores no le brindan una forma de enviar tokens de portador automáticamente con sus solicitudes.

El panel describe cómo puede usar kubectl proxy que agrega sus credenciales de autenticación y le permite acceder al panel localmente a través del proxy: https://github.com/kubernetes/dashboard#usage

¿Fue útil esta página
0 / 5 - 0 calificaciones