Google Cloud Deploy 新增金丝雀和并行部署支持

Google Cloud发布金丝雀和并行部署支持

Google Cloud已为其部署服务Google Cloud Deploy发布了金丝雀(Canary)和并行部署(Parallel Deployment)支持。这些功能适用于Google Kubernetes Engine(GKE)、Cloud Run和Anthos,并且可以结合使用以实现更高级的部署策略。

金丝雀部署

金丝雀部署允许将流量在旧版本和新版本之间进行分割,以便验证新代码是否按预期运行。通常,新版本只接收一小部分流量。随着验证和测试证明新版本稳定,可以逐渐将更多流量切换到新版本。在Google Cloud Deploy中,可以通过控制台或调用gcloud deploy beta rollouts advance来增加流向新版本的流量比例。

金丝雀部署可以在YAML配置文件中定义,示例如下:

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
  name: my-canary-demo-app-1
description: main application pipeline
serialPipeline:
  stages:
  - targetId: prod
    profiles: []
    strategy:
      canary:
        runtimeConfig:
          kubernetes:
            serviceNetworking:
              service: "my-service"
              deployment: "my-deployment"
        canaryDeployment:
          percentages: [50]
          verify: false

部署创建后,可以在控制台中跟踪其进度。此外,还可以查看阶段和作业状态以及部署日志,以进行故障排除。失败的作业可以重试、终止或忽略,整个金丝雀部署也可以取消或回滚。

并行部署

并行部署可以同时部署多个目标,如果其中一个部署失败,整个部署将失败。这要求所有目标必须成功才能进入下一阶段。在多目标部署中,控制器部署将协调多个子部署,每个子部署在自己的执行环境中运行。

并行部署的YAML配置文件示例如下:

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
  name: my-parallel-demo-app-1
description: main application pipeline
serialPipeline:
  stages:
  - targetId: qsprod-multi
    profiles: []
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
  name: qsprod-multi
description: production clusters
multiTarget:
  targetIds: [qsprod-a, qsprod-b]
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
  name: qsprod-a
description: production cluster 1
gke:
  cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsprod1
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
  name: qsprod-b
description: production cluster 2
gke:
  cluster: projects/PROJECT_ID/locations/us-west1/clusters/quickstart-cluster-qsprod2

在此示例中,qsprod-aqsprod-bqsprod-multi的子目标,只有当两个子目标都成功时,qsprod-multi才被视为成功。

金丝雀与并行部署的结合

金丝雀部署可以与并行部署结合使用。结合使用时,无法直接推进子部署,只能通过控制器部署来推进,这将自动推进所有子部署,防止子部署提前推进。

在结合部署中,只能重试或忽略子部署,而取消部署则只能在控制器级别进行。如果某个子部署失败,但其他子部署仍处于“进行中”状态,整个部署将保持“进行中”状态。

其他云平台的金丝雀部署

金丝雀部署也可以在AWS和Azure中实现。在AWS中,可以使用API Gateway设置金丝雀部署,指定流向新代码的流量比例。在Azure中,可以使用Kubernetes清单任务的金丝雀策略进行金丝雀部署。

更多信息

有关此次发布的更多详细信息,可以参考Google Cloud博客教程文档。如有问题或反馈,可以前往Google Cloud社区论坛进行讨论。

阅读 24
0 条评论