Чтобы реализовать конвейер CI от github до gcp, я настроил идентификатор рабочей нагрузки.
SERVICE_ACCOUNT="xyz"
PROJECT_ID="АВС"
Сервисный аккаунт, созданный командой:
gcloud iam service-accounts create "${SERVICE_ACCOUNT}" \
--description = "${SERVICE_ACCOUNT}" \
--display-name = "${SERVICE_ACCOUNT}"
Добавляется PrincipalSet с помощью следующей команды:
gcloud iam service-accounts add-iam-policy-binding "${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--project = "${PROJECT_ID}" \
--role = "roles/iam.workloadIdentityUser" \
--member = "principalSet://iam.googleapis.com/projects/${PROJECT_NUMBER}/locations/global/workloadIdentityPools/${POOL_NAME}/attribute.repository/${ORG_NAME}/${REPOSITORY}"
До этого момента работал нормально.
Но с помощью этой учетной записи я также хочу подготовить инфраструктуру и развернуть приложения.
Поэтому я использовал следующую команду:
gcloud iam service-accounts add-iam-policy-binding "${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--member "serviceAccount:${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role "roles/container.clusterAdmin"
Точно так же еще несколько ролей, которые будут добавлены. Но у меня есть следующая ошибка:
ERROR: (gcloud.iam.service-accounts.add-iam-policy-binding) INVALID_ARGUMENT: Role roles/container.clusterAdmin is not supported for this resource.
Есть отзывы как получить права?
Добавьте политику IAM в проект, а не в учетную запись службы.
gcloud iam projects add-iam-policy-binding "${PROJECT_ID} \
--member "serviceAccount:${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role "roles/container.clusterAdmin"