kubernetes 应用程序抛出 DatastoreException、缺少或权限不足。提供的服务密钥文件

kubernetes application throws DatastoreException, Missing or insufficient permissions. Service key file provided

我正在 google kubernetes 引擎上部署 java 应用程序。应用程序正确启动但在尝试请求数据时失败。例外是 "DatastoreException, Missing or insufficient permissions"。我创建了具有 "Owner" 角色的服务帐户,并向 kubernetes 提供了服务帐户密钥。这是我如何应用 kubernetes 部署:

# 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 存在于 pod 中。我打印 Files.exists(System.getEnv("GOOGLE_APPLICATION_CREDENTIALS")) 来记录。我还打印了这个文件的内容 - 它似乎没有损坏。

已解决,原因是 evn 名称不正确 GOOGLE_CLOUD_PROJECT