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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 杨轲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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
7天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
31 5
|
10天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
8天前
|
Kubernetes 负载均衡 Cloud Native
云原生架构下的微服务治理策略
随着云原生技术的不断成熟,微服务架构已成为现代应用开发的主流选择。本文探讨了在云原生环境下实施微服务治理的策略和方法,重点分析了服务发现、负载均衡、故障恢复和配置管理等关键技术点,以及如何利用Kubernetes等容器编排工具来优化微服务的部署和管理。文章旨在为开发者提供一套实用的微服务治理框架,帮助其在复杂的云环境中构建高效、可靠的分布式系统。
24 5
|
8天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
8天前
|
Cloud Native API 持续交付
云原生之旅:从容器到微服务的演进之路
【10月更文挑战第39天】在这篇文章中,我们将一起探索云原生技术的奥秘。通过浅显易懂的语言和生动的比喻,我们将了解云原生技术如何改变软件开发的世界。文章将带领读者从容器的基本概念出发,逐步深入到微服务架构的实践,揭示这些技术如何助力现代应用的快速迭代与可靠部署。准备好,让我们启程进入云原生的精彩世界吧!
|
9天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
9天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
9天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代软件开发中的应用与挑战
【10月更文挑战第37天】随着云计算技术的不断演进,云原生技术已经成为推动软件开发现代化的重要力量。本文将深入探讨云原生技术的核心概念、优势以及面临的挑战,并通过一个实际的代码示例,展示如何在云原生环境中部署一个简单的应用。我们将从云原生的基础架构出发,逐步引导读者理解其在现代软件开发中的关键作用。
22 1
|
10天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
下一篇
无影云桌面