运行Kubelet CloudBuilder时Cloudbuild出现问题

时间:2019-10-15 14:12:01

标签: google-cloud-platform google-cloud-build

我正在尝试使用Google Cloud Provider CloudBuild 将新的更改部署到kubernetes集群。每当我进行一些更改时,触发器都可以正常工作,并且可以开始新的构建,但这是我使用cloudbuild.yaml遇到的问题。

cloudbuild.yaml

steps:
  #step1      
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/cloudbuildtest-image', '.' ]
  #step 2
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/$PROJECT_ID/cloudbuildtest-image']
  #step 3 for testing
  name: 'gcr.io/cloud-builders/kubectl'
  args: ['get', 'pods']
  env:
  - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
  - 'CLOUDSDK_CONTAINER_CLUSTER=cloudbuild-test'
  #STEP-4
images:
- 'gcr.io/$PROJECT_ID/cloudbuildtest-image' 

第1步和第2步工作正常,但第3步的问题在于出于测试目的,我只运行了 get pods 命令以测试其是否有效。这是我在日志中遇到的问题。

Running: gcloud container clusters get-credentials --project="journeyfoods-io" --zone="us-central1-a" "cloudbuild-test"
Fetching cluster endpoint and auth data.
ERROR: (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission(s) for "projects/XXXX/zones/us-central1-a/clusters/cloudbuild-test".
  

它正在寻找什么权限?我需要做些吗   在执行步骤之前进行身份验证,或者我到底缺少什么?

1 个答案:

答案 0 :(得分:1)

使用[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com服务帐户执行Cloud Build构建的步骤。来自Cloud Build documentation page的以下主题:

  

启用Cloud Build API时,服务帐户为   自动创建并授予Cloud Build Service Account角色   为您的项目。这个角色足以完成多项任务,   包括:

     
      
  • 从项目的Cloud Source存储库中获取代码
  •   
  • 从项目拥有的任何Cloud Storage存储桶下载文件
  •   
  • 在Cloud Logging中保存构建日志
  •   
  • 将Docker映像推送到Container Registry
  •   
  • 从Container Registry中拉取基础图像
  •   

但是,此服务帐户默认情况下不具有某些操作的权限(尤其是默认情况下不会container.clusters.get权限)。因此,您需要grant it拥有适当的IAM角色。在您的情况下,Kubernetes Engine Developer角色包含container.clusters.get权限,如您在this page中所见。