云效和 EDAS 在 DevOps 开发实践中的联合应用

简介: 在之前的文章《使用 Spring Tool Suite 快速开发 EDAS HSF 服务》中说到了如何快速开发运行在EDAS上的服务化应用,本文接着说说如何使用云效再加速应用的研发。 云效是一个一站式的研发效能工具,提供了从“计划->需求->开发->构建->测试->部署->运营”一体化的协同服务和研发支撑。使用云效可以对应用进行快速迭代

在之前的文章《使用 Spring Tool Suite 快速开发 EDAS HSF 服务》中说到了如何快速开发运行在EDAS上的服务化应用,本文接着说说如何使用云效再加速应用的研发。

云效是一个一站式的研发效能工具,提供了从“计划->需求->开发->构建->测试->部署->运营”一体化的协同服务和研发支撑。使用云效可以对应用进行快速迭代研发,满足DevOps的最佳实践。下面就按步骤看看云效是如何加速EDAS HSF服务的开发的。

1、准备工作

 云效侧准备工作

假设阿里云管理员已经创建子账号和企业,这些步骤可以参考云效用户手册。我们从创建项目开始,访问https://rdc.aliyun.com/project开始创建项目,这里需要选择研发项目,这样可以配置代码库,业务空间类型则只是用来做项目管理。

新建项目

进入项目之后,通过设置 > 成员将团队成员加入到项目中,这样团队成员在登陆后能在自己的项目列表中看到相应的项目,就能协同开发应用了。

编辑团队成员

EDAS侧准备工作

创建集群:

在阿里云控制台 > 企业级分布式应用服务 > 资源管理 > 集群里面可以创建集群,本文使用的是Swarm类型的容器集群,也可以选择ECS集群,但是不能选择Kubernetes类型的容器集群,因为目前云效还不支持与Kubernetes类型的容器集群对接,无法将构建产物自动部署过去。

创建集群

创建应用:

在应用管理中创建一个新的应用,应用运行环境可以选择最新版本的EDAS-Container 3.3.9。

创建应用

创建完应用后,记下应用ID,在对接云效的时候需要用到。

EDAS应用ID

2、云效-注册应用

在项目中,通过应用 > 注册应用来新建应用,一个项目中可以包含多个应用。

配置代码库

Git库:注册应用的时候需要绑定Git库,如果已经有Git库了,使用关联已有来关联,新建的话云效会在阿里云GitLab(code.aliyun.com)上创建一个新的Git代码库。这里需要注意的是,阿里云GitLab使用单独的用户管理,在GitLab上需要把之前准备工作步骤中的团队成员再加入进来,通过GitLab > Project > Members > Add new user to project来配置。Master权限可以提交代码到master,Developer权限则只能提交代码到branch。

GitLab用户管理

分支模式:自由模式通常是对master进行主干开发,使用master来开发、集成和部署发布。master上的任何变化,会触发流水线执行构建、部署等连续操作。分支模式则是对特性分支进行开发。这里采用自由模式,直接对master进行开发、集成和发布,以便更直观的看到云效流水线带来的效果。

注册应用

配置代码内容

这个步骤事实上为了生成release文件,release文件控制的是程序类型、开发语言及版本,本文的示例使用的是Java 1.7,初始化模板是Spring Boot。产物路径是灰掉不可更改的,之后可以在Git库里直接修改release文件。

配置代码内容

配置应用

最后一步是配置应用,因为是要将应用部署到EDAS的容器集群中,因此这里选择部署方式为EDAS部署。

配置应用

3、云效-配置环境

在注册应用完成后,进入应用 > 环境可以看到当前应用对应的环境列表,云效在注册应用时自动创建了测试环境(日常环境)、生产环境(预发环境、正式环境)三个配置,本文示例只对测试环境进行配置,以便链接到EDAS集群。进入日常环境 > 部署配置,选择部署方式为EDAS部署,EDAS应用ID就是之前在准备工作步骤中记下的应用的ID。

配置环境

4、IDE-链接代码

克隆阿里云Git库

在Spring Tool Suite(STS)中克隆阿里云GitLab上的代码库,URI可以在code.aliyun.com对应的Git库里复制到,用户认证则使用GitLab中配置的用户名和密码(务必注意不是子账号)。

Clone Git

导入应用代码

克隆完成后导入Git库里的项目,也就是云效自动创建的模板应用,导入后,将《使用 Spring Tool Suite 快速开发 EDAS HSF 服务》里创建的HSF服务应用手工Merge进来。

编辑release文件

注册应用时,云效自动生成了release文件,在项目里我们需要确认这里的配置是否正确,需要注意以下两个配置项。

# 构建打包使用的打包文件
build.output=target/SimpleStore-0.0.1-SNAPSHOT.jar

# 该配置项会避免云效对build.output中的产物再进行压缩(EDAS部署需要此配置项)
build.output.nottgz=True

5、云效-查看和编辑流水线

注册应用后,云效会自动创建一条默认的流水线,包含了构建 > 部署到测试环境 > 部署到预发环境 > 部署到正式环境这几个步骤,本文只有测试环境,因此需要编辑流水线来删除部署到预发环境和部署到正式环境这两个阶段。当然在编辑流水线页面上,也可以加入新的阶段和每个阶段的任务,以及配置监听、流转条件(手动和自动)等,编辑页面如下图所示。

编辑流水线

DevOps实践中的研发、持续集成、自动化测试、持续部署和发布都可以在流水线中自动化流转,可以说流水线在真正意义上实现了DevOps过程的一体化,体现了敏捷、高效的精神。

6、IDE-提交代码,云效-触发流水线,EDAS-部署运行

提交代码

所有步骤完成之后,可以在本地IDE中提交代码,提交成功后,可以在阿里云GitLab的Commits记录里看到提交的记录,本例子里,将Ping页面加了个字符串,以便直观的体验应用更新的变化。

commits change

触发流水线

云效在监听到代码改变后,会自动触发流水线进行构建,在本示例中跳过了测试阶段,真正实用角度来说,任何应用需要测试通过后,才可以被发布。下图是流水线执行成功的示意图,注意看到Commit号与之前Git库的变化历史是一致对应的。

触发流水线

部署运行

流水线成功执行后,可以到阿里云的控制台中查看EDAS的运行情况,在变更记录中记录了流水线执行部署的事件。

EDAS变更记录

通过浏览器检查Ping页面,发现应用已经被成功更新,如下图所示:

更新页面

本文通过一个简单的EDAS HSF服务应用开发,介绍了云效和EDAS容器集群在实际研发过程中的结合使用方法。这两者的结合极大程度的提高了应用研发的敏捷性,真正实现了DevOps的持续集成、持续部署发布的理念。当然也希望公有云云效能提供更多、更完善的支持,例如EDAS Kubernetes集群的部署,更多的编译构建器等等。

相关实践学习
微服务实战-服务注册中心 - Nacos
Nacos是阿里巴巴于2018年7月发布的一个开源项目,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 支持几乎所有主流类型的服务的发现、配置和管理: Kubernetes Service  gRPC & Dubbo RPC Service  Spring Cloud RESTful Service  
目录
相关文章
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
在DevOps实践中,确保安全审核和合规性至关重要。通过自动化合规审查、持续安全集成、基础设施即代码管理、敏捷合规框架、跨部门合作、教育与培训、实施DevSecOps模型、使用安全编码技术、整合正确工具及采用安全即代码等措施,组织能有效管理并降低合规与安全风险,促进高效可靠的DevOps文化发展。
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率
在DevOps实践中,为平衡开发速度与安全审核效率,可采取自动化安全测试、安全编码实践、持续监控与日志分析、集成安全工具、合规性代码审查、基础设施即代码、权限和访问控制、安全培训、漏洞及补丁管理和持续反馈改进等措施,确保高效安全的开发流程。
|
运维 Devops jenkins
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
333 4
|
监控 应用服务中间件
如下请问EDAS的这个问题怎么解决? 应用id:2b0e6935-47fb-40ec-a11d-7dac320aecc1 集群中的节点内存是足够的,部署跑不起来 可以帮忙看看吗,以前集群下应用发布都是正常的,最近集群下应用部署基本都报错跑不起来,提示节点不可用
如下请问EDAS的这个问题怎么解决? 应用id:2b0e6935-47fb-40ec-a11d-7dac320aecc1 集群中的节点内存是足够的,部署跑不起来 可以帮忙看看吗,以前集群下应用发布都是正常的,最近集群下应用部署基本都报错跑不起来,提示节点不可用
436 2
|
Kubernetes 负载均衡 Serverless
通过EDAS部署并访问应用
本实验旨在通过使用分布式应用服务EDAS纳管容器服务ASK,掌握微服务应用的部署和访问。
|
弹性计算 Kubernetes Cloud Native
云原生微服务应用平台 EDAS 2022 年度报告
最近一年来,随着我们的客户对于云技术的诉求从资源快速交付的服务,转变为对资源精益运用的服务。EDAS 团队结合公共云上所服务的企业类客户的几万个应用,选取了 8 个最具代表性的指标,进行了一次系统性的分析整理和总结,希望可以给当前正在从事软件架构的从业人员一个侧面的视角,来了解一些当下发生在身边的技术现象。
723 1
云原生微服务应用平台 EDAS 2022 年度报告
|
Kubernetes Serverless 应用服务中间件
通过EDAS实现K8s微服务应用的金丝雀发布
本实验旨在通过使用分布式应用服务EDAS纳管容器服务ASK,体验微服务应用的部署、访问和高级发布能力。