Kubernetes仪表板未经授权。如何配置

时间:2016-06-15 07:48:45

标签: kubernetes coreos

我正在遵循Coreos的Kubernetes on AWS教程(我需要一个Cloudformation模板)在我现有的VPC中创建一个Kubernetes。

一切都配置正确并且群集已成功设置,但我遇到了Heapster / KubeDNS的困难

我的群集信息和配置视图如下所示:

kubectl --kubeconfig=kubeconfig cluster-info
Kubernetes master is running at https://my-cluster-endpoint.company.com.
Heapster is running at https://my-cluster-endpoint.company.com./api/v1/proxy/namespaces/kube-system/services/heapster
KubeDNS is running at https://my-cluster-endpoint.company.com./api/v1/proxy/namespaces/kube-system/services/kube-dns

kubectl --kubeconfig=kubeconfig config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: credentials/ca.pem
    server: https://my-cluster-endpoint.company.com.
  name: kube-aws-my-cluster-name-cluster
contexts:
- context:
    cluster: kube-aws-my-cluster-name-cluster
    namespace: default
    user: kube-aws-my-cluster-name-admin
  name: kube-aws-my-cluster-name-context
current-context: kube-aws-my-cluster-name-context
kind: Config
preferences: {}
users:
- name: kube-aws-my-cluster-name-admin
  user:
    client-certificate: credentials/admin.pem
    client-key: credentials/admin-key.pem

getting started guides from kubernetes.io相比,我注意到了一些问题:

  1. Kibana / Grafana等所有“开箱即用”服务都缺失了(但你可以自己安装)
  2. 没有包含用户名和密码的“用户”部分,只能输入一个带证书的仪表板
  3. 当我尝试到达这些端点时,我立即得到“未经授权”,而api甚至没有挑战我的用户名密码

    那么如何为我新创建的集群设置基本身份验证?还是有办法使用.pem证书登录?

    感谢。

1 个答案:

答案 0 :(得分:3)

CoreOS-kubernetes工具旨在部署功能完善的Kubernetes集群,但将可选/插件应用程序作为集群管理员的决策。在这种情况下,kibana&对于功能完备的群集,并不严格要求使用grafana - 因此默认情况下不会部署它们。

与身份验证类似,默认情况下不启用basic-auth(基于证书的auth和Bearer令牌)。但是,您应该能够通过创建文件和向api-server清单添加标志来添加基本身份验证:

  • 按照此处所述的格式创建基本身份验证文件:http://kubernetes.io/docs/admin/authentication

  • /etc/kubernetes/manifests/kube-apiserver.yaml中,添加指向您在上面创建的文件的标记--basic-auth-file=SOMEFILE

当你对kube-apiserver.yaml清单进行更改时,kubelet会看到更改自动重启pod。如果您在多台主机上运行apiservers,请务必对每台主机进行上述更改。

另一种选择是使用kubectl proxy命令首先针对您的api-server进行身份验证。请参阅:http://kubernetes.io/docs/user-guide/connecting-to-applications-proxy - 实际上kubectl代理将进行身份验证,然后允许您在计算机上本地访问端点。