K8s——跨命名空间使用服务账户
K8s - using service accounts across namespaces
我有一个服务帐户,在默认命名空间中,有一个 clusterRoleBinding 到可以观察作业的 clusterRole。
我希望在任何命名空间中使用此服务帐户,而不必在每个新命名空间中定义一个新的服务帐户。 init 容器使用服务帐户检查作业是否已完成,然后再允许部署继续。
不确定我需要提供哪些额外信息,但会根据要求提供。
您可以简单地从 RoleBinding 中的另一个名称空间引用 ServiceAccount:
例如,下面是将一个命名空间中的服务帐户引用到另一个命名空间的示例,仅用于读取 pods。
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
我有一个服务帐户,在默认命名空间中,有一个 clusterRoleBinding 到可以观察作业的 clusterRole。
我希望在任何命名空间中使用此服务帐户,而不必在每个新命名空间中定义一个新的服务帐户。 init 容器使用服务帐户检查作业是否已完成,然后再允许部署继续。
不确定我需要提供哪些额外信息,但会根据要求提供。
您可以简单地从 RoleBinding 中的另一个名称空间引用 ServiceAccount:
例如,下面是将一个命名空间中的服务帐户引用到另一个命名空间的示例,仅用于读取 pods。
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