如何高效完成ECS多环境部署?

码影领航
• 阅读 875

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

一、背景

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

如何高效完成ECS多环境部署?

二、用户诉求

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

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

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

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

三、云效解决方案

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

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

如何高效完成ECS多环境部署?

四、云效操作实践

前置条件

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

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

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

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

如何高效完成ECS多环境部署?

创建流水线

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

如何高效完成ECS多环境部署?

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

如何高效完成ECS多环境部署?

配置代码库

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

如何高效完成ECS多环境部署?

配置构建上传任务

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

如何高效完成ECS多环境部署?

配置部署任务

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

如何高效完成ECS多环境部署?

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

如何高效完成ECS多环境部署?

如何高效完成ECS多环境部署?

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

如何高效完成ECS多环境部署?

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

如何高效完成ECS多环境部署?

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

如何高效完成ECS多环境部署?

6、部署策略配置

暂停方式:希望一个主机组中的机器以什么样的暂停方式进行,比如第一批暂停,每批暂停,或者不暂停。推荐使用第一批暂停,在发布完第一批之后,对线上服务进行观察,如果没有异常,则可以继续其余批的发布
分批数量:希望主机组中的机器分为几批进行发布。比如一共4台机器,分两批,则每批同时发布2台机器。
本文中配置如下所示:

如何高效完成ECS多环境部署?

7、部署结果查看

点击右上角保存并执行按钮
如何高效完成ECS多环境部署?

待执行完毕后,点击部署详情按钮查看部署明细。
如何高效完成ECS多环境部署?

如何高效完成ECS多环境部署?

通过IP:8080访问验证,如下图所示:
如何高效完成ECS多环境部署?

资源变更场景

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

如何高效完成ECS多环境部署?

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

如何高效完成ECS多环境部署?

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

如何高效完成ECS多环境部署?

五、结语

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

原文链接
本文为阿里云原创内容,未经允许不得转载。

点赞
收藏
评论区
推荐文章
【敏捷研发系列】前端DevOps流水线实践
软件开发从传统的瀑布流方式到敏捷开发,将软件交付过程中开发和测试形成快速的迭代交付,但在软件交付客户之前或者使用过程中,还包括集成、部署、运维等环节需要进一步优化交付效率。因此Devops的产生将敏捷的相关理念扩展到运维侧,从而将产品、设计、开发、测试、运维团队更紧密的结合在一起。而从交付给客户产品视角看,前端研发通常又是在整个产品设计开发链条的最终节点,意味着前端团队受到上游变更的影响是最大的,并且从经营理念效率出发,提升前端交付效率是至关重要的。
Tommy744 Tommy744
4年前
DevOps简介
DevOps是一个完整的面向IT运维的工作流,以IT自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。DevOps的概念DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
Stella981 Stella981
3年前
Docker学习笔记
docker通过带环境安装来解决开发和运维之间的鸿沟问题,属于云计算方面的技术。也就是说安装的时候把原始环境一模一样地复制过来,开发人员利用Docker来消除协作代码时,“在我的机器上可以正常工作啊"的问题。一次构建,处处运行。dev本地测试完毕后,打包递交docker镜像,而运维则只装一个docker作为鲸鱼,将各个镜像放到鲸鱼背上作为独立的集装箱
Stella981 Stella981
3年前
DevOps简介
DevOps是一个完整的面向IT运维的工作流,以IT自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。DevOps的概念DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和
Wesley13 Wesley13
3年前
python fabric实现远程操作和部署
fabrictitle是开发,但是同时要干开发测试还有运维的活……为毛task\3不是salary\3(o(╯□╰)o)近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多。修复bug什么的,测试,提交版本库(2分钟),ssh到测试环境pull部署(2分钟),rsync到线上机器A
Stella981 Stella981
3年前
OpenShift Router通过分片实现不同环境网络南北流量隔离
在企业实践中,通常会部署多个OpenShift集群:开发测试、生产等。每个集群都是独立的,通过物理资源进行隔离。这种方式管理简单,易于理解,但是消耗的资源更多,每个集群都需要额外的控制节点及运维节点。有没有办法,使不同环境运行在同一个集群上,并且它们之间实现隔离呢?答案是可以的。对于不同的环境,做好资源隔离,我们需要对计算资源——宿主机做好
Stella981 Stella981
3年前
Serverless 落地之痛怎么解?
传统业务在开发上线的过程中,需要团队合作,每个人开发一部分,合并代码,开发联调,然后进行资源评估,测试环境搭建、线上环境搭建、测试上线、运维。但是在Serverless时代下,开发者只需要开发自己那部分功能/函数,然后部署到测试环境、线上环境即可,后期很大一部分运维工作都不用考虑和担心。今天大家对是不是该用Serverless存在疑问,很大程度上
Stella981 Stella981
3年前
DevOps背景下的分合之事
DevOps倡导“谁开发,谁运维”和开发运维一体化。那么是不是简单地把开发和运维人员放在一起就完事了呢?01—“插队”的故事小明入职时是运维专员,原来隶属于运维部门,负责某业务线系统的应用维护工作。一旦系统的生产环境出现任何故障,或者业务人员在生产环境上有任何请求,都是由小明所在的运维部门先处理,处理不了的,再联系该系
初识DevOps
基本概念和延伸的思考DevOps,是Development(开发)和Operations(运维)组成的复合词,一般译为“开发运维一体化”。看到这个概念,首先会产生几个问题:开发是什么,哪些环节是开发?运维是什么,哪些环节是运维?开发人员写好代码在本地调试,环境出问题了自己来调整,这是开发工作还是运维工作?系统故障后,运维人员发现是配置文件内容出错了就改成了正
陈哥聊测试 陈哥聊测试
6个月前
DevOps和它的朋友们——聊聊其他 “Ops”(一)
DevOps不仅仅是将敏捷开发概念与IT运维相结合,还简化了在云环境中开发和部署应用程序的过程。
陈哥聊测试 陈哥聊测试
2个月前
将安全融入软件开发的每一步 | DevSecOps
当安全测试通过代码化嵌入需求分析、开发测试到部署运维的全周期,自动化校验与安全性左移才能真正形成合力,打破开发与安全的协作壁垒。