使用Google Cloud Run时如何访问已挂载Secret及相关挂载问题
问题1:同一路径下无法挂载两个Cloud Secret的原因
- Cloud Run等云原生运行环境强制要求每个卷挂载路径必须全局唯一,你尝试将两个不同Secret映射到完全相同的路径时,系统无法判断该路径应当对应哪个Secret的内容,因此会触发
spec.template.spec.containers[0].volume_mounts[1].mount_path, Duplicate volume mount paths are forbidden的报错。 - 可行的配置方案:将两个Secret分别挂载到目标目录下的不同文件名即可,例如:
- 将
FIREBASE_AUTH_SERVICE_ACCOUNT挂载到flask_app/src/services/firebase/service_accounts/firebase_auth_sa.json - 将
PURCHASE_VALIDATION_SERVICE_ACCOUNT挂载到flask_app/src/services/firebase/service_accounts/purchase_validation_sa.json
两个挂载路径不重复,同时所有密钥文件都会落在你需要的service_accounts目录下。
- 将
问题2:Python读取已挂载Secret的方法
- 挂载的Secret没有默认的
.txt格式后缀,文件名和格式完全由你配置挂载路径时指定:你填写的挂载路径如果是完整的文件路径,Secret的内容就会直接存储为该路径对应的文件;如果需要将多个Secret放在同一个目录,只需要给每个Secret指定该目录下的不同文件名即可。 - Python读取已挂载Secret和读取本地普通文件逻辑完全一致,示例代码如下:
import json # 替换为你实际配置的Secret挂载路径 firebase_sa_path = "flask_app/src/services/firebase/service_accounts/firebase_auth_sa.json" with open(firebase_sa_path, "r", encoding="utf-8") as f: firebase_service_account = json.load(f)
内容的提问来源于stack exchange,提问作者Tom Bushell
相关产品推荐
相关产品推荐

