
# CCE容器存储插件（Everest）
#### 插件介绍
CCE容器存储（Everest）插件基于CSI（即Container Storage Interface）为Kubernetes 集群对接云存储服务的能力。
#### 字段说明
表1参数描述 
| 参数     | 是否必选 | 参数类型                                            | 描述             |
|:---|:---|:---|:---|
| basic  | 否    | object                                          | 插件基础配置参数，无需指定。 |
| flavor | 是    | [表2] object      | 插件规格参数         |
| custom | 是    | [表3] object | 插件自定义参数        |
   
 表2flavor 
| 参数          | 是否必选 | 参数类型                                                | 描述              |
|:---|:---|:---|:---|
| description | 否    | String                                              | 插件相关的描述信息       |
| name        | 是    | String                                              | 插件规格名称          |
| replicas    | 是    | String                                              | 实例数，默认为：1       |
| resources   | 是    | [resources] object | 容器资源（CPU、内存）配额。 |
   
 表3custom 
| 参数                                 | 是否必选 | 参数类型                                             | 描述                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| default_vpc_id                     | 是    | String                                           | 当前VPC ID                                                                                                                                                                                                     |
| cluster_id                         | 是    | String                                           | 当前集群ID                                                                                                                                                                                                       |
| cluster_name                       | 是    | String                                           | 当前集群名称                                                                                                                                                                                                       |
| project_id                         | 是    | String                                           | 当前项目ID                                                                                                                                                                                                       |
| disable_auto_mount_secret          | 否    | bool                                             | 是否允许obs挂载时使用默认的aksk 默认false                                                                                                                                                    |
| over_subscription                  | 否    | String                                           | localpv超分比 默认 80                                                                                                                                                               |
| csi_attacher_detach_worker_threads | 否    | String                                           | 处理卸卷操作的 worker 的并发数目 默认 60                                                                                                                                                    |
| volume_attaching_flow_ctrl         | 否    | String                                           | attach流控数据 默认为0                                                                                                                                                                |
| number_of_reserved_disks           | 否    | String                                           | 预留给非容器场景的挂盘能力 默认为6                                                                                                                                                                |
| flow_control                       | 否    | Map\<String\>string                              | 流控参数 默认为 {}                                                                                                                                                                      |
| enable_node_attacher               | 否    | bool                                             | 是否启动 agent attacher 默认为false                                                                                                                                                   |
| multiAZEnabled                     | 否    | bool                                             | 插件中deployment组件多可用部署是否采用强制模式，默认：false。强制模式下插件Deployment实例强制调度到不同可用区的节点上，如集群下节点不满足多可用区，插件实例将无法全部运行。若multiAZEnable与multiAZBalance配置也同时为true，则以multiAZBalance为准使用多可用部署均分模式。  |
| multiAZBalance                     | 否    | bool                                             | 插件中deployment组件多可用部署是否采用均分模式，默认：false。插件Deployment实例均匀调度到当前集群下各可用区，增加新的可用区后建议扩容插件实例以实现跨可用区高可用部署；均分模式限制不同可用区间插件实例数相差不超过1，单个可用区资源不足会导致后续其他实例无法调度。                         |
| tolerations                        | 否    | Array of [表5]  | 污点容忍配置。                                                                                                                                                                                                      |
| node_match_expressions             | 否    | Array of [表6] | 插件实例亲和性配置                                                                                                                                                                                                    |
| agencyConfigurations               | 否    | Array of [表7]    | 插件配置的委托信息                                                                                                                                                                                                    |
   
 表4resources字段数据结构说明 
| 参数          | 是否必选 | 参数类型   | 描述                                                   |
|:---|:---|:---|:---|
| limitsCpu   | 是    | String | CPU大小限制，单位：m                                         |
| limitsMem   | 是    | String | 内存大小限制，单位：Mi                                         |
| name        | 是    | String | 插件名称，固定为 everest-csi-controller / everest-csi-driver |
| requestsCpu | 是    | String | 申请的CPU大小，单位：m                                        |
| requestsMem | 是    | String | 申请的内存大小，单位：Mi                                        |
   
 表5tolerations污点 
| 参数                | 是否必选 | 参数类型   | 描述    |
|:---|:---|:---|:---|
| key               | 否    | String | 污点键   |
| effect            | 否    | String | 污点策略  |
| operator          | 否    | String | 操作符   |
| tolerationSeconds | 否    | Int    | 容忍时间窗 |
   
 表6nodeMatchExpression节点亲和配置 
| 参数       | 是否必选 | 参数类型           | 描述      |
|:---|:---|:---|:---|
| key      | 否    | String         | 污点键     |
| values   | 否    | List\<String\> | 节点亲和的名称 |
| operator | 否    | String         | 操作符     |
   
 表7agencyConfigurations插件委托配置 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| module     | 否    | String | 固定为everest-csi-controller和everest-csi-driver，不能修改 - everest-csi-controller：表示为everest-csi-controller组件设置委托。  - everest-csi-driver：表示为everest-csi-driver组件设置委托。   |
| agencyName | 否    | String | 委托名称                                                                                                                                                                                                                                                                                                                                            |
   
#### 请求示例
```
{
  "kind": "Addon",
  "apiVersion": "v3",
  "metadata": { "annotations": { "addon.install/type": "install" } },
  "spec": {
    "clusterID": "cea63ae5-df9b-11ee-9f27-0255ac1001b2",
    "version": "2.4.4",
    "addonTemplateName": "everest",
    "values": {
      "basic": {
        "bms_url": "bms.***.com",
        "driver_init_image_version": "2.4.4",
        "ecsEndpoint": "https://ecs.***.com",
        "everest_image_version": "2.4.4",
        "evs_url": "evs.***.com",
        "iam_url": "iam.***.com",
        "ims_url": "ims.***.com",
        "obs_url": "obs.***.com",
        "platform": "linux-amd64",
        "sfs30_url": "obs.***.com",
        "sfs_turbo_url": "sfs-turbo.***.com",
        "sfs_url": "sfs.***.com",
        "supportHcs": false,
        "swr_addr": "swr.***.com",
        "swr_user": "hwofficial",
        "rbac_enabled": true,
        "cluster_version": "v1.23"
      },
      "flavor": {
        "description": "High available",
        "is_default": true,
        "name": "HA50",
        "recommend_cluster_flavor_types": ["small"],
        "replicas": 2,
        "resources": [
          {
            "limitsCpu": "250m",
            "limitsMem": "600Mi",
            "name": "everest-csi-controller",
            "requestsCpu": "250m",
            "requestsMem": "600Mi"
          },
          {
            "limitsCpu": "300m",
            "limitsMem": "300Mi",
            "name": "everest-csi-driver",
            "requestsCpu": "300m",
            "requestsMem": "300Mi"
          }
        ],
        "category": ["CCE", "Turbo"]
      },
      "custom": {
        "annotations": {},
        "cluster_id": "",
        "cluster_name": "",
        "csi_attacher_detach_worker_threads": "60",
        "csi_attacher_worker_threads": "60",
        "default_vpc_id": "",
        "disable_auto_mount_secret": false,
        "enable_node_attacher": false,
        "flow_control": {},
        "multiAZBalance": false,
        "multiAZEnabled": false,
        "node_match_expressions": [],
        "number_of_reserved_disks": "6",
        "over_subscription": "80",
        "project_id": "",
        "tolerations": [
          {
            "key": "node.kubernetes.io/not-ready",
            "operator": "Exists",
            "effect": "NoExecute",
            "tolerationSeconds": 60
          },
          {
            "key": "node.kubernetes.io/unreachable",
            "operator": "Exists",
            "effect": "NoExecute",
            "tolerationSeconds": 60
          }
        ],
        "volume_attaching_flow_ctrl": "0"
      }
    }
  }
}
```
