云计算-云原生OAM概念
OAMOAM,open application model是阿里巴巴和微软共同开辟的云原生应用规范模型。它使用来办理一个完备的面向业务场景的应用的题目。是一个尺度的、底子设施 无关的跨云应用摆设模型。有以下几个特性:
[*]应用为先。一个应用的交付与摆设应该是自包罗的,其中的各类操作行为应该作为应用界说的一部分,这些内容与实际底子设施无关。
[*]清晰和可扩展性。界说一套开放尺度,可以模块化整个应用交付流程,根据个 人需要将这些模块自由组装,告竣自己想要的结果。
[*]云服务供应商无关。界说的开放尺度应该是一套更高级别的抽象,可以跨本地 集群、跨云服务供应商,不会被锁定到任何一个厂商的底座
OAM规范依照以下原则
[*]关注点分离:根据功能和行为来界说模型,以此分别差别脚色的职责,
[*]平台中立:OAM 的实现不绑定到特定平台;
[*]优雅:只管减少设计复杂性;
[*]复用性:可移植性好,同一个应用程序可以在差别的平台上不加改动地执行;
[*]不作为编程模型:OAM 提供的是应用程序模型,描述了应用程序的组成和组件的拓扑布局,而不关注应用程序的具体实现。
https://img-blog.csdnimg.cn/img_convert/53a78e726cdaf3d66d4b90154af33d04.png
OAM的基本对象
[*]Component:OAM 中最底子的对象,该配置与底子设施无关,界说负载实例的运维特性。比方一个微服务 workload 的界说。
[*]TraitDefinition:一个组件所需的运维计谋与配置,比方环境变量、Ingress、AutoScaler、Volume 等。(注意:该对象在 apiVersion: core.oam.dev/v1alpha1 中的名称为 Trait)。
[*]ScopeDefinition:多个 Component 的共同边界。可以根据组件的特性大概作用域来分别 Scope,一个 Component 大概同时属于多个 Scope。
[*]ApplicationConfiguration:将 Component(必须)、Trait(必须)、Scope(非必须)等组合到一起形成一个完备的应用配置。
https://img-blog.csdnimg.cn/img_convert/dfc4488574fe01289aa7cdb2e0274ec5.png
OAM的工作原理
https://img-blog.csdnimg.cn/img_convert/4b3e4a5200a525bd2ee8352d309fdf82.png
OAM Spec 界说了云原生应用的规范(使用一些 CRD 界说), KubeVela 可以看做是 OAM 规范的剖析器,将应用界说翻译为 Kubernetes 中的资源对象。可以将上图分为三个条理:
[*]汇编层:即人工大概使用工具来根据 OAM 规范界说汇编出一个云原生应用的界说,其中包罗了该应用的工作负载和运维本领配置。
[*]转义层:汇编好的文件将打包为 YAML 文件,由 KubeVela 或其他 OAM 的实现将其转义为 Kubernetes 或其他云服务(比方 Istio)上可运行的资源对象。
[*]执行层:执行颠末转义好的云平台上的资源对象并执行资源配置。
参考管官网
[*] OAM 官方网站 - oam.dev
kubevela
OAM应用,主要通过kubevela项目来实现
kubevela项目地点 模块界说(Definition) | KubeVela
核心概念
KubeVela 是一个开箱即用的现代化应用交付与管理平台,它使得应用在面向混淆云环境中的交付更简单、快捷。使用 KubeVela 的软件开辟团队,可以按需使用云原生本领构建应用,随着团队规模的发展、业务场景的变化扩展其功能,一次构建应用,随处运行。
https://img-blog.csdnimg.cn/img_convert/917970ff90852ab3489837f141b8c2db.png
KubeVela 的核心是将应用摆设所需的所有组件和各项运维动作,描述为一个同一的、与底子设施无关的“摆设操持”,进而实现在混淆环境中尺度化和高服从的应用交付。这使得最终用户无需关注底层细节,就可以使用丰富的扩展本领,并基于同一的概念自助式操作。
https://img-blog.csdnimg.cn/img_convert/f7ea266c181bd014836ef8128be6376d.png
每一个应用摆设操持都由四个部分组成,分别是组件,运维本领,摆设计谋和工作流
登录后复制 apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: <name>
spec:
components:
- name: <component name>
type: <component type>
properties:
<parameter values>
traits:
- type: <trait type>
properties:
<traits parameter values>
- name: <component name>
type: <component type>
properties:
<parameter values>
policies:
- name: <policy name>
type: <policy type>
properties:
<policy parameter values>
workflow:
- name: <step name>
type: <step type>
properties:
<step parameter values>
[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
[*]6.
[*]7.
[*]8.
[*]9.
[*]10.
[*]11.
[*]12.
[*]13.
[*]14.
[*]15.
[*]16.
[*]17.
[*]18.
[*]19.
[*]20.
[*]21.
[*]22.
[*]23.
[*]24.
[*]25.
[*]26.
[*]27.
[*]28.
这个 Application 对象会引用 component、trait、policy 以及 workflow step 的范例,这些范例背后是平台构建者(运维团队)维护的可编程模块。可以看到,这种抽象的方式是高度可扩展、可定制的。
[*]组件(Component): 组件界说一个应用包罗的待交付制品(二进制、Docker 镜像、Helm Chart...)或云服务。我们认为一个应用摆设操持摆设的是一个微服务单元,内里主要包罗一个核心的用于频繁迭代的服务,以及一组服务所依靠的中间件集合(包罗数据库、缓存、云服务等),一个应用中包罗的组件数量应该控制在约 15 个以内。
[*]运维特征(Trait): 运维特征是可以随时绑定给待摆设组件的、模块化、可拔插的运维本领,比如:副本数调解(手动、自动)、数据持久化、 设置网关计谋、自动设置 DNS 剖析等。
[*]应用计谋(Policy): 应用计谋负责界说指定应用交付过程中的计谋,比如多集群摆设的差异化配置、资源放置计谋、安全组计谋、防火墙规则、SLO 目标等。
[*]工作流步骤(Workflow Step): 工作流由多个步骤组成,允许用户自界说应用在某个环境的交付过程。典型的工作流步骤包括人工考核、数据传递、多集群发布、通知等。
https://img-blog.csdnimg.cn/img_convert/ab3901e4a88328a5cd0f11600d42551b.png
基于k8s安装
要求,
[*]Kubernetes cluster >= v1.19 && <= v1.26
登录后复制 curl-fsSl https://kubevela.io/script/install.sh | bash
vela install
[*]1.
[*]2.
VelaUX 是 KubeVela 的仪表板。 它是在你的集群中运行的 Web 应用程序。 你可以使用浏览器访问它。 假如你不使用 KubeVela 的 UI 控制台,这是可选的
摆设应用
在k8s上摆设应用举例
登录后复制 apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: app-with-k8s-objects
namespace: default
spec:
components:
- name: k8s-demo-service
properties:
objects:
- apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
strategy:
type: Recreate
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
- apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: nlb
labels:
app: nginx
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
type: k8s-objects
policies:
- name: topology-default
type: topology
properties:
clusters: ['local']
namespace: default
- name: topology-production
type: topology
properties:
clusters: ['local']
namespace: production
workflow:
steps:
- name: deploy2default
properties:
policies: ['topology-default']
type: deploy
- name: suspend
type: suspend
- name: deploy2production
properties:
policies: ['topology-production']
type: deploy
[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
[*]6.
[*]7.
[*]8.
[*]9.
[*]10.
[*]11.
[*]12.
[*]13.
[*]14.
[*]15.
[*]16.
[*]17.
[*]18.
[*]19.
[*]20.
[*]21.
[*]22.
[*]23.
[*]24.
[*]25.
[*]26.
[*]27.
[*]28.
[*]29.
[*]30.
[*]31.
[*]32.
[*]33.
[*]34.
[*]35.
[*]36.
[*]37.
[*]38.
[*]39.
[*]40.
[*]41.
[*]42.
[*]43.
[*]44.
[*]45.
[*]46.
[*]47.
[*]48.
[*]49.
[*]50.
[*]51.
[*]52.
[*]53.
[*]54.
[*]55.
[*]56.
[*]57.
[*]58.
[*]59.
[*]60.
[*]61.
[*]62.
[*]63.
[*]64.
[*]65.
[*]66.
[*]67.
[*]68.
[*]69.
[*]70.
[*]71.
[*]72.
[*]73.
[*]74.
登录后复制 #部署应用
$ vela up -f https://kubevela.io/example/applications/app-with-k8s-objects.yaml
#执行审核
$ vela workflow resume app-with-k8s-objects
[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
这里没有使用 velaux 插件,而是是在贸易k8s平台上可以更加简洁直观的看到OAM状态
https://img-blog.csdnimg.cn/img_convert/684a7afe6c4d48b75616c1e3c5c66c49.png
https://img-blog.csdnimg.cn/img_convert/75737a30a0b138d78366bdde7c7dbeb3.png
https://img-blog.csdnimg.cn/img_convert/00b05226ef73f1e192f1184fdfb8529a.png
总结
OAM是一种全新的K8S业务交付方式,但是目前还不上主流,目前应用的不多
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]