java - 如何使用基本身份验证创建具有适当权限的用户来列出 kubernetes v1.13 中的命名空间

标签 java kubernetes

我正在开发一个插件,它使用 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/

相关文章:

kubernetes - 使用gcloud和kubectl切换帐户是否有更好的工作流程?

kubernetes - 为 GKE 上的负载均衡器设置静态外部 IP

docker - Kubernetes - 从私有(private) Docker 注册表中提取时出错

java - 我可以从 Dalvik 和 Android 工具链中获得哪些优化?

java - 在失败和错误情况下使用什么 : WebApplicationException vs Response?

java - Java 中异常的 throws 关键字

kubernetes - 如何诊断 Kubernetes 上的 "Error syncing pod"pod?

java - ESAPI 错误,我试图将内容保存到数据库中

java - JBoss Seam 可以在使用登录页面后重定向用户的 "Last Visited Page"吗?

kubernetes - HA主群集:如何获取正确版本的apiserver