应用管控

更新时间: 2022-12-01 18:07:54

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底座支持多产品部署,包括支持一个解决方案的多个产品部署的场景。多个产品共享同一运维基础设施。

上一篇: 开发指南 下一篇: 监控告警
阿里云首页 云原生应用交付平台 相关技术圈