"недостаточно аутентификации" из Google API при звонке из кластера K8S

Я пытаюсь сообщить об ошибках Node.js в Google Error Reporting из одного из наших развертываний kubernetes, работающих в кластере GCP/GKE с RBAC. (т.е. разрешения, определенные в учетной записи службы, связанной с кластером)

const googleCloud = require('@google-cloud/error-reporting');
const googleCloudErrorReporting = new googleCloud.ErrorReporting();
googleCloudErrorReporting.report('[test] dummy error message');

Это работает только в определенных средах:

  • он работает при запуске на моем ноутбуке, используя служебную учетную запись с ролью "Редактор ошибок"
  • он работает при работе в моем кластере как задание K8S, после добавления роли "Редактор ошибок" в учетную запись службы этого кластера
  • это вызывает следующую ошибку при вызове из моего приложения Node.js, запущенного в одном из моих развертываний K8S:

ОШИБКА:@google-cloud/error-report: Обнаружена ошибка при попытке передать ошибку в API отчетов об ошибках Stackdriver.

Ошибка: у запроса недостаточно областей проверки подлинности.

Такое ощущение, что задание получило изменения разрешений учетной записи службы кластера, а мое развертывание - нет.

Я попытался воссоздать развертывание, чтобы обновить его токен аутентификации, но ошибка все еще происходит...

Есть идеи?

ОБНОВЛЕНИЕ: я закончил следовать предложению Жереми Жиро: создать служебную учетную запись и привязать ее к моему развертыванию. Оно работает!

1 ответ

Решение

Сообщение об ошибке связано с областями доступа, установленными в кластере при использовании учетной записи службы по умолчанию. Вы должны разрешить доступ к соответствующему API.

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

Другие вопросы по тегам