Приложению Java не удается найти ADC, когда в кластере GKE включена идентификация рабочей нагрузкиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Приложению Java не удается найти ADC, когда в кластере GKE включена идентификация рабочей нагрузки

Сообщение Anonymous »

Я пытаюсь перенести службу, работающую на GKE, на использование Workload Identity для аутентификации и доступа к ресурсам GCP. До сих пор служба использовала ключи SA JSON, на которые указывает переменная env GOOGLE_APPLICATION_CREDENTIALS.
Приложение выдает эту ошибку при попытке запустить LOG.info("Учетные данные по умолчанию: " + ServiceAccountCredentials.getApplicationDefault());

Код: Выделить всё

"Your default credentials were not found. To set up Application Default Credentials for your environment, see https://cloud.google.com/docs/authentication/external/set-up-adc.","message":"Your default credentials were not found. To set up Application Default Credentials for your environment, see https://cloud.google.com/docs/authentication/external/set-up-adc.","name":"java.io.IOException","extendedStackTrace":[{"class":"com.google.auth.oauth2.DefaultCredentialsProvider","method":"getDefaultCredentials","file":"DefaultCredentialsProvider.java","line":127,"exact":false,"location":"com.google.auth.google-auth-library-oauth2-http-1.22.0.jar","version":"1.22.0"},{"class":"com.google.auth.oauth2.GoogleCredentials","method":"getApplicationDefault","file":"GoogleCredentials.java","line":152,"exact":false,"location":"com.google.auth.google-auth-library-oauth2-http-1.22.0.jar","version":"1.22.0"},
Я сталкиваюсь с той же ошибкой, когда приложение пытается установить соединение с Cloud sql с помощью HikariCP.
Я выполнил шаги, описанные в этом документе. Google Doc и настройте KSA и GSA, привяжите и аннотируйте их, как описано. GSA назначена роль редактора.
В контейнере, на котором работает мой сервис, я могу видеть соответствующий GSA в качестве активной учетной записи при запуске списка аутентификации gcloud. Я также могу успешно выполнить следующие команды Curl в контейнере.

Код: Выделить всё

curl http://metadata.google.internal/computeMetadata/v1/ -H "Metadata-Flavor: Google"

Код: Выделить всё

curl http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token -H "Metadata-Flavor: Google"
И я дважды проверил, что /var/run/secrets/kubernetes.io/serviceaccount/token существует в модуле. Я также могу успешно запускать в модуле такие команды, как список сегментов хранилища gcloud, список экземпляров gcloud sql, список наборов данных gcloud Alpha bq.

Подробнее здесь: https://stackoverflow.com/questions/793 ... on-gke-clu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»