Приложению 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/authentic ... age":"Your default credentials were not found. To set up Application Default Credentials for your environment, see https://cloud.google.com/docs/authentic ... StackTrace":[{"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/compute ... ault/token -H "Metadata-Flavor: Google"

И я дважды проверил, что /var/run/secrets/kubernetes.io/serviceaccount/token существует в модуле. Я также могу успешно запускать в модуле такие команды, как список сегментов хранилища gcloud, список экземпляров gcloud sql, список наборов данных gcloud Alpha bq.
Вот как выглядит мой файл Deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-app
name: my-app
namespace: dataservice
spec:
progressDeadlineSeconds: 600
replicas: 2
revisionHistoryLimit: 10
selector:
matchLabels:
app: my-app
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
annotations:
timestamp: "2025-01-01T00:00:00Z"
labels:
app: my-app
spec:
serviceAccountName: service-account-experimental
nodeSelector:
iam.gke.io/gke-metadata-server-enabled: "true"
initContainers:
- name: init
image: gcr.io/google.com/cloudsdktool/cloud-sdk:alpine
command:
- sh
- -c
- |
echo "Initializing configuration";
cp /keys/app/config.properties /etc/my-app/config.properties;
volumeMounts:
- mountPath: /keys/app/
name: my-app
readOnly: true
- name: key-storage
mountPath: /etc/app/
containers:
- image: my-image:latest
name: dataservice
livenessProbe:
httpGet:
path: /health/live
port: 8080
initialDelaySeconds: 60
periodSeconds: 10
failureThreshold: 2
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /health/ready
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
resources:
requests:
cpu: "1"
memory: "1Gi"
limits:
cpu: "2"
memory: "2Gi"
env:
- name: JAVA_OPTS
value: "-Xmx512m -Xms512m"
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /etc/secrets
name: secrets
readOnly: true
- mountPath: /etc/config
name: config
readOnly: true
dnsPolicy: ClusterFirst
restartPolicy: Always
terminationGracePeriodSeconds: 30
volumes:
- name: secrets
secret:
secretName: my-secrets
- name: config
configMap:
name: my-config
- name: app-config
secret:
secretName: app-config
- name: key-storage
emptyDir: {}

Вот файл serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: service-account-experimental
namespace: dataservice
annotations:
iam.gke.io/gcp-service-account: gservice-account-test@my_project_id.iam.gserviceaccount.com


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

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

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

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

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

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