如何使用用户/密码保护我的 Kubernetes 仪表板免受外部访问?
在 vm-driver=none 模式下使用 Minikubes 创建集群。
答案1
在 Kubernetes 中,请求以身份验证(确定谁在与 API 服务器通信的凭据)和授权(因此 API 服务器可以确定此用户是否可以执行请求的操作)的形式出现。但是,Kubernetes 并没有传统意义上的用户(Kubernetes 用户只是通过凭据与请求关联的字符串)。凭据策略是您在安装集群时做出的选择(您可以从 x509、密码文件、Bearer 令牌等中进行选择)。
正如您所添加的,您希望在使用 --vm-driver=none 时创建用户,我假设仪表板和集群本身在网络中可供所有人使用。Minikube 旨在用于本地开发和测试,它似乎代表您创建角色。您可以尝试使用以下方式安装常规 Kubernetes 集群kubeadm而不是使用 Minikube 部署的简化版本。在minikube start
minikube 创建集群角色“kubernetes 仪表板”和关联的令牌之后。因此,另一个可能的解决方案是删除 Kubernetes 仪表板并按照说明从头开始安装它这里按照描述创建用户这里您也可以尝试为用户创建新角色,但我没有足够的时间来测试此解决方案。此外,我建议您使用其他工具来完成 Kubernetes 的更复杂任务 - 使用 kubeadm,您可以自己安装仪表板,并根据您的需要进行配置。
更远阅读关于 Kubernetes 仪表板中的访问控制。 为仪表板创建服务帐户并获取其凭据第 7 步:
- 此命令将在默认命名空间中为仪表板创建服务帐户
$ kubectl 创建服务账户仪表板-n 默认
- 此命令将集群绑定规则添加到你的仪表板帐户
$ kubectl 创建 clusterrolebinding 仪表板管理员 -n default \
--clusterrole=集群管理员 \ --serviceaccount=默认:仪表板
- 此命令将为您提供仪表板登录所需的令牌
$ kubectl 获取 secret $(kubectl 获取服务账户仪表板 -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode
您应该会获得一个令牌。4. 复制此令牌并将其粘贴到仪表板登录页面,方法是选择令牌选项