#node.js #google-kubernetes-engine #google-cloud-pubsub
#node.js #google-kubernetes-engine #google-облако-pubsub
Вопрос:
Я пытаюсь подключиться к PubSub из одного из моих кластеров GKE с помощью клиента nodejs, но получаю проблемы с разрешениями, независимо от учетной записи службы IAM или списка областей OAuth, используемых в конфигурации кластера.
При локальном тестировании все работает нормально. Я пробовал разные вещи, такие как использование той же учетной записи, которую я использовал для успешного подключения к PubSub во время локального тестирования в моем удаленном GKE, использование учетной записи службы с разрешением владельца проекта или настройка областей вручную, но, похоже, ничего не помогает, и я всегда сталкиваюсь с одной и той же ошибкой отказа в разрешении:
Error: 7 PERMISSION_DENIED: User not authorized to perform this action.
at Object.callErrorFromStatus (/node_modules/@grpc/grpc-js/build/src/call.js:31:26)
at Object.onReceiveStatus (/node_modules/@grpc/grpc-js/build/src/client.js:176:52)
at Object.onReceiveStatus (/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:342:141)
at Object.onReceiveStatus (/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:305:181)
at /node_modules/@grpc/grpc-js/build/src/call-stream.js:124:78 at processTicksAndRejections (internal/process/task_queues.js:75:11)
Я совершенно растерян, учитывая, что я могу подключаться к другим моим сервисам (Redis, SQL, BigTable, …) без каких-либо проблем с этим экземпляром GKE.
Любая помощь была бы очень признательна.
Комментарии:
1. Вы следовали этой инструкции cloud.google.com/appengine/docs/flexible/nodejs /… ?
2. Это инструкции по использованию в AppEngine, но у меня возникают проблемы с подключением из GKE, и я не думаю, что должны потребоваться какие-либо дополнительные шаги по настройке, кроме предоставления правильных разрешений кластеру.
Ответ №1:
Проблема была на самом деле с моей стороны. Я переопределял GOOGLE_APPLICATION_CREDENTIALS
переменную env в моем файле YAML, в результате чего библиотеки, которые напрямую использовали эту переменную, использовали неправильный файл учетной записи службы. Кластер по-прежнему будет отображать правильный файл, но в фоновом режиме будет использоваться другой.