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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 杨轲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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
27天前
|
Cloud Native 数据处理 云计算
探索云原生技术在大数据分析中的应用
随着云计算技术的不断发展,云原生架构作为一种全新的软件开发和部署模式,正逐渐引起企业的广泛关注。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势与挑战,并探讨如何利用云原生技术提升大数据分析的效率和可靠性。
|
28天前
|
项目管理 微服务
云效常见问题之将多个微服务应用集成到一次研发流程中发布上线如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
25 0
|
28天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【2月更文挑战第31天】 随着数字化转型的加速,云原生技术已经成为推动企业IT架构现代化的关键力量。本文深入探讨了云原生架构的核心组件、实施策略以及面临的主要挑战。通过分析容器化、微服务、DevOps和持续集成/持续部署(CI/CD)等关键技术,揭示了如何利用这些技术实现敏捷性、可扩展性和弹性。同时,文章还讨论了企业在采纳云原生实践中可能遇到的安全性、复杂性和文化适应性问题,并提供了解决这些问题的策略和建议。
|
10天前
|
Cloud Native 安全 开发者
云原生技术的未来演进与应用展望
【4月更文挑战第9天】 随着企业数字化转型的不断深入,云原生技术以其独特的弹性、敏捷性和可扩展性成为推动创新的重要力量。本文将探讨云原生技术的发展趋势,分析其在各行各业中的应用前景,并针对未来的挑战提出相应的对策和建议。我们还将讨论如何利用云原生技术优化资源配置,提高业务连续性,并最终实现企业的技术升级和价值增长。
|
6天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
11 4
|
17天前
|
人工智能 Cloud Native 物联网
探索云原生技术的发展趋势与应用前景
在当今数字化时代,云原生技术已经成为企业数字化转型的核心驱动力之一。本文将深入探讨云原生技术的发展趋势和应用前景,分析其在大数据、人工智能、物联网等领域的应用,并探讨未来可能的发展方向。
11 1
|
21天前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
38 0
|
21天前
|
Cloud Native Dubbo 应用服务中间件
【Dubbo3技术专题】拥有新时代的通信协议,引领云原生迈向更高的舞台 | 解密Dubbo3是如何从微服务升华到云原生领域
【Dubbo3技术专题】拥有新时代的通信协议,引领云原生迈向更高的舞台 | 解密Dubbo3是如何从微服务升华到云原生领域
36 1
|
21天前
|
运维 Cloud Native 云计算
云原生技术在企业信息化中的应用与挑战
随着云计算技术的快速发展,云原生技术作为一种新兴的应用方式,正逐渐成为企业信息化转型中的热门话题。本文将探讨云原生技术在企业信息化中的应用现状、优势以及面临的挑战,并结合具体案例分析其实际效益和发展趋势。
15 3
|
25天前
|
消息中间件 Cloud Native 网络安全
云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE
该文档介绍了基于云原生应用的产品构建的微服务架构实践。