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

一、背景

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

二、用户诉求

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

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

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

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

三、云效解决方案

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

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

四、云效操作实践

前置条件

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

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

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

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

创建流水线

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

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侧准备相应资源,打上相应环境标签即可,如下图所示。

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

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

五、结语

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

原文链接

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

如何高效完成ECS多环境部署?的更多相关文章

  1. 阿里云服务器ECS的环境部署和安装

    1.进入产品 云服务 ECS 和 云空间选择, 我购买的是ECS,那么环境搭建都是需要自己动手实现的. 2. 选择创建一个实例 记得网络一定要选择 公用网络,主机地址选择选择国内. 3. 购买的时候 ...

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

    一.背景 云效Flow基于标签功能实现阿里云ECS多环境发布,在软件开发和部署过程中,我们的软件往往需要在不同的运行环境中运行,例如:开发人员本地开发环境.测试团队的测试环境.还有类生产环境和生产环境 ...

  3. Web应用之LAMP源码环境部署

    一.LAMP环境的介绍 1.LAMP环境的重要性 思索许久,最终还是决定写一篇详细的LAMP的源码编译安装的实验文档,一来是为了给自己一个交代,把技术进行系统的归纳,将技术以极致的形式呈现出来,做为一 ...

  4. kafka 基础知识梳理及集群环境部署记录

    一.kafka基础介绍 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特 ...

  5. salt+jenkins+gitlab+ecs构建公司部署平台

    1.网络架构图如下 2.采用这种方案的原因 1.现网机器都在各个省机房内网,或者堡垒机内部.无法直接从公司总部ssh到各个现网机器 2.现网机器可以访问到公网.因此可以从公网下载制作的tar包 3.每 ...

  6. OpenStack实践系列①openstack简介及基础环境部署

    OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运 ...

  7. Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录

    一.基础知识梳理MUA (Mail User Agent) MUA 既是"邮件使用者代理人",因为除非你可以直接利用类似 telnet 之类的软件登入邮件主机来主动发出信件,否则您 ...

  8. ELK实时日志分析平台环境部署--完整记录

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...

  9. ELK实时日志分析平台环境部署--完整记录(转)

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...

  10. 一台ECS服务器,部署多(两)应用,且应用配置不同域名

    场景 产品环境服务器有两台,前后端各分配一台服务器.现在在不增加机器的情况下,需要增加部署一套服务给台北地区服务. 现有的前端部署方案. 产品环境部署方案详解 实现 配置NAT步骤 ECS配置多网卡, ...

随机推荐

  1. 图像基础概念与YUV/RGB深入理解

    目录 一.图像基础概念 1.1 像素 1.2 分辨率 1.2 分辨率-不同分辨率之间的区别 1.3 位深 1.4 帧率 1.4 码率 二.YUV/RGB深入理解 2.1 RGB 2.2 YUV 2.2 ...

  2. vue项目本地开发完成后部署到服务器后报404是什么原因呢?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.如何部署 前后端分离开发模式下,前后端是独立布署的,前端只需要将最后的构建物上传至目标服务器的web容器指定的静态目录下即可 我们知道 ...

  3. Python 批量合并csv文件

    一.批量合并csv文件<方法1> import pandas as pd import glob import os # 获取所有CSV文件的路径 file_paths = glob.gl ...

  4. [Python]细节、经验

    [版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/132333324 出自[进步* ...

  5. FineReport报表绕过预览直接打印

    常规情况下,打印报表的一版操作是: 1.点击相关报表查询页面,展示查询结果,即即将打印的页面 2.点击打印按钮,进入浏览器的打印预览界面 3.点击打印 但是某些时候我们可能会希望不需要点开某张报表即可 ...

  6. FFmpeg开发笔记(九)Linux交叉编译Android的x265库

    ​<FFmpeg开发实战:从零基础到短视频上线>一书的"12.1.2  交叉编译Android需要的so库"介绍了如何在Windows环境交叉编译Android所需FF ...

  7. GraphQl in ASP.NET Core

    GraphQl in ASP.NET Core https://graphql.cn/ https://graphql-dotnet.github.io/docs/getting-started/ar ...

  8. 测试开发之系统篇-Docker容器安装

    前面文章我们讲到,容器是运行在宿主机上的一个进程,多个容器之间使用同一个宿主机上的操作系统内核.此处以Ubuntu20.04系统为例,介绍Docker容器引擎的安装过程. 安装 安装依赖. sudo ...

  9. RedisTemplate 的简单使用

    redisTemplate.opsForValue() 方法可以获得一个 Redis String 的操作类,通过该类可以执行一系列字符串类型数据的操作,例如获取.设置.删除数据等. // 示例 1: ...

  10. #差分约束,Floyd#洛谷 2474 [SCOI2008]天平

    题目 分析 非传统差分约束?? 注意只有结果保证惟一的选法才统计在内 这就为差分约束提供了依据 以左边重为例,假设现在选择的砝码为\(i,j\), 那么\(\because A+B>i+j\th ...