Terraform GCP:无需用户停机即可更新云 运行 服务
Terraform GCP: Updating Cloud Run service without user downtime
我可以更新现有资源“google_cloud_run_service”的 Docker 图像而不破坏并重新创建服务吗?当我需要更新 Docker 图像时,如何避免我的云 运行 服务的用户停机?
我已经创建了几个 Terraform (TF) 文件用于我的 CircleCI 构建。在我的 TF 文件中,我正在构建一个 REST API、测试、构建一个 Docker 图像,并使用 TF 将该图像部署到 Google Cloud Provider 到 运行 作为云 运行 服务。为了让这个 TF apply 起作用,我需要先销毁 Cloud 运行 资源,然后使用上一步中构建的最新 Docker 映像重新创建它。我可以让它在 dev/test 环境中工作,但我的方法在生产环境中不起作用,因为会有停机时间。
我正在寻求有关更新我的资源而不让用户遇到服务停机的方法的建议。
您可能想查看实施金丝雀部署策略。这个想法是您创建两个服务并从一个服务提升到另一个。它实际上涉及使用您的新映像创建新服务,并在拆除旧服务之前逐渐减少对其的流量。
通过这样做并观察新服务的故障率,您可以在新服务有机会损害客户体验之前对它充满信心。
这里有一些可能有用的资源:
CloudRun Automated Canary Testing
我可以更新现有资源“google_cloud_run_service”的 Docker 图像而不破坏并重新创建服务吗?当我需要更新 Docker 图像时,如何避免我的云 运行 服务的用户停机?
我已经创建了几个 Terraform (TF) 文件用于我的 CircleCI 构建。在我的 TF 文件中,我正在构建一个 REST API、测试、构建一个 Docker 图像,并使用 TF 将该图像部署到 Google Cloud Provider 到 运行 作为云 运行 服务。为了让这个 TF apply 起作用,我需要先销毁 Cloud 运行 资源,然后使用上一步中构建的最新 Docker 映像重新创建它。我可以让它在 dev/test 环境中工作,但我的方法在生产环境中不起作用,因为会有停机时间。
我正在寻求有关更新我的资源而不让用户遇到服务停机的方法的建议。
您可能想查看实施金丝雀部署策略。这个想法是您创建两个服务并从一个服务提升到另一个。它实际上涉及使用您的新映像创建新服务,并在拆除旧服务之前逐渐减少对其的流量。
通过这样做并观察新服务的故障率,您可以在新服务有机会损害客户体验之前对它充满信心。
这里有一些可能有用的资源:
CloudRun Automated Canary Testing