【问题标题】:Cloud Run deployment using image from last revision使用上一个修订版中的映像进行 Cloud Run 部署
【发布时间】:2020-12-24 14:46:16
【问题描述】:

我们需要使用下面的API method将标签部署到多个CLoud Run服务

https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services/replaceService

我们正在寻找可以使用 API 应用 labels 的选项,而无需从 Container Registry 部署任何新映像。我们知道在应用labels 时会有deploymentrevision change,但我们希望在部署期间它不应该从container registry 拉新图像,而是应该使用来自last revision 的图像。 Cloud Run 中的任何配置参数,用于防止在使用 APIgcloud run services update SERVICE --update-labels KEY=VALUE 应用标签时拉取新图像

【问题讨论】:

    标签: google-cloud-platform google-cloud-run google-container-registry


    【解决方案1】:

    Cloud Run(和 Knative,因为行为相同)的原则是修订是不可变的。因此,如果您更改其中的某些内容,则会创建一个新修订版。你不能伪造它!

    因此,解决方案是不要使用图像的最新标签,而是使用它的 SHA。

    # the latest
    gcr.io/PROJECT_ID/myImage
    gcr.io/PROJECT_ID/myImage:latest
    
    # A specific version
    gcr.io/PROJECT_ID/myImage:SHA123465465dfsqfsdf
    

    当然,您必须为此更新 YAML。

    【讨论】:

    • 由于 SHA 编号是随机的,所以如果图像是新创建的,我们如何预测或获取图像的 SHA 代码并将其传递给云运行以创建新修订。可以请教吗?
    • 您可以在同一张图片上定义自己的标签。你可以使用 SHA,你可以使用 v1.0.2,你可以使用你想要的字符串(latest,prod,test,...)。大多数情况下,SHA 是提交 SHA,它被重用于在 git 源代码库和您的构建之间建立链接。智能管理标签由您决定
    • 我有一个场景,我们正在创建云运行服务,它使用图像名称从 GCR 中提取图像。截至目前,在云运行中,我们没有指定它应该查找任何特定的标记图像。现在我们想在 GCR 中有新图像时创建新的云运行版本。由于云运行通过将标签解析为 SHA 代码来工作,所以即使我们创建新镜像,云运行服务也仅在旧镜像上运行。
    • 如果您在 Cloud Run 服务中不指定标签,则使用 LATEST 标签。不要忘记用 LATEST 标记您最近的图像,以便在您重新部署服务时让 Cloud Run 获取它。
    猜你喜欢
    • 2021-12-05
    • 2021-12-20
    • 2023-03-03
    • 2021-04-29
    • 2023-02-09
    • 2021-10-11
    • 2022-10-21
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多