使用 Google Cloud Run 时如何访问已安装的机密?

Tom*_*ell 6 python google-cloud-platform google-secret-manager

我有两个问题:

  1. 为什么我不能将两个云机密挂载在同一目录中?

    我尝试安装两个秘密,FIREBASE_AUTH_SERVICE_ACCOUNTPURCHASE_VALIDATION_SERVICE_ACCOUNT在目录中:

    flask_app/src/services/firebase/service_accounts/

    但是,当尝试执行此操作时,我收到此错误: spec.template.spec.containers[0].volume_mounts[1].mount_path, Duplicate volume mount paths are forbidden这是为什么?

  2. 如何使用 python 访问已安装的机密?

    我真的不知道如何做到这一点,因为我找不到任何有关如何实际访问秘密本身的文档。这是我唯一发现的东西。我使用 python 只是为了上下文。秘密是否会以 .txt 形式安装,安装路径是存储它的文件夹还是还指定文件名?

gui*_*ere 12

使用 Cloud Run 和 Secret manager,您可以通过 2 种方式加载密钥:

  • 在环境变量中加载秘密,使用--set-secrets=ENV_VAR_NAME=secretName:version
  • 将机密加载到文件中,使用--set-secrets=/path/to/file=secretName:version

因此,你可以一边阅读一边阅读秘密

  • 环境变量(类似os.getenv()
  • 一个文件(类似于fs.open('/path/to/file','r')

所以,你关于目录的第一个问题不清楚。如果您在同一目录的 2 个文件中安装 2 个机密,没问题!

如果它不能解决您的问题,请澄清。

  • 不幸的是,我有一个类似的情况:如果我使用一个秘密,它就会起作用。一旦我添加第二个秘密,它就不再起作用了。非功能示例: --update-secrets=/run/secrets/app1-credentials=serviceaccount-app1:latest,/run/secrets/app2-credentials=serviceaccount-app2:latest (3认同)
  • 我也有两个秘密的相同目录的问题: `--set-secrets=/etc/secrets/pgp_key_password=PGP_KEY_PASSWORD:latest,/etc/secrets/pgp_key=PGP_KEY:latest` 它只接受列表的最后一个。UI 没有修复它。UI 中的“显示命令行”按钮显示了我已经尝试过的相同 CLI 命令,因此没有任何帮助。最后,我尝试使用我的两个秘密通过 UI 执行部署,并遇到此错误:“spec.template.spec.containers[0].volumeMounts[1].mountPath 禁止重复的卷安装路径”给出的示例CLI 文档 我会说这是一个错误。 (3认同)
  • 是的。Cloud Run 似乎不允许将两个机密映射到同一文件夹结构。:( 可能是一个错误?当我尝试通过 Google Cloud GUI 配置机密时,这似乎也有点奇怪...... (2认同)