Search code examples
kubernetesopenshiftkubectlrbackubernetes-namespace

Can I connect one service account to multiple namespaces in Kubernetes?


I have couple of namespaces - assume NS1 and NS2. I have serviceaccounts created in those - sa1 in NS1 and sa2 in NS2. I have created roles and rolebindings for sa1 to do stuff within NS1 and sa2 within NS2. What I want is give sa1 certain access within NS2 (say only Pod Reader role).

I am wondering if that's possible or not?


Solution

  • You can simply reference a ServiceAccount from another namespace in the RoleBinding:

    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