Kubernetes: 仪表板 https 未经授权

创建于 2016-08-30  ·  3评论  ·  资料来源: kubernetes/kubernetes

仪表板版本:1.1
Kubernetes 版本:1.3.6
操作系统:ubuntu14.04
版本:1.6.2
将 kubernetes 和仪表板部署为http://kubernetes.io/docs/getting-started-guides/ubuntu/

我可以访问仪表板http://master-ip :8080/
bur 当我访问https://master-ip :6443/ 时,返回“未授权”
为什么?

areapiserver

最有用的评论

我猜您的集群正在使用证书通过 HTTPS 进行安全通信。 这里有2个问题。

  1. 浏览器无法识别根 CA,因此无法相信该连接是安全的。 我们可以绕过它并仍然使用它。 这部分不是拦截器。 :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. API Server 需要客户端证书/令牌/用户并通过(取决于配置)来授权客户端,否则它将返回Unauthorized

使用 curl 很容易授权,因为您可以轻松提供所需的数据。
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

使用浏览器,它比这更复杂。 有几种方法可以访问仪表板:

  1. 您可以使用 NodePort 通过服务公开它并使用<MASTER_IP>:<NODE_PORT>访问它。 (不安全)
  2. 将证书导入浏览器。
  3. 使用kubectl proxy并转到http://127.0.0.1:8001/ (绑定地址可以更改)。 如果您的kubeconfig文件配置为使用安全连接,它将处理 SSL 隧道。

关于第二个选项。 我可以提供一些信息如何使用 Firefox 做到这一点。

  1. 将生成的 CA 证书导入浏览器。
    zrzut ekranu z 2016-09-15 16-05-47
  2. 将用户证书导入Your Certificates 。 如果您有 2 个单独的证书crtkey最好将它们合并到PFX/PKCS#12证书中,因为直接将其导入浏览器证书存储区很容易。 您可以使用此页面或使用openssl手动操作。
    zrzut ekranu z 2016-09-15 16-09-44

如果证书生成正确,则在下次尝试通过 HTTPS 访问 api 服务器时将显示弹出窗口。 您可能需要清除浏览器缓存。
zrzut ekranu z 2016-09-15 16-12-04

您现在应该看到仪表板。 :)
zrzut ekranu z 2016-09-15 16-14-16

我不知道如何在浏览器中使用不记名令牌。 在向 api 服务器发送请求之前,可能需要一些手动工作才能将数据添加到 HTTP 标头。

当然还有其他选项可以授权用户。 Kubernetes 支持 ABAC、RBAC 等等。

所有3条评论

我有同样的问题。 而且我认为作者可能还没有考虑到它。
https://github.com/kubernetes/dashboard/issues/1116

我猜您的集群正在使用证书通过 HTTPS 进行安全通信。 这里有2个问题。

  1. 浏览器无法识别根 CA,因此无法相信该连接是安全的。 我们可以绕过它并仍然使用它。 这部分不是拦截器。 :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. API Server 需要客户端证书/令牌/用户并通过(取决于配置)来授权客户端,否则它将返回Unauthorized

使用 curl 很容易授权,因为您可以轻松提供所需的数据。
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

使用浏览器,它比这更复杂。 有几种方法可以访问仪表板:

  1. 您可以使用 NodePort 通过服务公开它并使用<MASTER_IP>:<NODE_PORT>访问它。 (不安全)
  2. 将证书导入浏览器。
  3. 使用kubectl proxy并转到http://127.0.0.1:8001/ (绑定地址可以更改)。 如果您的kubeconfig文件配置为使用安全连接,它将处理 SSL 隧道。

关于第二个选项。 我可以提供一些信息如何使用 Firefox 做到这一点。

  1. 将生成的 CA 证书导入浏览器。
    zrzut ekranu z 2016-09-15 16-05-47
  2. 将用户证书导入Your Certificates 。 如果您有 2 个单独的证书crtkey最好将它们合并到PFX/PKCS#12证书中,因为直接将其导入浏览器证书存储区很容易。 您可以使用此页面或使用openssl手动操作。
    zrzut ekranu z 2016-09-15 16-09-44

如果证书生成正确,则在下次尝试通过 HTTPS 访问 api 服务器时将显示弹出窗口。 您可能需要清除浏览器缓存。
zrzut ekranu z 2016-09-15 16-12-04

您现在应该看到仪表板。 :)
zrzut ekranu z 2016-09-15 16-14-16

我不知道如何在浏览器中使用不记名令牌。 在向 api 服务器发送请求之前,可能需要一些手动工作才能将数据添加到 HTTP 标头。

当然还有其他选项可以授权用户。 Kubernetes 支持 ABAC、RBAC 等等。

访问安全 API 服务器端口时,浏览器需要进行身份验证。 正如https://github.com/kubernetes/kubernetes/issues/31665#issuecomment -247342834 所示,这可以通过基于证书的身份验证来完成。

对于基于令牌的身份验证,浏览器不会为您提供一种随请求自动发送不记名令牌的方法。

仪表板描述了如何使用kubectl proxy来添加您的身份验证凭据,并允许您通过代理在本地访问仪表板 - https://github.com/kubernetes/dashboard#usage

此页面是否有帮助?
0 / 5 - 0 等级