"недостаточно аутентификации" из 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 и привязка ее к вашему кластеру или рабочей нагрузке также обойдут эту ошибку.