应用管控
ADP底座的应用遵循OAM(开放应用模型)理念,根据ADP交付场景,针对产品的应用模型进行了增强,提供了面向产品终态的应用模型和对交付产品进行License授权管控。
功能概述
ADP底座针对应用管控提供了以下能力:
面向终态的产品部署,并可以统计产品及组件的部署状态和错误信息。
对于产品的license授权验证,展示产品的license状态及过期时间。
运维对象定义
在ADP底座中,主要定义了四类运维对象:
集群:cluster,集群整体
节点:node,物理机或者虚拟机
产品:product:对应具体业务产品或者名为adp的底座产品
组件:component,对应产品编排的具体组件实例,例如MySQL有MySQL-1和MySQL-2
为了更好筛选这些运维对象,我们给这些对象的所有资源,包括容器组、监控大盘、监控指标、告警策略等,都会打上相关的作用域标签:
adp.aliyuncs.com/scope-level:作用域级别,包括cluster/node/product/component
adp.aliyuncs.com/application-name:产品名称
adp.aliyuncs.com/component-name:组件名称
Spec定义
应用模型定义内容:
应用基础元数据
应用依赖的基础设施信息
平台信息
底座版本号
底座的组件列表
产品总的资源信息
应用的组件列表
组件基础元数据信息
组件workload(目前支持helm一种)
状态
应用状态
组件状态
应用模型定义示例:
apiVersion: app-operator.aliyun.com/v1
kind: Application
metadata:
name: demo
namespace: default
spec:
components:
- annotations:
namespace: default # 组件命名空间
groupReference:
name: redis # 组件helmchart名称
type: OFFICIAL # 组件分类
version: 2.1.0-1 # 组件helmchart版本
name: redis-redis # 组件实例名称
provider: harmonycloud.cn # 组件供应商
resourceVersion: 2.1.0-1
type: redis.redis # 组件类型
version: 5.0.8 # 组件应用版本
workload:
helm:
chartFile: helm_charts/harmonycloud.cn/redis.redis-5.0.8/ # helmchart路径
createNamespace: true
timeout: 100
values: cmVkaXM6CiAgcmVw== # helm release values
description: yinli.wangyl/Local开发环境 # 产品描述
infrastructure:
platform:
cluster:
apiVersion: sealos.aliyun.com/v1
kind: Cluster
metadata:
labels:
sealos: v1
name: trident
spec:
containerCIDR: 100.64.0.0/16
defaultStorageClass: yoda-lvm-default
dockerLogStorageSize: 200
dockerStorageSize: 200
dockerVersion: docker-ce-18.09.9
etcdDisk: /dev/vdc # etcd挂载设备
ingressDomainSuffix: aliyuncs.local
kubernetesVersion: v1.20.4-aliyun.1 # K8s版本
networkType: calico # 网络插件类型
resources: # 产品资源规划
- cpu:
required: 4
identifier: master
memory:
required: 8
publicIP:
bandwidth: 100
required: 1
replica: 3
storage:
- required: 50
type: ""
- required: 1000
type: ""
- required: 50
type: ""
- cpu:
required: 4
identifier: worker
memory:
required: 8
replica: 3
storage:
- required: 50
type: ""
- required: 1000
type: ""
storageDevice: /dev/vdb
svcCIDR: 10.96.0.0/16
yodaDevice: /dev/vdb3
code: trident
components:
- annotations:
namespace: acs-system
groupReference:
name: redis
type: OFFICIAL
version: 2.1.0-1
name: redis-operator
provider: harmonycloud.cn
resourceVersion: 2.1.0-1
type: redis.redis-operator
version: 2.1.0
workload:
helm:
chartFile: helm_charts/harmonycloud.cn/redis.redis-operator-2.1.0/
createNamespace: true
timeout: 100
values: cmVwbGljYUNvdW50OiAyCgpyZXNvdXJjZXM6CiAgbGltaXRzOgogICAgY3B1OiAyMDBtCiAgICBtZW1vcnk6IDUxMk1pCiAgcmVxdWVzdHM6CiAgICBjcHU6IDEwMG0KICAgIG1lbW9yeTogMjU2TWk=
kubeVersion: "v1.20.4-aliyun.1" # K8s版本
pkgURL: ""
version: "1.13.0" # ACK-Distro版本
name: demo # 产品名称
version: latest # 产品版本
versionDescription: demo产品 # 产品版本描述
status:
components:
redis-operator:
state: Running # 组件部署状态,Pending:部署中/Running:运行中/Exception:异常
redis-redis:
state: Exception
message: workloadInstallFailed # 组件部署错误信息
phase: Running # 产品部署状态
verification: # license验证信息
expireTime: "2022-09-04T11:39:25Z" # license过期时间
info: '{"instances":{"harmonycloud.cn_redis":"1"}}' # 环境实例信息
message: "" # license验证错误信息
status: OnTrial # license授权状态,OnTrail:试用期/Valid:有效/Invalid:无效
运维场景
应用模型主要用于业务产品、ADP底座、解决方案多产品部署等三个场景。
应用模型的主要运用场景就是业务产品的部署及管控,我们可以通过产品名称查看application cr,并了解产品部署的组件实例及环境信息。
目前ADP底座也是一个产品,可以查询命名为adp的application cr,可以通过如下命令查询底座版本:
kubectl get app adp -n acs-system -ojsonpath='{.spec.version}'
ADP底座支持多产品部署,包括支持一个解决方案的多个产品部署的场景。多个产品共享同一运维基础设施。