如何通过云效Flow完成自动化部署—主机部署,云效流水线Flow是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅,Flow 提供了通用的部署能力该篇内容注意讲解如何通过云效Flow完成自动化部署—主机部署
新建部署任务
为了创建部署组,需要先在流水线中添加「主机部署」任务。用户可以通过以下方式添加部署任务。
-
使用模板新建流水线,选择包含 “部署” 任务的模板
-
在已有的流水线中,添加新的阶段,并选择「部署」任务
流水线模版创建
新建流水线时,选择对应的开发语言,可以查看当前语言下的默认流水线模版,选择带有“部署”节点的流水线模版,即可快速使用构建能力 。
编排流水线,添加部署任务
一、主机部署
云效Flow 提供了通用的部署能力,支持业务被部署到不同国家,不同云厂商环境还有你的私有环境的主机中。
云效Flow 目前支持部署以下的主机类型:
-
阿里云ECS
二、主机组
主机组是什么?每个 Web 应用,在集成测试的环境(通常称作日常环境)、预发的环境(称作预发环境)、对外提供服务的环境(称作正式环境)等不同的环境里运行。
对应在 Flow 中,我们把这些环境称之为「主机组」,也就是该应用运行在若干台机器(虚拟机/容器)。
前置任务
可以通过两种方式创建主机组:
方法一:通过「主机组管理」添加主机组
方法二:先在流水线中添加「主机部署」任务。用户可以通过以下方式添加部署任务。
-
使用模板新建流水线,选择包含 “部署” 任务的模板
-
在已有的流水线中,添加新的阶段,并选择「主机部署」任务
如何使用添加部署任务,可查阅“部署”一节
创建主机组
在部署任务中,点击「新建主机组」,进入新建主机组的流程。
你可以创建三种类型的主机组:
-
阿里云ECS 部署到阿里云 ECS
-
可以出公网的非阿里云主机 部署到公网主机
-
不可访问公网的非阿里云主机(即将上线)
2、部署到阿里云 ECS
云效流水线 Flow 支持部署到阿里云 ECS 。你可以按照以下方式,将你的阿里云 ECS 加入主机组,从而让流水线能对其进行部署。
创建阿里云 ECS 类型主机组
添加方式——直接添加
1)新建主机组,选择 【主机类型】为 "阿里云ECS" 。
2)选择【服务授权】和【地区】,展示【可添加的主机列表】,可【新建服务授权】。
3) 选择你想要添加至主机组的ECS主机。
4) 编辑主机信息,包括主机组名称、环境、标签;主机组成员权限的配置,创建人默认为企业拥有者;点击保存,即可完成主机组的创建。
5)至此,你可在流水线中选择使用该主机组了。
对部署权限的说明,可查看“主机组成员权限”一节
添加方式——通过 ECS 标签添加
同时,主机组支持通过ECS标签添加,如果您使用 ECS 标签对 ECS 资源进行分类管理,可以直接在 Flow 中建立主机组和 ECS 标签的关联。
StarAgent
为保证部署通道可用性,提高部署成功率,飞流采用了云助手(https://help.aliyun.com/document_detail/64601.html)和Staragent双通道方案,云助手在阿里云ECS会默认安装,在新增和修改部署组的时候,飞流会通过云助手自动安装StarAgent。
StarAgent介绍
StarAgent是阿里巴巴集团服务器运维基础设施,承载了全集团的服务器交互任务。StarAgent是打造全网通,7*24不间断提供服务,安全可靠,日均亿级调用量,99.995%的系统成功率的命令通道。通过阿里巴巴集团安全团队对StarAgent进行了安全加固。重置帐号密钥,客户端服务端使用不同的加密方式,在服务器上执行的命令进行全量审计等安全策略为命令通道保驾护航。
StarAgent基础操作
1
2
3
4
5
6
7
|
查看状态:/home/staragent/bin/staragentctl status; 启动:/home/staragent/bin/staragentctl restart; 重启:/home/staragent/bin/staragentctl restart; 卸载: 1. /home/staragent/bin/staragentctl stop; 2. rm -rf /home/staragent; 3. rm /usr/sbin/staragent_sn |
3、部署到公网主机
通过在对应主机中添安装 Agent 的方式,云效流水线 Flow支持部署到非阿里云的公网主机(包括其他公有云主机或者可以联通公网的自有主机)。
你可以按照以下方式,将你的公网主机加入主机组,从而让 Flow 能对其进行部署。
创建自由主机类型主机组
1)新建主机组,选择 【主机类型】为 “自有主机”。
2) 展示【可添加的主机列表】,如果想要添加新的自有主机至【可添加的主机列表】,请复制主机添加指令。
3) 请打开你需要添加进主机组部署的主机的命令行, 并将前序操作中复制的命令,在你的自有主机上执行(请注意,主机需要能访问公网)。
4) 主机添加指令执行后,等待1-2分钟后,自有主机会导入【可添加的主机列表】,选择你想要添加至主机组的自有主机。
5) 编辑主机信息,包括主机组名称、环境、标签;主机组成员权限的配置,创建人默认为企业拥有者;点击保存,即可完成主机组的创建。
6)至此,你可在流水线中选择使用该主机组了。
图6. 使用主机组
对部署权限的说明,可查看“流水线成员权限”一节
三、部署配置
在流水线的部署组件中,需要进行部署配置。本篇文档会给出一个示例,供你参考,如何配置。
提前准备
-
从示例代码库新建一个SpringBoot代码库:https://code.aliyun.com/code-template/spring-boot。其中包含启动脚本deploy.sh:https://code.aliyun.com/code-template/spring-boot/blob/master/deploy.sh。
-
在部署机安装Java运行环境
-
在流水线构建出制品
为了进行部署,首先需要构建出制品。Flow 中的制品是一个tgz压缩包,在构建任务中可以指定一个或者多个文件(文件夹),Flow 的制品中就会包含这些文件(文件夹)。详情可以参考文档上传到 Flow 的制品库。
在本例中,需要将target/application.jar和deploy.sh两个文件打包到制品中。因此需要在构建任务中按下面的方式进行配置:
主机部署配置
在主机部署任务中,可以进行部署相关的配置,用于将构建产物在部署机上进行安装。
下载路径
部署配置中的下载路径就是构建物上传步骤产出的压缩包将要被下载到你的主机上的路径,本例中为:/home/admin/app/package.tgz
执行用户
填写执行部署脚本的用户,如 root,或者 admin 等。本例中为root
部署脚本
因为实际的部署脚本已经打包到了构建产出的压缩包中,因此部署脚本可以简单的进行解压和执行即可
1
2
3
|
mkdir -p /home/admin/application tar zxvf /home/admin/app/package.tgz -C /home/admin/application/ sh /home/admin/application/deploy.sh restart |
四、部署策略
真实的上线过程,如果采用全量发布,会给开发运维团队带来未知的风险,为了减少发布对线上业务的影响, Flow 提供了灰度发布,分批发布能力,最大限度的避免了不稳定发布对用户的影响, 保障业务交付的稳定。
主机分批部署
如果你一次需要发布多台主机,Flow 支持分批发布,您可在主机部署任务中,可以指定对应的部署策略。假如你有 4 台主机,选择分 2 批发布,则每一批自动发布 2 台主机。
-
暂停方式
第一批暂停:第一批发布完后,您可先行验证,点击继续后可执行后续发布。
不暂停:每一批发布完后,自动执行后续批次的发布。
每批暂停:每一批发布完后,都需要手动确认继续发布。
-
分批数量
指定主机分批的数量,指定分批发布的数量,会按照相应的数量进行分批部署。
五、查看部署详情
流水线配置完成,在流水线运行页面,在“主机部署”任务中,可以点击【部署详情】查看部署过程。
部署详情 部署单会显示当前部署的整体状态和情况。
部署状态
部署中:可以执行【终止】操作,及查看日志 暂停中:可以执行【终止】,【继续下一批】操作,及查看部署日志 成功:可以查看部署日志 失败:可以查看部署日志,并在卡片视图上重新发起部署
机器状态
待部署:无操作 部署中:可以查看部署日志 成功:可以查看部署日志 失败:可以查看部署日志,并重试单台机器 常见部署问题,可查看“部署常见问题”一节
六、部署历史 和 回滚
用户可在 流水执行记录 —> 部署历史 中,查看到该流水线所有执行的部署历史记录,并可选择其中任意一条历史记录进行回滚操作。
Flow 会根据当时运行的部署脚本和构建制品重新执行部署任务,以实现回滚的效果。
如何通过云效Flow完成自动化部署—主机部署,云效流水线Flow是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅,Flow 提供了通用的部署能力该篇内容注意讲解通过云效Flow完成自动化部署—主机部署。