Облако Google: недостаточно областей аутентификации - PullRequest
0 голосов
/ 10 мая 2018

У меня проблемы с отправкой запросов в мое весеннее загрузочное приложение, развернутое в кластере Google Cloud Kubernetes Мое приложение получает фотографию и отправляет ее в API Google Vision. Я использую предоставленную клиентскую библиотеку (https://cloud.google.com/vision/docs/libraries#client-libraries-install-java), как описано здесь https://cloud.google.com/vision/docs/auth:

Если вы используете клиентскую библиотеку для вызова API Vision, используйте учетные данные приложения по умолчанию (ADC). Службы, использующие ADC, ищут учетные данные в переменной среды GOOGLE_APPLICATION_CREDENTIALS. Если вы специально не хотите, чтобы ADC использовал другие учетные данные (например, учетные данные пользователя), мы рекомендуем установить эту переменную среды так, чтобы она указывала на файл ключа учетной записи службы.

На моей локальной машине все работает нормально, у меня есть док-контейнер с env. varialbe GOOGLE_APPLICATION_CREDENTIALS, указывающий на файл ключа учетной записи моей службы.

У меня нет этой переменной в моем кластере. Вот ответ, который я получаю от своего приложения в кластере Kubernetes:

{
    "timestamp": "2018-05-10T14:07:27.652+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "io.grpc.StatusRuntimeException: PERMISSION_DENIED: Request had insufficient authentication scopes.",
    "path": "/image"
}

Что я делаю не так? Спасибо заранее!

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Поможет ли это, если вы добавите переменную среды GOOGLE_APPLICATION_CREDENTIALS в конфигурацию вашего развертывания / модуля / контейнера?

Вот пример настройки переменных среды, описанный в документации Kubernetes :

apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
  labels:
    purpose: demonstrate-envars
spec:
  containers:
  - name: envar-demo-container
    image: gcr.io/google-samples/node-hello:1.0
    env:
    - name: DEMO_GREETING
      value: "Hello from the environment"
    - name: DEMO_FAREWELL
      value: "Such a sweet sorrow"
0 голосов
/ 11 мая 2018

Мне также пришлось указать переменную среды GOOGLE_APPLICATION_CREDENTIALS в моей настройке GKE, это шаги, которые я выполнил благодаря Как настроить GOOGLE_APPLICATION_CREDENTIALS в GKE, работающем через Kubernetes :

1.Создайте секрет (в моем случае в моем шаге развертывания на Gitlab):

kubectl create secret generic google-application-credentials --from-file=./application-credentials.json

2.Настройте громкость:

...
volumes:
- name: google-application-credentials-volume
  secret:
    secretName: google-application-credentials
    items:
    - key: application-credentials.json # default name created by the create secret from-file command
      path: application-credentials.json

3.Настройте монтирование громкости:

spec:
  containers:
  - name: my-service
    volumeMounts:
    - name: google-application-credentials-volume
      mountPath: /etc/gcp
      readOnly: true

4.Установите переменную среды:

spec:
  containers:
  - name: my-service
    env:
    - name: GOOGLE_APPLICATION_CREDENTIALS
      value: /etc/gcp/application-credentials.json
0 голосов
/ 10 мая 2018

Это означает, что вы пытаетесь получить доступ к службе, которая не включена или аутентифицирована для использования. Вы уверены, что включили доступ к Google vision?

Вы можете проверить / включить API из Dashboard на https://console.cloud.google.com/apis/dashboard или перейти к API & Services из Меню

...