Google cloud platform 如何在非交互模式下使用用户帐户对google cloud sdk进行身份验证

Google cloud platform 如何在非交互模式下使用用户帐户对google cloud sdk进行身份验证,google-cloud-platform,google-kubernetes-engine,gcloud,google-cloud-sdk,Google Cloud Platform,Google Kubernetes Engine,Gcloud,Google Cloud Sdk,当我使用service-account.json进行身份验证时,我无法访问任何项目,即命令“gcloud projects list”导致 列出了0个项目 使用命令“gcloud config set project my project”设置gcloud项目会导致: 警告:您似乎无权访问project[my project],或者它不存在 但是这个项目存在于我的service-account.json中 我正在尝试获取我的GKE群集凭据以创建kubeconfig条目。 'gcloud容器群集获

当我使用service-account.json进行身份验证时,我无法访问任何项目,即命令“gcloud projects list”导致

列出了0个项目

使用命令“gcloud config set project my project”设置gcloud项目会导致:

警告:您似乎无权访问project[my project],或者它不存在

但是这个项目存在于我的service-account.json中 我正在尝试获取我的GKE群集凭据以创建kubeconfig条目。 'gcloud容器群集获取凭据我的群集--zone=us-central1-a'

错误:(gcloud.container.clusters.get凭据)ResponseError:code=403,message=Required“container.clusters.get”对“projects/my project/zones/us-central1-a/clusters/my-cluster”的权限

当我使用gcloud init登录到GCP并使用用户帐户登录时,所有这些步骤都会给出成功的结果。但我如何在不打开浏览器的情况下授权用户帐户。我不能使用“--console only”标志,因为它仍然需要复制粘贴url并打开浏览器。我想通过只使用脚本自动化对用户帐户进行身份验证的整个过程

注意:my cluster GKE群集是在我的项目下创建的,由我创建。

我怀疑(!?)您的服务帐户没有足够的权限(通过角色授予)

要列出项目(
gcloud projects list
),服务帐户必须(至少)
resourcemanager.projects.get
(每个项目)在列表中。见:

要检索群集权限,它必须具有
container.clusters.get
(请参阅)

包含这两个角色的好角色是
角色/container.clusterAdmin

服务账户具有挑战性。它们既是资源(粒子)又是身份(波),并且根据上下文的不同表现不同

作为资源,服务帐户在项目中创建(并由项目所有),并且可以在任何项目(而不仅仅是所有者)中授予权限

作为身份,服务帐户可以被授予聚合对一个或多个方法的权限的角色。我想你可能错过了这一步

谷歌的技术很不错