gpt4 book ai didi

google-cloud-run - 谷歌云运行 : Can a service know its own url?

转载 作者:行者123 更新时间:2023-12-05 02:02:43 27 4
gpt4 key购买 nike

我想知道部署在 cloud run 上的容器是否可以通过某种方式获取自己的服务 url 还是不可能?

我想知道这一点,因为我想要一个为自己创建谷歌云任务的云运行 worker 。

如果可以,怎么做到的?

最佳答案

使用namespaces.services.get获取云运行服务信息,这个api需要的一些信息

  1. 服务名称

    云跑提供了default environment variable K_SERVICE

  2. 项目编号

  3. 地区

  4. 访问 token

项目 ID、区域和访问 token 可以从 metadata server 中检索

PROJECT_ID=$(curl "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google")
REGION=$(curl "http://metadata.google.internal/computeMetadata/v1/instance/region" -H "Metadata-Flavor: Google" | sed "s/.*\///")
TOKEN=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google" | jq -r '.access_token')

然后你可以使用namespaces.services.get获取json中的云运行服务信息,使用jq提取url,export环境变量供应用使用

export PUCLIC_URL=$(curl -s "https://${REGION}-run.googleapis.com/apis/serving.knative.dev/v1/namespaces/${PROJECT_ID}/services/${K_SERVICE}" -H "Authorization: Bearer ${TOKEN}" | jq -r '.status.url')

curljq 可能需要安装,对于 alpine:apk add --no-cache curl jq

Cloud Run 服务帐号需要 run.services.get 权限才能调用 namespaces.services.get

关于google-cloud-run - 谷歌云运行 : Can a service know its own url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65628822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com