如何通过云效Flow完成自动化部署—主机部署

摘要:
如何通过云效率流程完成自动化部署-主机部署。云效率管道流是持续交付的载体。通过构建自动化、集成自动化、验证自动化和部署自动化,完成了从开发到在线过程的持续交付。通过不断向团队提供及时的反馈,交付过程高效、顺畅。流提供了通用部署功能。本文重点介绍如何通过云效率流完成自动部署-主机部署新的部署任务要创建部署组,您需要首先向管道中添加一个“主机部署”任务。
如何通过云效Flow完成自动化部署—主机部署,云效流水线Flow是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅,Flow 提供了通用的部署能力该篇内容注意讲解如何通过云效Flow完成自动化部署—主机部署

新建部署任务

为了创建部署组,需要先在流水线中添加「主机部署」任务。用户可以通过以下方式添加部署任务。
  • 使用模板新建流水线,选择包含 “部署” 任务的模板
  • 在已有的流水线中,添加新的阶段,并选择「部署」任务
流水线模版创建
 
新建流水线时,选择对应的开发语言,可以查看当前语言下的默认流水线模版,选择带有“部署”节点的流水线模版,即可快速使用构建能力 。
 
如何通过云效Flow完成自动化部署—主机部署第1张
 
编排流水线,添加部署任务
 
如何通过云效Flow完成自动化部署—主机部署第2张
 

一、主机部署

云效Flow 提供了通用的部署能力,支持业务被部署到不同国家,不同云厂商环境还有你的私有环境的主机中。
云效Flow 目前支持部署以下的主机类型:
  • 阿里云ECS

二、主机组

主机组是什么?每个 Web 应用,在集成测试的环境(通常称作日常环境)、预发的环境(称作预发环境)、对外提供服务的环境(称作正式环境)等不同的环境里运行。
 
对应在 Flow 中,我们把这些环境称之为「主机组」,也就是该应用运行在若干台机器(虚拟机/容器)。
 
前置任务
 
可以通过两种方式创建主机组:
 
方法一:通过「主机组管理」添加主机组
 
如何通过云效Flow完成自动化部署—主机部署第3张
 
方法二:先在流水线中添加「主机部署」任务。用户可以通过以下方式添加部署任务。
  • 使用模板新建流水线,选择包含 “部署” 任务的模板
  • 在已有的流水线中,添加新的阶段,并选择「主机部署」任务
如何通过云效Flow完成自动化部署—主机部署第4张
 
如何使用添加部署任务,可查阅“部署”一节
 
创建主机组
 
在部署任务中,点击「新建主机组」,进入新建主机组的流程。
 
你可以创建三种类型的主机组:
2、部署到阿里云 ECS
 
云效流水线 Flow 支持部署到阿里云 ECS 。你可以按照以下方式,将你的阿里云 ECS 加入主机组,从而让流水线能对其进行部署。
 
创建阿里云 ECS 类型主机组
 
添加方式——直接添加
 
1)新建主机组,选择 【主机类型】为 "阿里云ECS" 。
 
如何通过云效Flow完成自动化部署—主机部署第5张
 
2)选择【服务授权】和【地区】,展示【可添加的主机列表】,可【新建服务授权】。
 
如何通过云效Flow完成自动化部署—主机部署第6张
 
3) 选择你想要添加至主机组的ECS主机。
 
如何通过云效Flow完成自动化部署—主机部署第7张  
 
4) 编辑主机信息,包括主机组名称、环境、标签;主机组成员权限的配置,创建人默认为企业拥有者;点击保存,即可完成主机组的创建。
 
如何通过云效Flow完成自动化部署—主机部署第8张
 
5)至此,你可在流水线中选择使用该主机组了。
 
如何通过云效Flow完成自动化部署—主机部署第9张
 
对部署权限的说明,可查看“主机组成员权限”一节
 
添加方式——通过 ECS 标签添加
 
同时,主机组支持通过ECS标签添加,如果您使用 ECS 标签对 ECS 资源进行分类管理,可以直接在 Flow 中建立主机组和 ECS 标签的关联。
 
如何通过云效Flow完成自动化部署—主机部署第10张
 
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)新建主机组,选择 【主机类型】为 “自有主机”。
 
如何通过云效Flow完成自动化部署—主机部署第11张
 
2) 展示【可添加的主机列表】,如果想要添加新的自有主机至【可添加的主机列表】,请复制主机添加指令。
 
如何通过云效Flow完成自动化部署—主机部署第12张
 
3) 请打开你需要添加进主机组部署的主机的命令行, 并将前序操作中复制的命令,在你的自有主机上执行(请注意,主机需要能访问公网)。
 
如何通过云效Flow完成自动化部署—主机部署第13张
 
4) 主机添加指令执行后,等待1-2分钟后,自有主机会导入【可添加的主机列表】,选择你想要添加至主机组的自有主机。
 
如何通过云效Flow完成自动化部署—主机部署第14张
 
5) 编辑主机信息,包括主机组名称、环境、标签;主机组成员权限的配置,创建人默认为企业拥有者;点击保存,即可完成主机组的创建。
 
如何通过云效Flow完成自动化部署—主机部署第15张
 
6)至此,你可在流水线中选择使用该主机组了。
 
如何通过云效Flow完成自动化部署—主机部署第9张
 
图6. 使用主机组
对部署权限的说明,可查看“流水线成员权限”一节
 

三、部署配置

 
在流水线的部署组件中,需要进行部署配置。本篇文档会给出一个示例,供你参考,如何配置。
 
提前准备
  1. 从示例代码库新建一个SpringBoot代码库:https://code.aliyun.com/code-template/spring-boot。其中包含启动脚本deploy.sh:https://code.aliyun.com/code-template/spring-boot/blob/master/deploy.sh
  2. 在部署机安装Java运行环境
  3. 在流水线构建出制品
为了进行部署,首先需要构建出制品。Flow 中的制品是一个tgz压缩包,在构建任务中可以指定一个或者多个文件(文件夹),Flow 的制品中就会包含这些文件(文件夹)。详情可以参考文档上传到 Flow 的制品库
 
在本例中,需要将target/application.jar和deploy.sh两个文件打包到制品中。因此需要在构建任务中按下面的方式进行配置:
 
如何通过云效Flow完成自动化部署—主机部署第17张
 
主机部署配置
 
在主机部署任务中,可以进行部署相关的配置,用于将构建产物在部署机上进行安装。
 
如何通过云效Flow完成自动化部署—主机部署第18张
 
下载路径
 
部署配置中的下载路径就是构建物上传步骤产出的压缩包将要被下载到你的主机上的路径,本例中为:/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完成自动化部署—主机部署第19张
 
五、查看部署详情
 
流水线配置完成,在流水线运行页面,在“主机部署”任务中,可以点击【部署详情】查看部署过程。
 
 
如何通过云效Flow完成自动化部署—主机部署第20张
 
部署详情 部署单会显示当前部署的整体状态和情况。
 
 
如何通过云效Flow完成自动化部署—主机部署第21张
 
部署状态
 
部署中:可以执行【终止】操作,及查看日志 暂停中:可以执行【终止】,【继续下一批】操作,及查看部署日志 成功:可以查看部署日志 失败:可以查看部署日志,并在卡片视图上重新发起部署
机器状态
 
待部署:无操作 部署中:可以查看部署日志 成功:可以查看部署日志 失败:可以查看部署日志,并重试单台机器 常见部署问题,可查看“部署常见问题”一节

六、部署历史 和 回滚

用户可在 流水执行记录 —> 部署历史 中,查看到该流水线所有执行的部署历史记录,并可选择其中任意一条历史记录进行回滚操作。
 
Flow 会根据当时运行的部署脚本和构建制品重新执行部署任务,以实现回滚的效果。
 
如何通过云效Flow完成自动化部署—主机部署第22张
 
如何通过云效Flow完成自动化部署—主机部署,云效流水线Flow是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅,Flow 提供了通用的部署能力该篇内容注意讲解通过云效Flow完成自动化部署—主机部署。

免责声明:文章转载自《如何通过云效Flow完成自动化部署—主机部署》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用Navicat Premium 12导出SQL语句并在Power Designer 16.5中生成物理模型jmeter在linux机器上的安装和操作:下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

阿里云云盾安全事件提醒:挖矿程序

一:杀死挖矿程序进程 在服务器上使用top指令查看cpu的使用情况,发现有一个叫java的程序占用cpu高达99.9% PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5778...

Storm实战:在云上搭建大规模实时数据流处理系统(Storm+Kafka)

在大数据时代,数据规模变得越来越大。由于数据的增长速度和非结构化的特性,常用的软硬件工具已无法在用户可容忍的时间内对数据进行采集、管理和处理。本文主要介绍如何在阿里云上使用Kafka和Storm搭建大规模消息分发和实时数据流处理系统,以及这个过程中主要遭遇的一些挑战。实践主要立足建立一套汽车状态实时监控系统,可以在阿里云上立即进行部署。   实时大数据处理...

阿里云ECS centos7 支持IPv6

  1.编辑 /etc/sysctl.conf 文件,将其中三条禁用IPv6的设置更改为:    net.ipv6.conf.all.disable_ipv6 = 0    net.ipv6.conf.default.disable_ipv6 = 0    net.ipv6.conf.lo.disable_ipv6 = 0   2.再运行 sysctl -...

性能压测工具选型对比

本文是《Performance Test Together》(简称PTT)系列专题分享的第二期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系,并提供有例可依的实战。 该系列专题分享由阿里巴巴 PTS 团队出品,欢迎在文末处加入性能压测交流群,参与该系列的线上...

# Dinic重边处理模板

Dinic重边处理模板 https://www.luogu.com.cn/problem/P2936 本题相比普通最大流题目只是多了一个重边的处理,意义不大,但还是想记录一下,反正也花不了多少时间。 这里的处理方式是使用二维数组预处理边集,将重边合并,再将该二维数组作为Dinic的输入,暂时没有想到更好的处理方式,望大佬指教。 #include <b...

React Native、Cordova开发必备的阿里源

maven { url "https://maven.aliyun.com/repository/public"}maven { url "https://maven.aliyun.com/repository/google"}maven { url "https://maven.aliyun.com/repository/gradle-...