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-a和qsprod-b是qsprod-multi的子目标,只有当两个子目标都成功时,qsprod-multi才被视为成功。
金丝雀与并行部署的结合
金丝雀部署可以与并行部署结合使用。结合使用时,无法直接推进子部署,只能通过控制器部署来推进,这将自动推进所有子部署,防止子部署提前推进。
在结合部署中,只能重试或忽略子部署,而取消部署则只能在控制器级别进行。如果某个子部署失败,但其他子部署仍处于“进行中”状态,整个部署将保持“进行中”状态。
其他云平台的金丝雀部署
金丝雀部署也可以在AWS和Azure中实现。在AWS中,可以使用API Gateway设置金丝雀部署,指定流向新代码的流量比例。在Azure中,可以使用Kubernetes清单任务的金丝雀策略进行金丝雀部署。
更多信息
有关此次发布的更多详细信息,可以参考Google Cloud博客、教程和文档。如有问题或反馈,可以前往Google Cloud社区论坛进行讨论。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。