У Cloudbuild возникла проблема при запуске kubelet cloudbuilder

Я пытаюсь внедрить новые изменения в кластер kubernetes с помощью Google Cloud Provider CloudBuild. Всякий раз, когда я вношу какие-то изменения, триггер работает нормально и запускает новую сборку, но вот проблема, с которой я сталкиваюсь с этим 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".

Какие разрешения он ищет? Нужно ли мне выполнять аутентификацию перед выполнением шагов или что именно мне не хватает?


person Tara Prasad Gurung    schedule 15.10.2019    source источник
comment
Я вижу, что - отсутствует в вашем файле cloudbuild.yaml в названии шага 3. Это опечатка при копировании? Если нет, добавьте его.   -  person siamsot    schedule 15.10.2019
comment
@siamsot стоит # в начале, это закомментированная строка.   -  person Tara Prasad Gurung    schedule 15.10.2019


Ответы (1)


Шаги сборки Cloud Build выполняются с использованием учетной записи службы [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com. На странице документации Cloud Build. по этой теме:

Когда вы включаете Cloud Build API, автоматически создается учетная запись службы, которой для вашего проекта предоставляется роль учетной записи службы Cloud Build. Этой роли достаточно для решения нескольких задач, в том числе:

  • Получение кода из облачного репозитория исходного кода вашего проекта
  • Скачивание файлов из любого сегмента Cloud Storage, принадлежащего вашему проекту
  • Сохранение журналов сборки в Cloud Logging
  • Отправка образов Docker в реестр контейнеров
  • Получение базовых образов из реестра контейнеров

Но эта учетная запись службы по умолчанию не имеет разрешений на определенные действия (в частности, разрешение container.clusters.get не предоставляется по умолчанию). Поэтому вам нужно предоставить его с надлежащей ролью IAM. В вашем случае роль Kubernetes Engine Developer содержит разрешение container.clusters.get, как вы можете видеть в эту страницу.

person llompalles    schedule 15.10.2019