0

私はGoogleのkubernetesエンジンでJavaアプリケーションを展開しています。アプリケーションは正しく開始しますが、データを要求しようとすると失敗します。例外は "DatastoreException、MissingまたはPermissions"です。私は "Owner"ロールを持つサービスアカウントを作成し、kubernetesにサービスアカウントキーを提供しました。ここで私はkubernetes展開を適用する方法である:ここではkubernetesアプリケーションがDatastoreExceptionをスローしました。サービスキーファイルを提供

# 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"))を出力してログに記録します。私もこのファイルの内容を印刷します - それは壊れていないようです。

答えて

0

解決済み、理由が間違っています。GOOGLE_CLOUD_PROJECT

関連する問題