如何使用userid / passwd在集群外部以管理员身份访问Kubernetes Dashboard?

时间:2018-02-12 11:02:20

标签: kubernetes kubernetes-security

期望的结果: 我想设置一个包含用户ID和密码的CSV文件,并以完整的管理员身份访问Kubernetes Dashboard,最好是在任何有浏览器的地方。我只是在学习kubernetes并想尝试集群管理,部署等。这只是为了学习而不是生产设置。我正在使用Kubernetes版本1.9.2并创建了一个3机器集群(主机和2个工作人员)

背景/到目前为止我做了什么:
我阅读了仪表板自述文件,并使用下面显示的文件创建了一个admin-user和admin-role-binding。然后,我可以使用kubectl describe secret命令获取管理员用户的令牌。我在群集主服务器上运行kubectl proxy,并使用在群集主服务器上运行的浏览器使用该令牌对仪表板进行身份验证。所有这些都有效。

管理-user.yaml:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system

系统管理员角色-binding.yaml:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

我可以以管理员身份登录仪表板:

  1. 我运行kubectl proxy
  2. 我使用浏览器访问仪表板,我在其中运行了命令(1)
  3. 我使用"令牌"使用kubectl describe secret命令登录并粘贴管理员用户令牌的选项。
  4. 我想做什么:

    1. 使用用户ID /密码设置CSV文件
    2. 以管理员身份登录,使用用户名/密码
    3. 能够从任何地方登录
    4. 为此,我创建了一个CSV文件,例如/home/chris/myusers.txt

      mypasswd,admin,42
      

      我不知道用于id的值是什么,所以我只是用42来点击。

      然后我编辑了文件:
      /etc/kubernetes/manifests/kube-apiserver.yaml并添加以下内容:
      --basic-auth-file=/home/chris/myusers.txt

      然后重新启动kubelet:
      sudo systemctl restart kubelet

      然而,当我这样做时,我的群集停止工作,我无法访问仪表板,所以我还原了仍然使用管理员用户令牌的地方。

      我的问题是:

      1. 我可以做我想做的事吗?
      2. 我在用户CSV文件中使用哪些ID值?我会指定哪些小组?
      3. 我需要做些什么其他更改才能让所有这些变得有效?如果我修改apiserver清单以使用带有用户ID /密码的文件,那是否会破坏我的集群的其余配置?

1 个答案:

答案 0 :(得分:0)

您可以尝试这个对我有用的产品。从这里参考。

  volumeMounts:
    - mountPath: /etc/kubernetes/auth.csv
      name: kubernetes-dashboard
      readOnly: true
  volumes:
  - hostPath:
      path: /etc/kubernetes/auth.csv
    name: kubernetes-dashboard

How to config simple login/pass authentication for kubernetes desktop UI