0
Google kubernetes 엔진에 Java 응용 프로그램을 배포하고 있습니다. 응용 프로그램이 올바르게 시작되지만 데이터를 요청할 때 실패합니다. 예외는 "DatastoreException, 누락 또는 불충분 한 권한"입니다. "Owner"역할을 가진 서비스 계정을 만들고 kubernetes에 서비스 계정 키를 제공했습니다. 여기에 내가는 Kubernetes 배포를 적용하는 방법 :kubernetes 응용 프로그램이 DatastoreException을 throw합니다. 사용 권한이 없거나 충분하지 않습니다. 서비스 키 파일 제공
여기# delete old secret
kubectl delete secret google-key --ignore-not-found
# file with key
kubectl create secret generic google-key --from-file=key.json
kubectl apply -f prod-kubernetes.yml
배포 설정은 다음과 같습니다가 작동하지 않는 이유
apiVersion: v1
kind: Service
metadata:
annotations:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
name: user
labels:
app: user
spec:
type: NodePort
ports:
- port: 8000
name: user
targetPort: 8000
nodePort: 32756
selector:
app: user
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: userdeployment
spec:
replicas: 1
template:
metadata:
labels:
app: user
spec:
volumes:
- name: google-cloud-key
secret:
secretName: google-key
containers:
- name: usercontainer
image: gcr.io/proj/user:v1
imagePullPolicy: Always
volumeMounts:
- name: google-cloud-key
mountPath: /var/secrets/google
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /var/secrets/google/key.json
ports:
- containerPort: 8000
내가 궁금해? 이전 배치에서이 구성을 사용했고 성공했습니다. UPD : 포드에
/var/secrets/google/key.json
이 있는지 확인했습니다. Files.exists (System.getEnv ("GOOGLE_APPLICATION_CREDENTIALS"))를 인쇄하여 로깅합니다. 또한이 파일의 내용을 인쇄합니다. 손상되지 않은 것 같습니다.