不断获取权限错误gcloud.container.clusters.get-credentials

Nao*_*aor 5 circleci gcloud kubernetes google-kubernetes-engine

我正在尝试将CircleCi与gcloud Kubernetes引擎集成。

  1. 我使用Kubernetes Engine开发人员和Storage Admin角色创建了一个服务帐户。
  2. 创建CircleCi yaml文件并配置CI。

我的yaml文件的一部分包括:

docker:
            - image: google/cloud-sdk
        environment:
            - PROJECT_NAME: 'my-project'
            - GOOGLE_PROJECT_ID: 'my-project-112233'
            - GOOGLE_COMPUTE_ZONE: 'us-central1-a'
            - GOOGLE_CLUSTER_NAME: 'my-project-bed'
        steps:
            - checkout
            - run:
                  name: Setup Google Cloud SDK
                  command: |
                      apt-get install -qq -y gettext
                      echo $GCLOUD_SERVICE_KEY > ${HOME}/gcloud-service-key.json
                      gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json
                      gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
                      gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}
                      gcloud --quiet container clusters get-credentials ${GOOGLE_CLUSTER_NAME}
Run Code Online (Sandbox Code Playgroud)

除了最后一个命令,其他所有东西都运行良好:

gcloud --quiet container clusters get-credentials ${GOOGLE_CLUSTER_NAME}
Run Code Online (Sandbox Code Playgroud)

它不断失败并显示以下错误:

ERROR: (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission(s) for "projects/my-project-112233/zones/us-central1-a/clusters/my-project-bed". See https://cloud.google.com/kubernetes-engine/docs/troubleshooting#gke_service_account_deleted for more info.
Run Code Online (Sandbox Code Playgroud)

我尝试让ci帐户担任项目所有者,但仍然遇到该错误。

我尝试禁用并重新启用Kubernetes服务,但没有帮助。

任何想法如何解决这个问题?我正在尝试解决4天...

Ami*_*nes 7

这是一个旧线程,这就是今天使用云构建处理此问题的方式:

授予 Cloud Build 对 GKE 的访问权限

要在 Kubernetes 集群中部署应用程序,Cloud Build 需要 Kubernetes Engine 开发人员身份和访问管理角色。

获取项目编号:

PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')"
Run Code Online (Sandbox Code Playgroud)

添加 IAM 策略绑定:

gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \
    --member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \
    --role=roles/container.developer
Run Code Online (Sandbox Code Playgroud)

更多信息可以在这里找到。


Ric*_*ico 5

我相信这不是 CI 服务帐户,而是用于管理 GKE 集群的 k8s 服务帐户,其电子邮件应如下所示(一定是有人删除了它):

k8s-service-account@<project-id>.iam.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)

萨

您可以重新创建它并为其授予项目所有者权限。

重新创造

  • 我删除了该帐户并使用相同的名称和角色再次创建了该帐户。突然间它就起作用了……gcloud bug。 (3认同)