我正在开发一个插件,它使用 kubernetes java 客户端在 kubernetes 中进行操作。我正在使用 kubernetes 客户端 v4.1.2 和 kubernetes v1.13。在我的插件中,我为用户提供使用基本身份验证或 Api token 登录 kubernetes 集群的选项。通过 API token ,我可以登录,但无法使用基本身份验证进行登录。我尝试使用用户名和密码创建用户,但是当我尝试使用这些凭据登录时,我收到错误消息,显示“命名空间被禁止:用户“system:anonymous”无法在集群范围内的 API 组“”中列出资源“命名空间””。
任何人都可以帮助我创建一个具有适当权限的用户(基本身份验证)来列出 kubernetes 中的命名空间吗?
提前致谢
最佳答案
您应该将服务帐户 system:serviceaccount:default:default (这是绑定(bind)到 Pod 的默认帐户)与角色 cluster-admin 绑定(bind),只需创建一个包含以下内容的 yaml(名称如 Fabric8-rbac.yaml):
我通过创建解决了这个问题
# NOTE: The service account `default:default` already exists in k8s cluster.
# You can create a new account following like this:
#---
#apiVersion: v1
#kind: ServiceAccount
#metadata:
# name: <new-account-name>
# namespace: <namespace>
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: fabric8-rbac
subjects:
- kind: ServiceAccount
# Reference to upper's `metadata.name`
name: default
# Reference to upper's `metadata.namespace`
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
kubectl apply -f fabric8-rbac.yaml
关于java - 如何使用基本身份验证创建具有适当权限的用户来列出 kubernetes v1.13 中的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54860782/