Canary Deployments

金丝雀部署(Canary Deployments)

另一个需要多标签的场景是用来区分同一组件的不同版本或者不同配置的多个部署。
常见的做法是部署一个使用金丝雀发布来部署新应用版本
(在 Pod 模板中通过镜像标签指定),保持新旧版本应用同时运行。
这样,新版本在完全发布之前也可以接收实时的生产流量。

如,你可以使用 track 标签来区分不同的版本。

主要稳定的发行版将有一个 track 标签,其值为 stable

1
2
3
4
5
6
7
8
9
name: frontend
replicas: 3
...
labels:
app: guestbook
tier: frontend
track: stable
...
image: gb-frontend:v3

(即 canary),以便两组 Pod 不会重叠:

1
2
3
4
5
6
7
8
9
name: frontend-canary
replicas: 1
...
labels:
app: guestbook
tier: frontend
track: canary
...
image: gb-frontend:v4

以便流量可以转发到两个应用:

1
2
3
selector:
app: guestbook
tier: frontend

你可以调整 stablecanary 版本的副本数量,以确定每个版本将接收
实时生产流量的比例(在本例中为 3:1)。
一旦有信心,你就可以将新版本应用的 track 标签的值从
canary 替换为 stable,并且将老版本应用删除。

想要了解更具体的示例,请查看
Ghost 部署教程