3.3 创建自定义流水线
3.3.1 基于源码构建镜像进行灰度发布
ContainerOps通过“灰度发布”组件和“正式发布”组件实现灰度发布,并且提供了 Istio、金丝雀发布、蓝绿发布三种灰度发布策略,如表3-1所示。
表3-1 灰度发布策略
策略名称 描述 特点
Istio 应用服务网格是华为云基于开源Istio推出的 服务网格平台,它深度、无缝对接了华为云 的企业级Kubernetes集群服务云容器引 擎。启用Istio将为您的服务以无侵入的方式 提供灵活的服务治理能力。
镜像部署的CCE集群需要 已启用Istio,才可以使用 Istio灰度发布策略。
第一次使用应用服务网格 进行灰度升级时会断服。
策略名称 描述 特点
本章将以“基于源码构建镜像进行灰度发布”为例介绍ContainerOps进行灰度发布的 方法。
操作步骤
步骤1 登录ContainerOps控制台。
步骤2 在左侧菜单栏选择“流水线”,单击右侧“自定义模板创建”。
● 全局变量:已默认设置了SYS_TIMESTAMP(时间戳)和SYS_INCREMENT(自增 量)全局变量,如需添加新的全局变量,可单击“添加全局变量”。设置的全局 变量通过${变量名}的方式,在流水线的配置、脚本中使用。例如:在此处配置环 境变量名reponame,则在上传软件包时,可以使用${reponame}来获取值。
● 拓扑图:展示当前流水线的拓扑图,单击对应图标,可在下方进行阶段配置。
步骤4 单击拓扑图中的阶段图标,添加阶段,阶段类型为“源代码仓库”,阶段名称可自定 义。
配置源代码仓库信息。
● 代码来源:选择代码来源,您需要先绑定代码源账号,具体操作请参见绑定代码 源账号。
说明
当前版本代码来源支持DevCloud、Gitee、Github、GitLab。
绑定账号后,需要配置以下信息:
– Webhook挂载:选择“自动挂载”或“手动挂载”。若选择自动挂载,则会 在您选择自动构建以后自动将webhook挂载到对应的源码仓库,若选择手动 挂载,则需要您手动复制信息并在对应的源码仓库下创建一个webhook。当 您绑定的账号没有创建webhook权限时,建议您选择手动挂载方式,再由高 权限的用户手动创建webhook。
● 高级选项:添加该阶段的错误处理机制、触发条件和消息通知,实现流水线间的
– 触发条件:支持“webhook”和“内部调用”两种方式。选择webhook,使 用webhook类型的URL触发该阶段,该url已默认生成。选择内部调用,使用 指定频道触发该阶段。
如需为触发条件添加传入参数,可单击“添加传入参数”,设置参数名称,
选择全局变量,该参数的值将传递给选择的全局变量。
触发模式可选择“全部触发视为触发”或“任意一个触发即触发”。
图3-6 触发条件
– 消息通知:支持“webhook”和“内部调用”两种方式。执行结果通知可勾 选“成功时通知”和“异常时通知”。
▪
选择webhook,使用通知URL进行消息通知,支持POST和GET类型,可 添加头域、请求体和参数。图3-7 webhook 消息通知
▪
选择内部调用,使用指定频道进行消息通知。如需为消息通知添加传出 参数,可单击“添加传出参数”,设置参数名称,选择全局变量,选择 的全局变量值将传递给该参数。图3-8 内部调用消息通知
步骤5 单击拓扑图中上一阶段旁的 ,添加阶段,阶段类型为“镜像构建”,阶段名称可 自定义。
配置镜像构建信息。
● 输入资源:支持“代码来源”、“镜像”、“软件包”。
镜像格式为:组织(必选)/镜像仓库(必选)/Tag(必选)。如需添加镜像,可 单击左侧导航栏的“镜像仓库”,前往容器镜像服务上传镜像,上传方法请参见 客户端上传镜像。
软件包格式为:组织(必选)/软件仓库(必选)/软件包(必选)/软件包版本
(必选)/文件(可选)。如需创建软件包,可单击左侧导航栏的“软件中心”,
创建方法请参见软件中心。
● 构建方式:默认为“自定义Dockerfile”。
● 基础镜像:默认为“自定义”。
● Dockerfile:填写Dockerfile路径或在网页填写Dockerfile内容。
说明
Dockerfile路径默认为./Dockerfile,表示当前目录下的文件。填写的Dockerfile路径为相对 路径,输入资源中的代码或软件包将被下载到构建目录,然后在构建目录执行镜像构建。
● 归档资源:选择镜像归档地址,格式为:组织(必选)/镜像仓库(必选)/Tag
(必选)。其中,Tag参数建议通过全局变量的配置和引用来管理版本号,若存在 具体版本号,可选择已有版本号进行管理。
步骤6 单击拓扑图中上一阶段旁的 ,添加阶段,阶段类型为“灰度发布”,阶段名称可 自定义。
配置灰度发布信息。
● 输入资源:单击“添加输入资源”可添加输入资源。镜像格式为:组织(必选)/
镜像仓库(必选)/Tag(必选)。如需添加镜像,可单击左侧导航栏的“镜像仓 库”,前往容器镜像服务上传镜像,上传方法请参见客户端上传镜像。
● 部署工具:选择“云容器引擎CCE”,设置以下参数:
– 集群:若无可用的集群,可单击“创建集群”跳转到CCE控制台创建集群。
若当前所选集群已启用Istio时,灰度发布策略默认选择“Istio”。若当前所 选集群未启用Istio时,灰度发布策略可选择“金丝雀”或“蓝绿发布”。
– 命名空间:配置为集群所对应的命名空间。若无可用的命名空间,可单击
“创建命名空间”跳转到CCE控制台创建命名空间。
– 工作负载:选择镜像对应的工作负载。
– 灰度发布策略:支持“Istio”、“金丝雀”、“蓝绿发布”。
i. Istio:
○ 灰度版本实例数:添加灰度版本实例数量,最多添加300个。
○ 正式版本实例数:当“创建方式”配置为“标准”才显示。添加正 式版本实例数量,最多添加300个。
○ 最大无效实例数:当“创建方式”配置为“标准”才显示。每次滚 量,最少添加2个,最多添加300个。
○ 最大无效实例数:当“创建方式”配置为“标准”才显示。每次滚 动升级允许的最大无效实例数,如果等于实例数有断服风险(最小 存活实例数 = 实例数 - 最大无效实例数)。勾选“百分比”,可设 置最大无效实例数占总实例数量的百分比。
iii. 蓝绿发布
○ 实例数量:当“创建方式”配置为“标准”才显示。添加实例数 量,最多添加300个。
○ 最大无效实例数:当“创建方式”配置为“标准”才显示。每次滚
– CPU配额:当“创建方式”配置为“标准”才显示。CPU申请值,指需要预 留给容器的CPU值,依据此值选择有足够CPU资源的节点进行配置。CPU限制 值,指允许容器使用的CPU最大值。
– 内存配额:当“创建方式”配置为“标准”才显示。内存申请值,指需要预 留给容器的内存值,依据此值选择有足够内存资源的节点进行调度。内存限 制值,指允许容器使用的内存最大值。
– Manifest:当“创建方式”配置为“YAML”才显示。编辑时需要按照 kubernetes的yaml语法编辑Manifest。
● 应用服务配置:服务名称、内部域名访问地址、服务访问方式、访问端口/协议、
容器端口/协议已默认设置。单击“编辑”,在“添加服务”对话框中可修改访问 协议,目前公网访问应用使用的协议支持TCP和UDP。
须知
灰度发布只能使用一个service,不可添加其他应用服务配置。
已生效的访问协议不可修改。
▪
基于流量比例:对灰度版本配置相应的流量权重,服务流量将会按照权 重比率以对应的概率分发当前版本。例如20%的流量走灰度版本,80%的流量走正式版本。
自定义Header 可以自定义请求头的key和value,value支持完 全匹配和正则匹配。
android、windows、MacOS、linux。
允许访问的浏览器 选择允许访问的浏览器,包括Chrome、360、
IE、Safari、Sogou、Edge。
规则描述 灰度策略的规则描述信息。
图3-9 审核模式
● 全部通过:所有审核人员全部通过才可以。
● 单人通过:审核人员只要有一人通过就可以。
单击“添加审核”,添加审核人员、选择审核方式,单击“确定”。
图3-10 添加审核
步骤8 单击拓扑图中上一阶段旁的 ,添加阶段,阶段类型为“正式发布”,阶段名称可 自定义。
正式发布信息无需设置,直接单击“提交”。
灰度发布策略为“Istio”和“蓝绿发布”时,仅支持灰度发布阶段回退,正式发布阶段不 支持回退。