Knative提供了基于流量的灰度发布能力,您可以根据流量百分比灰度发布服务。本文介绍如何在Knative中基于流量灰度发布服务。

前提条件

部署Knative:

  • 如果是ACK集群,关于部署Knative具体操作,请参见部署Knative
  • 如果是ASK集群,关于部署Knative具体操作,请参见开启Knative

步骤一:创建服务

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,选择应用 > Knative
  5. 选择服务管理页签,然后单击页面右上角的创建服务
  6. 设置命名空间服务名称,选择所要使用的镜像和镜像版本等配置信息。
    参数 说明
    命名空间 选择该服务所属的命名空间。
    服务名称 自定义该服务的名称,本例服务名称为helloworld-go
    镜像名称 您可以单击选择镜像,在弹出的对话框中选择所需的镜像并单击确定。您还可以填写私有registry。填写的格式为domainname/namespace/imagename:tag。本例中为registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go
    镜像版本 您可以单击选择镜像版本选择镜像的版本。若不指定,默认为latest。本例中镜像版本为73fbdd56
    访问协议
    支持 HTTPgRPC两种访问协议。
    说明 gRPC是基于HTTP2协议标准设计和ProtoBuf(Protocol Buffers)序列化协议开发的,且支持众多开发语言。与HTTP相比,HTTP2在发送和接收方面更紧凑和高效。
    容器端口

    设置暴露的容器访问端口,端口号必须介于1~65535。

    关于创建服务的其他参数详细信息,请参见参数说明

  7. 单击创建
    创建完成后,您可以在 服务管理页签的服务列表中,看到新创建的服务。
  8. 执行以下命令,访问服务。
    curl -H "<默认域名>" http://<访问网关>
    • 默认域名:本例为“host: helloworld-go.default.example.com”。
    • 访问网关:本例为“39.106.XX.XX”。

    预期输出:

    Hello World!

步骤二:通过创建修订版本灰度发布服务

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,选择应用 > Knative
  5. 创建修订版本。
    1. 选择服务管理页签,然后单击目标服务右侧操作列下的详情
    2. 单击创建修订版本
    3. 基本信息配置向导步骤,单击高级设置,设置最新修订版本的环境变量为TARGET=Knative
      11
    4. 单击下一步
    5. 流量设置配置向导步骤,设置最新修订版本的流量比例为0,单击创建
      说明 所有修订版本的流量比例之和需要等于100。
    6. 创建完成后,选择服务管理页签,可以看到新创建服务版本的详细信息。
    7. 执行以下命令,访问服务。
      说明 由于新版本服务的 流量比例为0,所以访问helloworld-go服务,还是请求到旧版本的服务。
      curl -H "host: helloworld-go.default.example.com" http://39.106.XX.XX

      预期输出:

      Hello World!
  6. 修改流量比例灰度发布服务。
    1. 服务管理页面,单击目标服务右侧操作列下的详情
    2. 单击设置流量比例
    3. 设置流量比例对话框中,将新版本和旧版本的流量比例都设置为50%,然后单击确定
    4. 服务流量比例设置成功后,选择服务管理页签,可以看到新版本和旧版本服务的详细信息。
    5. 执行以下命令,访问服务
      curl -H "host: helloworld-go.default.example.com" http://39.106.XX.XX

      预期输出:

      12

      由于新、旧版本的流量比例各为50%,所以当前访问helloworld-go服务的话,基本是按50%进行流量分配。

      您可以通过调整流量比例继续灰度发布服务,直到新版本服务的流量比例为100%,完成灰度发布服务。在这个过程中,如果发现新版本有问题,您可以随时通过调整流量比例的方式进行回滚操作。