Kubernetes: painel https Não autorizado

Criado em 30 ago. 2016  ·  3Comentários  ·  Fonte: kubernetes/kubernetes

Versão do painel: 1.1
Versão do Kubernetes: 1.3.6
Sistema operacional: ubuntu14.04
Go versão: 1.6.2
Ideploy kubernetes e dashboard como http://kubernetes.io/docs/getting-started-guides/ubuntu/

Eu posso acessar o painel http://master-ip :8080/
bur quando eu acesso https://master-ip :6443/ , retorna "Unauthorized"
porque?

areapiserver

Comentários muito úteis

Suponho que seus clusters estejam usando certificados para comunicação segura por HTTPS. Há 2 questões aqui.

  1. O navegador não reconhece a autoridade de certificação raiz, portanto, não pode confiar que a conexão é segura. Podemos ignorar isso e ainda usá-lo. Esta parte não é um bloqueador. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. O API Server precisa de certificado/token/usuário de cliente e passe (depende da configuração) para autorizar o cliente, caso contrário, retornará Unauthorized .

É fácil autorizar com curl porque você pode fornecer facilmente os dados necessários.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

Com o navegador é mais complicado do que isso. Existem várias maneiras de acessar o painel:

  1. Você pode expô-lo através do serviço usando NodePort e acessá-lo com <MASTER_IP>:<NODE_PORT> . (Não é seguro)
  2. Importe certificados para o seu navegador.
  3. Use kubectl proxy e vá para http://127.0.0.1:8001/ (endereço de ligação pode ser alterado). Ele lidará com o encapsulamento SSL se seu arquivo kubeconfig estiver configurado para usar conexão segura.

Em relação à segunda opção. Eu posso fornecer algumas informações sobre como fazer isso usando o firefox.

  1. Importe o certificado CA gerado para o navegador.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Importar certificado de usuário para Your Certificates . Se você tiver 2 certificados separados crt e key , é melhor mesclá-los no certificado PFX/PKCS#12 porque é fácil importá-lo diretamente para o armazenamento de certificados do navegador. Você pode usar esta página ou fazê-lo manualmente usando openssl .
    zrzut ekranu z 2016-09-15 16-09-44

Se os certificados forem gerados corretamente, o pop-up será exibido na próxima tentativa de acessar o servidor api por HTTPS. Pode ser necessário limpar o cache do navegador.
zrzut ekranu z 2016-09-15 16-12-04

Você deve ver o painel agora. :)
zrzut ekranu z 2016-09-15 16-14-16

Eu não sei como usar o token do portador no navegador. Possivelmente, requer algum trabalho manual para adicionar dados ao cabeçalho HTTP antes de enviar a solicitação ao servidor api.

Claro que existem outras opções para autorizar o usuário. O Kubernetes suporta ABAC, RBAC e muito mais.

Todos 3 comentários

Eu tenho o mesmo problema. E eu acho que o autor talvez não tenha considerado isso ainda.
https://github.com/kubernetes/dashboard/issues/1116

Suponho que seus clusters estejam usando certificados para comunicação segura por HTTPS. Há 2 questões aqui.

  1. O navegador não reconhece a autoridade de certificação raiz, portanto, não pode confiar que a conexão é segura. Podemos ignorar isso e ainda usá-lo. Esta parte não é um bloqueador. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. O API Server precisa de certificado/token/usuário de cliente e passe (depende da configuração) para autorizar o cliente, caso contrário, retornará Unauthorized .

É fácil autorizar com curl porque você pode fornecer facilmente os dados necessários.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

Com o navegador é mais complicado do que isso. Existem várias maneiras de acessar o painel:

  1. Você pode expô-lo através do serviço usando NodePort e acessá-lo com <MASTER_IP>:<NODE_PORT> . (Não é seguro)
  2. Importe certificados para o seu navegador.
  3. Use kubectl proxy e vá para http://127.0.0.1:8001/ (endereço de ligação pode ser alterado). Ele lidará com o encapsulamento SSL se seu arquivo kubeconfig estiver configurado para usar conexão segura.

Em relação à segunda opção. Eu posso fornecer algumas informações sobre como fazer isso usando o firefox.

  1. Importe o certificado CA gerado para o navegador.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Importar certificado de usuário para Your Certificates . Se você tiver 2 certificados separados crt e key , é melhor mesclá-los no certificado PFX/PKCS#12 porque é fácil importá-lo diretamente para o armazenamento de certificados do navegador. Você pode usar esta página ou fazê-lo manualmente usando openssl .
    zrzut ekranu z 2016-09-15 16-09-44

Se os certificados forem gerados corretamente, o pop-up será exibido na próxima tentativa de acessar o servidor api por HTTPS. Pode ser necessário limpar o cache do navegador.
zrzut ekranu z 2016-09-15 16-12-04

Você deve ver o painel agora. :)
zrzut ekranu z 2016-09-15 16-14-16

Eu não sei como usar o token do portador no navegador. Possivelmente, requer algum trabalho manual para adicionar dados ao cabeçalho HTTP antes de enviar a solicitação ao servidor api.

Claro que existem outras opções para autorizar o usuário. O Kubernetes suporta ABAC, RBAC e muito mais.

O navegador é obrigado a autenticar ao acessar a porta do servidor de API segura. Como https://github.com/kubernetes/kubernetes/issues/31665#issuecomment -247342834 demonstra, isso pode ser feito com autenticação baseada em certificado.

Para autenticação baseada em token, os navegadores não oferecem uma maneira de enviar tokens de portador automaticamente com suas solicitações.

O painel descreve como você pode usar kubectl proxy que adiciona suas credenciais de autenticação e permite acessar o painel localmente por meio do proxy - https://github.com/kubernetes/dashboard#usage

Esta página foi útil?
0 / 5 - 0 avaliações