Ошибка установки идентификатора рабочей нагрузки GKE / Cloud IAM 403 - PullRequest
2 голосов
/ 22 января 2020

Мы настроили прокси-сервер Cloud SQL в качестве контейнера вспомогательной машины для одного из наших приложений Java / Tomcat.

Вот как мы настраиваем удостоверение рабочей нагрузки, чтобы наше приложение могло подключаться к облаку SQL через облако sql прокси:

  1. Создал учетную запись службы IAM в облаке и дал ее SQL Разрешение клиента:

  2. Привязка политики установки выглядит следующим образом:

          gcloud iam service-accounts add-iam-policy-binding \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:[PROJECT_ID].svc.id.goog[default/default]" \
              [GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com ``` 
    
  3. Добавлена ​​аннотация к учетной записи службы GKE:

    kubectl annotate serviceaccount \
      --namespace [K8S_NAMESPACE] \
      [KSA_NAME] \
      iam.gke.io/gcp-service-account=[GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com
Но когда мы проверяем это, используя:
    kubectl run --rm -it \
      --generator=run-pod/v1 \
      --image google/cloud-sdk:slim \
      --serviceaccount [KSA_NAME] \
      --namespace [K8S_NAMESPACE] \
      workload-identity-test

Несмотря на то, что все выполняется правильно, как объяснено на этой странице все равно приводит к:

Error 403: The client is not authorized to make this request., notAuthorized

1 Ответ

1 голос
/ 22 января 2020

Оказывается, в Google Cloud IAM сбой , который, по-видимому, влияет на учетные записи служб.

  1. Удалите существующую учетную запись службы Cloud IAM, созданную на шаге 1, и связанную роль с ним.
  2. Создайте заново учетную запись службы (с теми же разрешениями для экзамена)

, что должно устранить проблему. Конечно, вам придется повторить шаги 2 и 3, чтобы завершить настройку, но это работает.

...