写点什么

云效 Flow 如何实现阿里云 ECS 多环境发布

作者:阿里云云效
  • 2022 年 2 月 15 日
  • 本文字数:1963 字

    阅读完需:约 6 分钟

云效Flow如何实现阿里云ECS多环境发布

一、背景


在软件开发和部署过程中,我们的软件往往需要在不同的运行环境中运行,例如:开发人员本地开发环境、测试团队的测试环境、还有类生产环境和生产环境。在整个研发流程的过程中,针对开发和运维,前者面向需求和代码,后者面向资源和环境,而部署,是两者都会关注的部分。通过本文,你可以了解到,如何通过云效流水线有效拉通开发与运维,打破二者之间的壁垒墙,让开发与运维高效联动。



二、用户诉求


一般来说,用户使用主机部署诉求如下:


1、开发人员不需要关注资源变更,只需要按需选择环境进行部署即可。

2、开发人员能够根据制定好的发布策略,自主发布,不需要手工配置和干预。

3、运维人员不需关注研发平台,只需做好资源的规划管理即可。

该场景下主要会涉及开发人员跟运维人员两个角色,下面文章中我们主要会这两个角色角度进行讲解。

三、云效解决方案


结合云效交付流水线发布策略及 ECS 的标签功能,为 ECS 的多环境发布提供了很好的基础保障,如图:



四、云效操作实践


前置条件


接下来以一个 Java Spring Boot 的代码库为例,讲解如何通过云效流水线进行阿里云 ECS 的多环境发布。

1、运维人员已购买相应阿里云 ECS 资源,并配置好相应环境,如本文案例中需要的 JDK 环境。


2、运维人员,根据需要,对相应 ECS 资源进行标签配置。标签是云资源的标识,可以帮助您从不同维度对具有相同特征的云资源进行分类、搜索和聚合,让资源管理变得更加轻松。本文中 ECS 资源及标签设置如图所示:


标签键: environment 标签值:dev、sit、product



创建流水线


1、进入云效流水线,点击右上角【新建流水线】,进入流水线创建向导页面。


说明 

立即体验:云效流水线Flow

 


2、选择图中标识模板,并点击创建



配置代码库


1. 创建流水线之后会自动弹出添加代码源的窗口,这里选择 Flow 提供的示例代码源,并进行添加



配置构建上传任务


修改一下”Java 构建上传“的任务,增加一个打包路径,填入 deploy.sh。这个文件存在于代码库中,其中包含了在 ECS 上进行应用启动的脚本,为了进行后续的主机部署,需要将这个文件也打入到压缩包中,在后续的主机部署任务中可以看到如何使用该 deploy.sh。在该配置中指定了 target/和 deploy.sh 两个路径,所以 Flow 会将这两个文件(夹)打包成为一个压缩包,并进行归档,在 Flow 中我们称之为制品,该制品也会在后续的主机部署任务中用到。



配置部署任务


1、接下来配置主机部署任务,在制品下拉框中选择”制品名称.default”,也就是前面的”Java 构建上传“步骤归档的那个制品。为了配置主机组,需要先创建一个,点击”新建主机组”。



2、选择”阿里云 ECS“,点击”新建服务授权”,跳转到阿里云,完成 RAM 授权,然后会自动跳回到 Flow。




3、此时再选择标签方式添加,依次选择地区、ECS 标签键、ECS 标签值,点击下一步。



4、在新弹出的页面中输入主机组名称及主机组环境,点击保存即可。



5、接下来进行部署脚本的配置:


· 下载路径:表示希望把”构建上传”任务中的压缩包下载到机器上的什么位置,在本例的值为:/home/admin/app/package.tgz

· 执行用户:希望以是哪个用户的身份进行脚本执行,本例的值为:root

· 部署脚本:在机器上执行脚本的具体内容,本例的值为:

mkdir -p/home/admin/application/tar zxvf /home/admin/app/package.tgz -C/home/admin/application/sh /home/admin/application/deploy.sh restart



6、部署策略配置


· 暂停方式:希望一个主机组中的机器以什么样的暂停方式进行,比如第一批暂停,每批暂停,或者不暂停。推荐使用第一批暂停,在发布完第一批之后,对线上服务进行观察,如果没有异常,则可以继续其余批的发布

· 分批数量:希望主机组中的机器分为几批进行发布。比如一共 4 台机器,分两批,则每批同时发布 2 台机器。


本文中配置如下所示:



7、部署结果查看


· 点击右上角保存并执行按钮



· 待执行完毕后,点击部署详情按钮查看部署明细。




· 通过 IP:8080 访问验证,如下图所示:



资源变更场景


1. 因业务需要,需在开发环境中增加一台机器,运维同学只需在 ECS 侧准备相应资源,打上相应环境标签即可,如下图所示。



2. 运维同学配置完毕后,开发同学不需做任何变更,直接运行相应环境流水线即可。流水线运行过程中,因为我们之前设置的分批,第一批暂停的发布策略,因此流水线会暂停,出现如下状态



3. 此时点击部署详情按钮,进入部署详情页面,确认没有问题后,点击继续按钮,如下图所示



五、结语


通过以上的操作流程,我们可以通过云效流水线,利用标签功能,拉通开发与运维,同时,让开发和运维关注点分离,专注于核心的工作内容,实现 ECS 的多环境部署。


欢迎体验、试用云原生时代新 DevOps 平台阿里云云效

关于我们


了解更多关于云效 DevOps 的最新动态,可微信搜索关注【云效】公众号;


福利:公众号后台回复【指南】,可获得《阿里巴巴 DevOps 实践指南》&《10 倍研发效能提升案例集》;


看完觉得对您有所帮助别忘记点赞、收藏和关注呦



发布于: 刚刚阅读数: 2
用户头像

还未添加个人签名 2021.11.05 加入

云效,云原生时代一站式BizDevOps平台,支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现 10 倍效能提升

评论

发布
暂无评论
云效Flow如何实现阿里云ECS多环境发布