2022云栖精选—如何在云原生时代下管理微服务应用

简介: 杨轲Rainbond Maintainer

lQLPJxbcF2cqNBvMiM0FeLCMz4ifcSGHeANpqgFLAEAA_1400_136.png

一、在Kubernetes中管理微服务应用

image.png

K8s 应用中,管理微服务应用首先面临的问题是多套环境搭建。环境搭建流程非常繁琐,尤其是对于处于快速迭代中的产品,至少需要开发环境、测试环境、生产环境三套环境。

实际的部署中,开发环境可以通过制定流水线实现代码的不同分支,构建出不同 tag 的镜像,最后将其推送到镜像仓库中。但是真正部署在集群中时又会面临多个微服务之间依赖关系的定义,快速复制出一套测试环境需要大量人工操作脚本类的编写。

image.png


另一方面,微服务模块很多,如何编排也是 K8s 中管理微服务的痛点之一。比如微服务模块之间的依赖关系可能会是业务 A 依赖中间件依赖其他通用的业务模块。在集群中部署后,均以 workload 的形式存在,这会导致无法然一目了然地了解模块之间的依赖关系,也无法合理编排微服务组件。image.png

image.png

K8s 中部署微服务应用时往往会先部署 deployment ,再为其指定 service ,两者之间通过 label 进行选择和绑定。如果部署的微服务过多,YAML 文件的定义会很复杂,后续在同一集群中部署多套也较为复杂。也许 helm 能解决一部分问题,但是 Chart 的编写也是一大门槛。

image.png

另外,K8s 集群中微服务组件之间的复用也是一个痛点,比如使用中间件或在项目中开发定制较为通用的模块。我们希望将模块进行沉淀,在新项目开发中能够复用这些模块。而实际情况往往是代码已经沉淀,但部署中要真正使用的用户模块依然需要调整许多配置,比如 YAML 之间的配置服务之间的依赖关系,这也是影响组件复用的难题。

image.png

解决了以上问题后,我们如何将开发好的业务交付到客户环境中,也是一个亟待解决的痛点。

目前, K8s 中最常用的解决方案是通过 Helm进行交付,需要运维人员编写 Helm chart 、定义 values 文件以实现在客户环境的交付,对交付人员提出了较高要求.而且后期维护也比较复杂,因为 Helm本身没有合理的状态回流机制,资源部署到集群以后,仍然需要手动查看 POD 是否已正常启动。


二、RainBond中管理微服务

image.png

Rainbond是开源的云原生应用管理平台,基于 K8s 构建,做了一层应用级的抽象,将复杂的 K8s workload 资源抽象成Rainbond的应用模型。在模型之上支撑了应用的全生命周期管理。Rainbond 的应用模版作为应用模型的载体,可以将应用的能力沉淀下来,形成组件库。最终实现拼积木式的编排体验。

开发阶段,可以对接 git 仓库,将源码一键部署。完成部署后,微服务架构这一方面,会有拓扑图的实时显示,可以一目了然的观测到应用下各个服务的状态和依赖关系。同时支持微服务框架的一键切换以及依赖关系的编排。完成应用的编排后,进入交付阶段,通过应用模版将业务沉淀,发布到应用市场,最后实现基于应用模版的一键升级和交付。到了运维阶段,可以监控每一个服务的日志和状态,同时还可以利用插件扩展单个服务的能力

基于以上流程我们就可以实现应用整体能力的复用和共享,包括组件的发布、安装、升级、交付全流程

image.png

针对多套环境搭建问题,解决方案如下:将应用部署在平台以后,可以通过快速复制,一键复制出所有依赖关系、环境配置等。就像Fork一份代码一样简单。而且可以针对不同的镜像版本或代码分支修改组件的构建源,最终实现开发环境、测试环境到预发布环境到生产环境的一键复制和使用。

image.png

针对微服务编排,解决方案如下:应用模型定义了所有组件之间的业务依赖关系。在依赖关系之上实现了应用架构的解耦,微服务应用可以一键切换不同的治理类型,比如 Istio、K8s 原生service 模式内置的 Service Mesh框架。

针对用户的单个业务,利用了 K8s 中的 POD Sidecar 机制,提供了组件级的插件,包括日志管理、性能分析、监控等一系列工具。无需更改业务容器代码,即可提升业务的能力边界

image.png

上图为平台上部署好的完整的微服务应用。组件的运行状态和依赖关系一目了然,绿色代表组件运行正常,如果出现异常则会变成其他颜色。业务出现问题时,可以快速定位到问题所在。而在编排模式下,可以通过直接连线的方式将组件和组件连接在一起,建立两者之间的依赖关系,使组件具有直接访问到其依赖组件的能力。

image.png

针对微服务组件复用,解决方案如下:用户可以根据粒度大小定义需要复用的组件模块,然后将拼装好的模块发布到应用市场作为应用模板,供其他用户一键部署和使用

image.png

应用开始运行以后,无需学习应用模版的制作,便可以通过页面一键发布到应用市场,实现了业务定义应用模版的效果。让业务运行起来的过程就是定义模版的过程。也省去了再次验证模版的繁琐。最终发布到应用市场中的模版作为载体就能实现各类公有云、私有云场景下的交付。

image.png

上图就是微服务交付的完整流程开始用户通过源码镜像等拼装出整体应用,最后基于应用模型导出完整的应用模板,沉淀到应用市场,实现了像安装手机App一样的安装体验。

image.png上图为发布到应用市场的模板。在离线场景下可以导出应用模版包其包含了应用的元数据定义以及所有的镜像,用户在其他环境下一键导入,即可实现和原应用模版一致的安装体验


关于龙蜥峰会云原生专场课件获取方式:

【PPT 课件获取】:关注微信公众号(OpenAnolis),回复“龙蜥课件” 即可获取。有任何疑问请随时咨询龙蜥助手—小龙(微信:openanolis_assis)。


【视频回放】:视频回放可前往龙蜥官网https://openanolis.cn/video 查看。

lQLPJxbcF2cqM2TM-M0CnrCgW_7LDpyh1wNpqgFKAPsA_670_248.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
1493 62
|
6月前
|
人工智能 运维 Cloud Native
2025 云栖精选资料:《从云原生到 AI 原生核心技术与最佳实践》PPT 免费下载
一本合集,四大主题,覆盖 AI 原生技术的核心版图。立即获取,与行业领跑者同行,抢占 AI 原生时代的技术先机!
|
9月前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态
微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态
|
6月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
12月前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2025 年 3 月产品动态
微服务引擎 MSE 及云原生 API 网关 2025 年 3 月产品动态
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2025 年 2 月产品动态
微服务引擎 MSE 及云原生 API 网关 2025 年 2 月产品动态
|
7月前
|
存储 弹性计算 Cloud Native
云原生数据库的演进与应用实践
随着企业业务扩展,传统数据库难以应对高并发与弹性需求。云原生数据库应运而生,具备计算存储分离、弹性伸缩、高可用等核心特性,广泛应用于电商、金融、物联网等场景。阿里云PolarDB、Lindorm等产品已形成完善生态,助力企业高效处理数据。未来,AI驱动、Serverless与多云兼容将推动其进一步发展。
318 8
|
11月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
阿里云微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态