【问题标题】:Deploy new container revision to Cloud Run without changing Terraform在不更改 Terraform 的情况下将新的容器修订版部署到 Cloud Run
【发布时间】:2022-10-21 10:42:50
【问题描述】:

我正在为一个涉及 Cloud Run 的 GCP 项目设置 CI&CD 环境。虽然通过 Terraform 设置一切都非常简单,但我不知道如何在代码更改时更新环境。

documentation 说:

  1. 更改配置文件。

    但这会将应用程序部署与 terraform 配置结合起来,后者应该只负责基础设施部署。

    理想情况下,我使用 terraform 来配置基础设施,并使用另一个 CI 步骤来构建和部署容器。

    这里有最佳实践吗?

    相关来源:1

【问题讨论】:

  • 在这种情况下,您的 Terraform 只会执行更新操作来修改环境变量。如果您的意思是“容器”,那么不需要另一个构建和部署。如果您的意思是“图像”,那么对其环境的更新将需要新的构建。不过,您可能需要使用无服务器来最有效地执行此操作。
  • @MattSchuchard 谢谢,但我不确定我是否完全理解。我是“无服务器”,我的目标是在代码更改时更新实际图像(例如合并到master 分支)。
  • 但这意味着 Terraform 将负责应用程序的部署,这是不可取的。
  • 我最终将 Cloud Run 服务创建(在 Terraform 中)和部署到两个不同的工作流中分离。关键组件是让 terraform 忽略实际部署的图像,这是我使用 ignore_changes = [template[0].spec[0].containers[0].image] 实现的
  • @galah92 我建议您将此评论添加为您问题的答案并自己接受。这对其他人有帮助:)

标签: google-cloud-platform terraform google-cloud-run terraform-provider-gcp


【解决方案1】:

我最终将 Cloud Run 服务创建(仍然在 Terraform 中完成)和部署到两个不同的工作流中分离出来。

关键组件是让 terraform 忽略实际部署的镜像,这样当代码部署工作流完成时,terraform 就不会抱怨 Cloud Run 镜像与其管理的镜像不同。我通过在google_cloud_run_service 资源上设置ignore_changes = [template[0].spec[0].containers[0].image] 来实现这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 2020-12-24
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多