当前位置: 首页 > 知识库问答 >
问题:

跨GCP项目在GKE集群中将Google服务帐户与Kubernetes集群服务帐户绑定

楚皓君
2023-03-14

我在一个GCP项目中构建了一个Google Kubernetes引擎(GKE)集群。

根据集群上运行的应用程序的不同用例,我将应用程序与不同的服务帐户和不同的授予权限相关联。为此,我将Google服务帐户(GSA)与库伯内特斯集群服务帐户(KSA)绑定如下:

gcloud iam service-accounts add-iam-policy-binding \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]" \
  GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
kubectl annotate serviceaccount \
  --namespace K8S_NAMESPACE \
  KSA_NAME \
  iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID.iam.gserviceaccount.com

参考:https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#option_2_node_pool_modification

我解释的一切工作正常。

目前,在不同的项目中有许多GKE集群。此外,分配给应用程序的服务帐户应该在托管GKE集群的同一个项目中创建。我计划将KSA的GSA集中到一个GCP项目中。

问题

>

  • 是否有可能在一个项目中构建一个GKE集群,并在另一个项目中为运行在GKE集群上的应用程序创建一个GSA?

    如果是这样,我必须扮演什么角色来授予与GKE集群相关的GSA?以便访问其他项目中的GSA,并将其与KSA绑定。

    注意:此线程仅涉及与GKE集群上运行的应用程序关联的Google服务帐户(GSA),而不是与GKE集群关联的Google服务帐户(GSA)。

    以及如何将GCP项目中的谷歌服务帐户(GSA)与另一个GCP项目中GKE集群中的库伯内特斯集群服务帐户(KSA)绑定。

  • 共有1个答案

    涂玉韵
    2023-03-14

    这应该是可能的。您绝对可以在一个项目中创建服务帐户,并将其附加到另一个项目中的资源。

    在托管您的服务号的项目中:

    • 确保iam。disableCrossProjectServiceAccountUsage约束不适用于项目(这是通过更新项目的组织策略来实现的)

    看https://cloud.google.com/iam/docs/impersonating-service-accounts#attaching-different-project

     类似资料:
    • 我开发了以下代码,用于自动执行我的一些实例的启动/停止任务,这些实例不需要一直运行,而是在特定范围内运行。 这是我的代码:https://github.com/maartinpii/gcp-shst 我按照谷歌云平台指南(参考:https://cloud.google.com/iam/docs/understanding-service-accounts https://cloud.google.

    • 我正在尝试通过服务帐户(客户端电子邮件和p12证书)连接到google doubeclick api,使用python客户端库,如以下示例所示: http://code.google.com/p/google-api-python-client/source/browse/samples/service_account/tasks.py 它给我一个空access_token: 这有什么意义?我有没

    • 我正在使用谷歌服务帐户将MySQL备份从我们的网络服务器推送到谷歌云端硬盘,使用谷歌API PHP客户端脚本设置为cron作业。 我现在想在多个网络服务器上运行相同的脚本,我不知道如何正确配置服务号,应该吗? > 是否在所有服务器上使用相同的服务帐户和服务帐户密钥/凭据? 或者使用相同的服务帐户,但为每个服务器添加服务帐户密钥/凭据? 还是为每台服务器设置单独的服务帐户?

    • 我已经从GCP控制台创建了和一个自定义角色。 但是,当试图关联它们时,它会失败,如下所示: 知道为什么吗?

    • 我已经创建了一个启用RBAC的Azure Kubernetes集群。 请帮助我知道我对RBAC的理解是错误的还是我在这里做错了什么!!

    • 我有一个复合服务S.c,它使用两个原子服务S.a和S.b,其中所有三个服务都在Kubernetes集群中运行。更好的模式是什么 1)将Sa、Sb创建为无头服务,并让Sc通过NGINX等外部负载均衡器与它们集成(使用DNS解析器来维护更新的后端pod) 2) 使用clusterIP创建Sa、Sb,并让Sc通过群集DNS(skyDNS加载项)访问/解析它们。这将在内部利用基于IP表的负载平衡来实现PO