在使用灰度发布的手动发布方式的时候,您需要创建一个Ingree、Service和Deployment结构的应用。目前灰度发布只支持基于Deployment和Ingress的灰度发布。本文举例介绍使用手动发布方式的灰度发布流程。

步骤一:创建测试应用

本文使用以下YAML文件模板作为测试示例。该示例使用Deployment部署一个Web应用,并通过路由(Ingress)向外暴露服务(Service)。有关如何使用YAML模板创建应用的具体步骤,请参见通过编排模板创建Linux应用

apiVersion: apps/v1
kind: Deployment
metadata:
  name: podinfo
  labels:
    app: podinfo
spec:
  replicas: 4
  minReadySeconds: 5
  revisionHistoryLimit: 5
  progressDeadlineSeconds: 60
  strategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate
  selector:
    matchLabels:
      app: podinfo
  template:
    metadata:
      labels:
        app: podinfo
    spec:
      containers:
      - name: podinfod
        image: registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:green
        imagePullPolicy: IfNotPresent
        ports:
          - name: http
            containerPort: 8080
            protocol: TCP
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 5
          timeoutSeconds: 5

---

apiVersion: v1
kind: Service
metadata:
  name: my-podinfo-svc
spec:
  selector:
    app: podinfo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

---

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: podinfo
  labels:
    app: podinfo
spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - backend:
              serviceName: my-podinfo-svc
              servicePort: 80

步骤二:创建灰度发布

创建灰度发布时,设置上述创建的Deployment、Service、Ingress,然后设置发布方式为手动发布。有关创建灰度发布的具体操作,请参见创建灰度发布

完成创建灰度发布后,单击创建的灰度发布名称,发布状态显示初始化完毕。如果显示初始化中的话,可以多次单击刷新灰度详情

步骤三:执行灰度发布

初始化完毕后,就可以进行灰度发布。开始灰度发布前,您需要先更新一下应用。本文示例以更新镜像tag为例,修改镜像tag中的green为blue。先发布两个Pod为新版本,同时将新版本的灰度流量设置为10%。

  1. 创建灰度发布
  2. 单击目标灰度发布名称,然后在详情页面,单击发布对象名称后面的编辑图标。
  3. 查看YAML面板中,将green修改为blue,然后单击确定
    YAML
  4. 在灰度发布基本信息区域,编辑当前权重[0-100]10新版容器组副本数[0-4]2
    可以看到,新版本的Pod已经创建。这时候访问应用观察流量情况,可以看到流量中绿色占比90%,蓝色占比10%。容器Podnew流量图
  5. 根据业务的实际情况,不断调整新旧版容器数量,将旧版Pod缩容,新版Pod扩容,然后将更多的流量导入到新版本的Pod中。当测试完毕且没有问题时,单击页面右上方的确认发布,完成此次发布。
    发布成功后,可以查看流量情况。当业务的所有流量都转向了新的Pod时,就完成了一次应用的发布。您可以单击页面右上方的完成,结束此次发布动作。

查看历史记录

每次发布完成后,您可以查看发布的记录:
  • 灰度发布页面的历史记录区域,您可以查看所有创建的灰度发布的发布记录。
  • 在每个创建的灰度发布详情页面下方的发布日志区域,查看发布的过程。