SREWorks云原生数智运维工程实践-Kubernetes 资源编排篇-Kubernetes 资源编排之五:OAM 篇(上)

本文涉及的产品
资源编排,不限时长
简介: SREWorks云原生数智运维工程实践-

Kubernetes资源编排之:OAM篇

 

作者:雪尧郭耀星)、炯思钟炯恩

 

前文我们提到了Helm/Kustomize/CRD+Operator这些方式,都可以在各自的领域很好的承载一个组件Component的概念。但是都没有解决一个完整的面向业务场景的应用Application的问题。

 

OAMOpen Application Model是2019年阿里云与微软联合推出的开放应用模型。下面我们来看这个模型是什么。

 

一、 OAM是什么?

 

在应用部署上,大家或多或少有过一些这样的经历:面对复杂的K8S YAML手足无措,有些字段能理解含义,有些字段光在字面上无法确认影响,有些字段提交修改就报错,提示这个字段不可被修改。如果说k8s内置资源的字段基本都还有迹可循的话,通过CRD+Operator创建的自定义资源的字段都会放飞自我,连文档都找不到。那么这些YAML能不能做得像乐高积木一样呢?既能自由地插拔创造发挥,又有一些限制约束,使得创意不会太剑走偏锋,让使用者也能快速理解其中的作用和价值。

 

于是OAM应运而生。OAM(Open Application Model)是一个标准的、基础设施无关的跨云应用部署模型。有以下几个特性:

 

应用为先。一个应用的交付与部署应该是自包含的,其中的各类操作行为应该作为应用定义的一部分,这些内容与实际基础设施无关。

清晰和可扩展性。定义一套开放标准,可以模块化整个应用交付流程,根据个人需要将这些模块自由组装,达成自己想要的结果。

云服务供应商无关。定义的开放标准应该是一套更高级别的抽象,可以跨本地集群、跨云服务供应商,不会被锁定到任何一个厂商的底座。

 

其实上面这些点写几个Operator也都能解决,但OAM的亮点在于他并不是一个程序的实现,他是一个文字定义的标准,大家只要依照这个标准去落地,就能把已有的东西整合起来发挥作用。下面来看一下OAM模型抽象:

 

image.png

 

如上图所示,OAM将一个模型分成了Application应用、Component组件、Trait运维特征这样几层,于是相关角色的关注点也都被巧妙地分解开来,各角色只要聚焦于自己的内容就能一起协作完成一个复杂的应用工程,如下图所示:

 

image.png 

 

应用开发人员:负责组件Component的定义及研发。

应用运维人员:

 

定义适用于不同Workload的运维属性Trait和管Component的ApplicationScopeor Policy)。

将应用开发人员定义好的Component与运维属性Trait绑定在一起,辅以Policy+Workflow,生成Application,提交到Runtime实现,维护应用程序的生命周期

 

基础设施运维人员:提供不同的Workload类型映射到实际的基础设施。

 

OAM通过一系列概念的定义,完成了对一个应用的抽象,实现了角色职责的分离,将应用交付这件事情与底座解耦,使得跨云快速交付应用成为可能。开发同学也不再关心底座实现细节,只关心自己的应用模型即可。OAM的诞生,旨在定义云原生应用标准。

 

OAM只是一纸协议,并没有应用/组件管理的能力,但它却定义了一个良好的管理应用/组件的系统应该是什么样子,通过一套统一的概念收拢社区中分散在各处的垂直能力工具。下面我们就来讲讲SREWorks如何基于这个协议构建完整的云原生运维生态。

 

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
15天前
|
运维 Kubernetes Cloud Native
云原生技术入门及实践
【10月更文挑战第39天】在数字化浪潮的推动下,云原生技术应运而生,它不仅仅是一种技术趋势,更是企业数字化转型的关键。本文将带你走进云原生的世界,从基础概念到实际操作,一步步揭示云原生的魅力和价值。通过实例分析,我们将深入探讨如何利用云原生技术提升业务灵活性、降低成本并加速创新。无论你是云原生技术的初学者还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
6天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
8天前
|
Cloud Native 安全 Docker
云原生技术在现代应用部署中的实践与思考
本文深入探讨了云原生技术如何在现代应用部署中发挥关键作用,并提供了具体的代码示例来展示其实现。通过分析云原生的核心概念和优势,我们将了解如何利用这些技术来提高应用的可扩展性、可靠性和安全性。文章还将讨论云原生技术的未来发展趋势,以及如何将其应用于实际项目中,以实现更高效和灵活的应用部署。
|
15天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
42 5
|
15天前
|
弹性计算 Kubernetes Cloud Native
云原生技术的实践与思考
云原生技术的实践与思考
30 2
|
16天前
|
运维 Kubernetes Cloud Native
云原生技术在现代应用架构中的实践与挑战####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在实际项目中的应用案例,分析了企业在向云原生转型过程中面临的主要挑战及应对策略。不同于传统摘要的概述性质,本摘要强调通过具体实例揭示云原生技术如何促进应用的灵活性、可扩展性和高效运维,同时指出实践中需注意的技术债务、安全合规等问题,为读者提供一幅云原生技术实践的全景视图。 ####
|
4天前
|
Cloud Native 持续交付 云计算
云计算的转型之路:探索云原生架构的崛起与实践####
随着企业数字化转型加速,云原生架构以其高效性、灵活性和可扩展性成为现代IT基础设施的核心。本文深入探讨了云原生技术的关键要素,包括容器化、微服务、持续集成/持续部署(CI/CD)及无服务器架构等,并通过案例分析展示了这些技术如何助力企业实现敏捷开发、快速迭代和资源优化。通过剖析典型企业的转型经历,揭示云原生架构在应对市场变化、提升业务竞争力方面的巨大潜力。 ####
15 0
|
15天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
17天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
18天前
|
消息中间件 存储 Cloud Native
云原生架构下的数据一致性挑战与应对策略####
本文探讨了在云原生环境中,面对微服务架构的广泛应用,数据一致性问题成为系统设计的核心挑战之一。通过分析云原生环境的特点,阐述了数据不一致性的常见场景及其对业务的影响,并深入讨论了解决这些问题的策略,包括采用分布式事务、事件驱动架构、补偿机制以及利用云平台提供的托管服务等。文章旨在为开发者提供一套系统性的解决方案框架,以应对在动态、分布式的云原生应用中保持数据一致性的复杂性。 ####