Cloud Run シークレット参照がファイルではなくディレクトリとしてマウントされる

Cloud Run シークレット参照がファイルではなくディレクトリとしてマウントされる

Secret Manager を使用した Cloud Run に関するサポートが必要です。2 つのシークレットをボリューム (ファイルのみ) としてマウントする必要があります。以下は Cloud Run からの yaml です。

        volumeMounts:
        - name: secret-2f1d5ec9-d681-4b0f-8a77-204c5f853330
          readOnly: true
          mountPath: /root/key/mtls/client_auth.p12
        - name: secret-29c1417a-d9fe-4c37-8cb0-562c97f3c827
          readOnly: true
          mountPath: /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json
      volumes:
      - name: secret-2f1d5ec9-d681-4b0f-8a77-204c5f853330
        secret:
          secretName: myapp_mtls_key
          items:
          - key: latest
            path: myapp_mtls_key
      - name: secret-29c1417a-d9fe-4c37-8cb0-562c97f3c827
        secret:
          secretName: myapp_firebase_token
          items:
          - key: latest
            path: myapp_firebase_token

mtls シークレット (p12 ファイル) はファイルとして適切にマウントされますが、firebase シークレット (json ファイル) はディレクトリとしてマウントされます。

java.io.FileNotFoundException: /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json (Is a directory)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
    at com.myapp.gcp.GCPInit.init(GCPInit.java:39)

docker の規則に基づいて、ホスト上でファイルが見つからない場合はディレクトリとしてマウントされますが、この場合、ホスト パスまたはファイルの可用性を制御できないため、バグである可能性がありますか?

ボリュームマウントを使用して Docker コンテナでデプロイメントをテストすると、すべて正常に動作するため、アプリケーションに問題がないことが確実です。

この問題に関するご指導をいただければ幸いです。

ありがとう

答え1

何が間違っていたのか、ここにあります。

コンテナのボリューム仕様は次のように解釈されます:-

  • spec->image->volumeMounts の下の 'mountPath' は、'親' ディレクトリ パスを指定します。
  • spec->volumes->secret->items の下の 'path' が追加されます。

したがって、私たちの場合、実際のパスは次のようになります:- /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json/myapp_firebase_token

リビジョンでボリューム マウントを確認することは、製品ドキュメント https://cloud.google.com/run/docs/configuring/secrets#viewing に記載されているように、実際のマウント パスを確認する方法です。

HTH

関連情報