ToB企服应用市场:ToB评测及商务社交产业平台
标题:
云计算-云原生OAM概念
[打印本页]
作者:
大号在练葵花宝典
时间:
2024-7-24 11:09
标题:
云计算-云原生OAM概念
OAM
OAM,open application model是阿里巴巴和微软共同开辟的云原生应用规范模型。它使用来办理一个完备的面向业务场景的应用的题目。是一个尺度的、底子设施 无关的跨云应用摆设模型。有以下几个特性:
应用为先。一个应用的交付与摆设应该是自包罗的,其中的各类操作行为应该作为应用界说的一部分,这些内容与实际底子设施无关。
清晰和可扩展性。界说一套开放尺度,可以模块化整个应用交付流程,根据个 人需要将这些模块自由组装,告竣自己想要的结果。
云服务供应商无关。界说的开放尺度应该是一套更高级别的抽象,可以跨本地 集群、跨云服务供应商,不会被锁定到任何一个厂商的底座
OAM规范依照以下原则
关注点分离:根据功能和行为来界说模型,以此分别差别脚色的职责,
平台中立:OAM 的实现不绑定到特定平台;
优雅:只管减少设计复杂性;
复用性:可移植性好,同一个应用程序可以在差别的平台上不加改动地执行;
不作为编程模型:OAM 提供的是应用程序模型,描述了应用程序的组成和组件的拓扑布局,而不关注应用程序的具体实现。
OAM的基本对象
Component:OAM 中最底子的对象,该配置与底子设施无关,界说负载实例的运维特性。比方一个微服务 workload 的界说。
TraitDefinition:一个组件所需的运维计谋与配置,比方环境变量、Ingress、AutoScaler、Volume 等。(注意:该对象在 apiVersion: core.oam.dev/v1alpha1 中的名称为 Trait)。
ScopeDefinition:多个 Component 的共同边界。可以根据组件的特性大概作用域来分别 Scope,一个 Component 大概同时属于多个 Scope。
ApplicationConfiguration:将 Component(必须)、Trait(必须)、Scope(非必须)等组合到一起形成一个完备的应用配置。
OAM的工作原理
OAM Spec 界说了云原生应用的规范(使用一些 CRD 界说), KubeVela 可以看做是 OAM 规范的剖析器,将应用界说翻译为 Kubernetes 中的资源对象。可以将上图分为三个条理:
汇编层:即人工大概使用工具来根据 OAM 规范界说汇编出一个云原生应用的界说,其中包罗了该应用的工作负载和运维本领配置。
转义层:汇编好的文件将打包为 YAML 文件,由 KubeVela 或其他 OAM 的实现将其转义为 Kubernetes 或其他云服务(比方 Istio)上可运行的资源对象。
执行层:执行颠末转义好的云平台上的资源对象并执行资源配置。
参考管官网
OAM 官方网站 - oam.dev
kubevela
OAM应用,主要通过kubevela项目来实现
kubevela项目地点 模块界说(Definition) | KubeVela
核心概念
KubeVela 是一个开箱即用的现代化应用交付与管理平台,它使得应用在面向混淆云环境中的交付更简单、快捷。使用 KubeVela 的软件开辟团队,可以按需使用云原生本领构建应用,随着团队规模的发展、业务场景的变化扩展其功能,一次构建应用,随处运行。
KubeVela 的核心是将应用摆设所需的所有组件和各项运维动作,描述为一个同一的、与底子设施无关的“摆设操持”,进而实现在混淆环境中尺度化和高服从的应用交付。这使得最终用户无需关注底层细节,就可以使用丰富的扩展本领,并基于同一的概念自助式操作。
每一个应用摆设操持都由四个部分组成,分别是组件,运维本领,摆设计谋和工作流
登录后复制
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)
: 工作流由多个步骤组成,允许用户自界说应用在某个环境的交付过程。典型的工作流步骤包括人工考核、数据传递、多集群发布、通知等。
基于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状态
总结
OAM是一种全新的K8S业务交付方式,但是目前还不上主流,目前应用的不多
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4