PubSub из GKE: PERMISSION_DENIED

#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, в результате чего библиотеки, которые напрямую использовали эту переменную, использовали неправильный файл учетной записи службы. Кластер по-прежнему будет отображать правильный файл, но в фоновом режиме будет использоваться другой.