首页 > 解决方案 > K8s - 跨命名空间使用服务帐户

问题描述

我在默认命名空间中有一个服务帐户,它带有一个 clusterRoleBinding 到一个可以观察作业的 clusterRole。

我希望在任何命名空间中使用此服务帐户,而不必在每个新命名空间中定义一个新服务帐户。初始化容器使用服务帐户检查作业是否已完成,然后才允许继续部署。

不确定我需要提供哪些额外信息,但会根据要求提供。

标签: kubernetesk8s-serviceaccount

解决方案


您可以简单地从 RoleBinding 中的另一个命名空间引用 ServiceAccount:

例如,以下示例用于将一个命名空间中的服务帐户引用到另一个命名空间,以仅读取 pod。

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
  name: pod-reader
  namespace: ns2
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: pod-reader-from-ns1
  namespace: ns2
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: pod-reader
subjects:
- kind: ServiceAccount
  name: ns1-service-account
  namespace: ns1

推荐阅读