Привязка GCP IAM для пула узлов GKE с использованием идентификатора рабочей нагрузки

#kubernetes #google-cloud-platform #binding #google-cloud-iam #workload-identity

#kubernetes #google-облачная платформа #привязка #google-cloud-iam #рабочая нагрузка- идентификатор

Вопрос:

Я планирую задания с помощью Cloud Composer, выполняющего задачи в Kubernetes. Я настроил новый пул узлов в том же GKE, что и composer, и использую его для выполнения задач Kubernetes. В этом пуле узлов я использую учетную запись службы по умолчанию, но привязываю учетную запись к той же учетной записи службы, что и пул узлов Composer, используя привязку политики IAM и включив идентификатор рабочей нагрузки.

Однако из ошибок я вижу, что учетной записи службы kubernetes не хватает разрешений для некоторых вещей, к которым имеет доступ учетная запись службы composer. Что не имеет смысла, поскольку учетная запись службы kubernetes имеет привязку политики IAM к учетной записи службы composer, поэтому у них должны быть точно такие же разрешения. Но по какой-то причине это неверно. Любые советы о том, где искать, очень ценятся…

Комментарии:

1. Вы используете предопределенные роли или пользовательские роли? Вы как-то изменили разрешения по умолчанию в GCP? Не могли бы вы поделиться своей точной ошибкой?

2. При привязке ролей вы предоставляете определенные SA / предопределенные роли, которые можно найти для Cloud Composer и Kubernetes engine . Каждая роль имеет разные разрешения. Какие роли вы использовали и какой роли вам не хватает?

3. Просмотрев журналы учетных записей служб, я заметил, что, хотя идентификатор рабочей нагрузки был включен в GKE, он не был включен в пуле узлов, поэтому узлы в этом пуле по умолчанию использовали неправильную учетную запись службы…

4. Короче говоря, вам просто нужно было включить Workload Identity пулы узлов, как указано в этом документе ? Если да, не могли бы вы написать ответ для людей с подобной проблемой?

5. У вас все еще есть эта проблема или включение идентификатора рабочей нагрузки решило вашу проблему?

Ответ №1:

Решением было включение идентификатора рабочей нагрузки в пуле узлов. При использовании terraform решение выглядит следующим образом:

 resource "google_container_node_pool" "google_container_node_pool_name" {

    workload_metadata_config {
       mode = "GKE_METADATA"
}