【问题标题】:Passing a JSON file as environment variable in gcloud在 gcloud 中将 JSON 文件作为环境变量传递
【发布时间】:2020-04-11 07:09:10
【问题描述】:

我正在尝试将秘密传递给 Cloud Run 运行命令。秘密是一个 json 文件。我想将它作为环境变量传递。

它在 docker 中非常有用:

docker run -it -e "SECRET_ENV=$(<path/secretFile.json)" -p 8080:8080 my_image 

当我在 gcloud 上使用相同的方法时,我收到一个错误,告诉我它正在尝试运行 json 文件的每一行:

gcloud run deploy --image gcr.io/account/project --update-env-vars "SECRET_JSON=$(<path/secretFile.json)"

干杯

【问题讨论】:

  • 我从未见过 $(filename) 作为将文件内容输入命令行的一种方式。我总是看到 $(cat filename) ...你能仔细检查一下你正在编码 $(filename)。我的想法是应该尝试执行文件名中的所有命令,输出变成变量替换。
  • 用 cat 尝试过,但结果相同,感谢您的尝试 :) 而且它 100% 在 docker 命令中工作,在我的开发过程中一直在使用它。感谢您的尝试
  • 哇!! ...我刚刚意识到扩展开始了: $(
  • 当从 sh 文件中使用 -x 运行时,我得到: dict arg 语法错误:
  • 我们可能需要查看“在”secretFile.json 中的内容。我希望有一种简单的方法可以在 StackOverflow 中进行实时聊天......我很想在你工作时看着你的肩膀:-(

标签: google-cloud-platform environment-variables gcloud google-cloud-run


【解决方案1】:

目前gcloud run deploy 不支持通过 json 文件设置环境变量。有关 Cloud Run 环境变量的更多信息,请参阅here.

您可能需要提交Feature Request 以进行此改进。

【讨论】:

  • 这个想法不是通过JSON设置环境变量,而是将环境变量设置为json
  • 你是对的。由于您已经找到了一种解决方法,(仅提及)目前您可以使用 Berglas and Cloud KMS 在 Google Cloud Platform 中管理机密。
【解决方案2】:

感谢@Kolban 与我一起解决这个问题。

感谢@tzovourn 对berglas secret manager 的建议

GCP gcloud 命令似乎存在错误和/或不支持 JSON。

我最后使用的解决方案是在将 json 设置为环境变量之前对 json 进行 base 64 编码。现在 docker 和 gcloud 命令采用相同的数据和格式。

【讨论】:

  • 所有不支持的东西。除了这些天谁使用 JSON 进行信息传输。
猜你喜欢
  • 2017-07-15
  • 2018-12-02
  • 2019-06-30
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多