Cloud Run挂载Secret Manager密钥时JSON文件被识别为目录而非文件的问题求助
Cloud Run挂载Secret Manager密钥时JSON文件被识别为目录而非文件的问题求助
大家好,我最近在使用Cloud Run搭配Secret Manager时遇到了一个棘手的问题,想请各位帮忙看看。
我们的需求是将两个Secret Manager中的密钥以仅文件的方式挂载为卷。下面是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的惯例,如果主机路径对应的文件不存在,挂载时会被创建成目录,但在Cloud Run的场景下,我们完全没法控制主机端的路径或文件状态,所以我怀疑这会不会是Cloud Run的一个Bug?
另外,我们已经在本地Docker容器中测试了相同的卷挂载逻辑,一切都正常运行,所以可以确定不是我们的应用代码出了问题。
如果有朋友遇到过类似的问题,或者有相关的排查思路,麻烦指点一下,非常感谢!
备注:内容来源于stack exchange,提问作者Ravi
相关产品推荐
相关产品推荐

