【问题标题】:Can I connect one service account to multiple namespaces in Kubernetes?我可以将一个服务帐户连接到 Kubernetes 中的多个命名空间吗?
【发布时间】:2019-05-26 09:30:39
【问题描述】:

我有几个命名空间 - 假设 NS1NS2。我在其中创建了服务帐户 - NS1 中的 sa1NS2 中的 sa2。我已经为sa1 创建了角色和角色绑定,以便在NS1sa2 内完成NS2 内的操作。 我想要的是在NS2 内给予sa1 一定的访问权限(比如说只有Pod Reader 角色)。

我想知道这是否可能?

【问题讨论】:

    标签: kubernetes openshift kubectl rbac kubernetes-namespace


    【解决方案1】:

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

    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
    

    【讨论】:

    • 我们能否应用相同的概念在 Service [ns1 中的 NodePort] 和 Ingress [Aws-alb-ingress-controller 在 ns2] 之间进行通信IE;跨 2 个不同的命名空间?
    • @AshishKumar 在这里您可以使用 ExternalName 类型的服务。
    • @LLlAMnYP 可以使用 ExternalName 类型的服务在指定的同一标签下的多个 Pod 之间分配流量。
    • @Ashish 外部名称类型的服务只不过是集群 dns 中的 CNAME 记录。然后由它指向的服务完成平衡。
    • 详细信息:roleRef section 中的kind: Role 将被 k8s 删除。您可以在本节中使用 namespace: n2
    猜你喜欢
    • 1970-01-01
    • 2019-03-30
    • 2017-02-02
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多