В Cloudbuild возникли проблемы при запуске Kubelet Cloud Builder. - PullRequest
0 голосов
/ 15 октября 2019

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

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

1 Ответ

1 голос
/ 15 октября 2019

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...