五、灰度发布使用指南

通过灰度发布功能,可以实现:

  1. 对于一些对程序有比较大影响的配置,可以先在一个或者多个实例生效,观察一段时间没问题后再全量发布配置。
  2. 对于一些需要调优的配置参数,可以通过灰度发布功能来实现A/B测试。可以在不同的机器上应用不同的配置,不断调整、测评一段时间后找出较优的配置再全量发布配置。

下面将结合一个实际例子来描述如何使用灰度发布功能。

5.1 场景介绍

100004458(apollo-demo)项目有两个客户端:

  1. 10.32.21.19
  2. 10.32.21.22

initial-instance-list

灰度目标:

  • 当前有一个配置timeout=2000,我们希望对10.32.21.22灰度发布timeout=3000,对10.32.21.19仍然是timeout=2000。

initial-config

5.2 创建灰度

首先点击application namespace右上角的创建灰度按钮。

create-gray-release

点击确定后,灰度版本就创建成功了,页面会自动切换到灰度版本Tab。

initial-gray-release-tab

5.3 灰度配置

点击主版本的配置中,timeout配置最右侧的对此配置灰度按钮

initial-gray-release-tab

在弹出框中填入要灰度的值:3000,点击提交。

submit-gray-release-config

gray-release-config-submitted

5.4 配置灰度规则

切换到灰度规则Tab,点击新增规则按钮

new-gray-release-rule

在弹出框中灰度的IP下拉框会默认展示当前使用配置的机器列表,选择我们要灰度的IP,点击完成。

select-gray-release-ip

gray-release-ip-selected

gray-release-rule-saved

如果下拉框中没找到需要的IP,说明机器还没从Apollo取过配置,可以点击手动输入IP来输入,输入完后点击添加按钮

manual-input-gray-release-ip

manual-input-gray-release-ip-2

注:对于公共Namespace的灰度规则,需要先指定要灰度的appId,然后再选择IP。

5.5 灰度发布

配置规则已经生效,不过灰度配置还没有发布。切换到配置Tab。

再次检查灰度的配置部分,如果没有问题,点击灰度发布

prepare-to-do-gray-release

在弹出框中可以看到主版本的值是2000,灰度版本即将发布的值是3000。填入其它信息后,点击发布。

gray-release-confirm-dialog

发布后,切换到灰度实例列表Tab,就能看到10.32.21.22已经使用了灰度发布的值。

gray-release-instance-list

切换到主版本实例列表,会看到主版本配置只有10.32.21.19在使用了。

master-branch-instance-list

后面可以继续配置的修改或规则的更改。配置的修改需要点击灰度发布后才会生效,规则的修改在规则点击完成后就会实时生效。

5.6 全量发布

如果灰度的配置测试下来比较理想,符合预期,那么就可以操作全量发布

全量发布的效果是:

  1. 灰度版本的配置会合并回主版本,在这个例子中,就是主版本的timeout会被更新成3000
  2. 主版本的配置会自动进行一次发布
  3. 在全量发布页面,可以选择是否保留当前灰度版本,默认为不保留。

prepare-to-full-release

full-release-confirm-dialog

full-release-confirm-dialog-2

我选择了不保留灰度版本,所以发布完的效果就是主版本的配置更新、灰度版本删除。点击主版本的实例列表,可以看到10.32.21.22和10.32.21.19都使用了主版本最新的配置。

master-branch-instance-list-after-full-release

5.7 放弃灰度

如果灰度版本不理想或者不需要了,可以点击放弃灰度

abandon-gray-release

5.8 发布历史

点击主版本的发布历史按钮,可以看到当前namespace的主版本以及灰度版本的发布历史。

view-release-history

view-release-history-detail