ENV 变量中的 Google Cloud Run 和 JSON

kil*_*anc 1 google-cloud-run

我正在部署一个使用config. NODE_CONFIG被读取并用于取代任何本地配置。这在部署带有机密的服务时非常方便,因为可以从外部注入配置。

当尝试使用 Google Cloud Run 和 CLI 实现此目的时,我收到转义错误。显然 CLI 仅支持字典。

JSON有没有更好的方法通过环境变量传递内容?

gcloud run deploy pr-$PULL_REQUEST \
  --platform=managed \
  --revision-suffix=$revision \
  --region us-central1 \
  --set-env-vars="NODE_ENV=development,NODE_CONFIG='$json'" \
  --allow-unauthenticated \
  --image gcr.io/...
Run Code Online (Sandbox Code Playgroud)

Ahm*_*gle 5

如果您有多个环境变量,并且坚持在gcloudCLI 上列出环境变量(而不是使用 YAML + 使用 编写 Service 对象gcloud alpha run services replace),您可以简单地重复--set-env-vars

gcloud run deploy \
  --set-env-vars="A=B" \
  --set-env-vars="C=D" \
  --image=gcr.io/cloudrun/hello
Run Code Online (Sandbox Code Playgroud)

在这里您可以简单地添加"KEY=$value"周围的引号。

引用值 1) 可以防止参数在$value包含空格的情况下拆分,2) 转义引号,$value 因为您有一个 json 值。


例子

json='{"hello":"world"}'

gcloud run deploy foo \
  --set-env-vars="A=$json" \
  --set-env-vars="C=D" \
  --image=gcr.io/cloudrun/hello
Run Code Online (Sandbox Code Playgroud)

gcloud run services describe [...]输出:

  Env vars:
    A                {"hello":"world"}
    C                D
Run Code Online (Sandbox Code Playgroud)