Cloud Run Secret Reference монтируется как каталог, а не как файл

Cloud Run Secret Reference монтируется как каталог, а не как файл

Нужна помощь с Cloud Run с Secret Manager, нам нужно смонтировать 2 секрета как том (только файл), ниже приведен yaml из Cloud Run.

        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

Вот в чем была ошибка.

Спецификации объема контейнера интерпретируются следующим образом:

  • «mountPath» в spec->image->volumeMounts указывает путь к «родительскому» каталогу.
  • К нему добавляется «path» в spec->volumes->secret->items.

Таким образом, в нашем случае фактический путь стал таким:- /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json/myapp_firebase_token

Проверка монтирования тома в разделе «Ревизии» — это способ проверить реальный путь монтирования, как описано в документации по продукту https://cloud.google.com/run/docs/configuring/secrets#viewing

НТН

Связанный контент