参数配置说明
基础参数
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| name | string | 必选 | - | IaC3.0资源名 | 只能包括数字、字母、'-'、'_'、'.',必须以字母开头,字母或数字结尾。长度2-64。 说明: 如果没有配置clusterName,则资源名会被当作微服务集群名,参数规范则会以微服务集群名的为准。 | WiseCloudFGCEventBuilderService_cluster1 |
| type | string | 必选 | - | BaaS服务类型,operator要求必填,固定为WiseCloud::MicroService::NuwaContainer | 固定为WiseCloud::MicroService::NuwaContainer | WiseCloud::MicroService::NuwaContainer |
| microserviceName | string | 必选 | - | 微服务名称 | 微服务名称 | WiseCloudFGCEventBuilderService |
| clusterName | string | 非必选 (建议填写) | 默认与name值相同 | 微服务集群名 | 只能包括数字、字母、'-'、'_'、'.',必须以字母开头,字母或数字结尾。长度2-56。 说明: 不填与name值相同,由于两字段限制不同,超过限制会报错。 | cluster1 |
| replicas | int | 必选 | - | Pod副本数 | 整数类型 说明:
| 1 |
| pdbMaxUnavailable | string | 非必选 | - | Pod干扰预算 | 整数百分比,整数范围为[1, 50] | - |
| terminationGracePeriodSeconds | integer | 非必选 | - | 优雅下线宽限期 | 1-65535 | - |
示例:
- name: WiseCloudFGCEventBuilderService_cluster1
type: WiseCloud::MicroService::NuwaContainer
properties:
microserviceName: WiseEyeChaosMonkeyExecutor
clusterName: cluster1
replicas: 5 挂载信息
示例:
- name: WiseCloudFGCEventBuilderService_cluster1
type: WiseCloud::MicroService::NuwaContainer
properties:
volumes:
- name: log_volume
size: 12Gi
type: local
- name: data_volume
size: 2Gi
type: local 容器配置
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| image | string | 必选 | - | 镜像地址 Runtime已预置如下镜像仓库地址,如果业务是从如下镜像仓库地址下载镜像,则只需要从组织名开始填写。 北京四:swr.cn-north-4.myhuaweicloud.com | 长度:1-256 说明: 镜像仓库(:前的一串)只能是小写。 | - |
| ports | int[] | 可选 | 0 | 如果使用Cloud Map,将此端口填写为在Cloud Map注册中心注册的端口 如果不使用Cloud Map,可将此项注释掉或者填写为0。 此参数只是起一个标识作用,并不是代表配置了此端口就代表端口一定打开。实际打开的端口以业务使用的为准,目前仅支持一个端口配置,数组类型是为后面可扩展。 | 端口范围:0-65535 | ports: - 8080 |
| flavor | string | - | "2C4Gi" | 主容器CPU&memory的规格 | 长度范围:1-32。需要满足CPU和memory的规格,比如1C2G,2C4G,4C8G,8C16G等。 | flavor: 2C4G |
| armFlavor | string | 可选 | "2C4Gi" | 参考flavor 双AZ arm混部时独立控制arm配置 arm配置建议: 按照业内通用的指导,arm cpu算力相对于x86下降,具体下降指标和使用场景密切相关。 对于计算密集型的业务,可以考虑增加配置,IO密集型可以同规格,具体性能还是以各自业务的实际性能测试为准。 | 同上 | 同上 |
| gpu | int | 可选 | null | 主容器使用的GPU规格(GPU即显卡);当前ERS管理的资源池中尚未提供GPU。 | 取值为整数,配1代表占用一块显卡,显卡不可分割。 | - |
| stsEnable | bool | 可选 | TRUE | 是否启用sts | - | TRUE |
| commandArgs | list(string) | 可选 | [] | 启动参数 | 长度为0-256 | - |
| volumeMounts | list(object) | 可选 | [] | 此参数与volumes下的sfs挂载卷搭配使用,volumes中定义挂载卷的信息,此处引用并挂载在容器中运行 | name要在volumes中有对应的值。 | volumeMounts: - name: sfs_volume1 mountPath: /opt/huawei/sfs1 - name: sfs_volume2 mountPath: /opt/huawei/sfs2 |
| envs | type = list(object({ name = string value = string })) | 可选 | [] | 配置环境变量 | name和value的长度为不超过5000。 | envs: - name: "EVS_TEST" value: "test_ENV" |
| hostAliases | type = list(object({ hostName = string ip = string })) | 可选 | [] | 配置hosts | - | hostAliases: - hostName: "a.b.com" ip:"1:1:1:1:1:1:1:1" - hostName: "c.d.com" ip:"2.2.2.2" |
为保证业务容器的稳定运行和资源利用率的提升,建议业务容器采用标准化容器规格,标准容器规格如表4所示。
| vCPU (cpu request) | Memory, GiB (memory request/limit) | cpu和内存配比 | 备注 |
|---|---|---|---|
| 0.5 | 500M、1、2、4 | 1:1、1:2、1:4、1:8 | X86和ARM |
| 1u | 1、2、4、8 | 1:1、1:2、1:4、1:8 | X86和ARM |
| 2u | 2、4、8、16 | 1:1、1:2、1:4、1:8 | X86和ARM |
| 3u | 3、6、12、24 | 1:1、1:2、1:4、1:8 | ARM专属规格 |
| 4u | 4、8、16、32 | 1:1、1:2、1:4、1:8 | X86和ARM |
| 6u | 6、12、24、48 | 1:1、1:2、1:4、1:8 | ARM专属规格 |
| 8u | 8、16、32 | 1:1、1:2、1:4 | X86和ARM |
| 12u | 12、24、48 | 1:1、1:2、1:4 | ARM专属规格 |
| 14u | 14、28、52 | 1:1、1:2、1:4(3.714) | X86和ARM |
| 22U | 22、44、76 | 1:1、1:2、1:4(3.45) | ARM专属规格 |
| 28U | 28、56、104 | 1:1、1:2、1:4(3.714) | X86和ARM |
| 42U | 42、84、150 | 1:1、1:2、1:4(3.571) | ARM专属规格 |
- 16C的规格请降低为14C,大于等于64G的内存请降低为52G或者48G。14C52G是标准规格,是从节点的分配率考虑的。
- 如果要使用0.5G的内存,需要在IaC里面配置为500M,不能配置为0.5G。
- 最小组网:CPU规格<=1u,且双AZ POD数量<=6个。
示例1(双AZ同构,或者不同构但同配置):
- name: WiseCloudFGCEventBuilderService_cluster1
type: WiseCloud::MicroService::NuwaContainer
properties:
containers:
- image: swr.cn-north-4.myhuaweicloud.com/wiseeye/wiseeyechaosmonkeyservicewebsite:3.0.9.204.SP2
flavor: 2C8G
stsEnable: true
ports:
- 8080 示例2(arm、x86混部时,独立配置flavor):
- name: WiseCloudFGCEventBuilderService_cluster1
type: WiseCloud::MicroService::NuwaContainer
properties:
containers:
- image: swr.cn-north-4.myhuaweicloud.com/wiseeye/wiseeyechaosmonkeyservicewebsite:3.0.9.204.SP2
flavor: 2C8G
armFlavor: 4C16G
stsEnable: true
ports:
- 8080 容器健康检查
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| readinessProbe: exec: command: | list(string) | 必须配置其中一种,且只能配置一种 | [] | 命令行检查方式 | 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 | readinessProbe: exec: command: ["echo", "hello"] |
| readinessProbe: httpGet: | object | - | http请求检查方式 | 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 | readinessProbe: httpGet: path: /health port: 8080 scheme: HTTP | |
| readinessProbe: tcpSocket: port: | int | - | tcp端口检查 | 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 | readinessProbe: tcpSocket: port:8080 | |
| livenessProbe: exec: command: | list(string) | 必须配置其中一种,且只能配置一种 | [] | 命令行检查方式 | 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 | livenessProbe: exec: command: ["echo", "hello"] |
| livenessProbe: httpGet: | object | - | http请求检查方式 | 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 | livenessProbe: httpGet: path: /health.html port: 8080 scheme: HTTP | |
| livenessProbe: tcpSocket: port: | int | - | tcp端口检查 | 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 | livenessProbe: tcpSocket: port:8080 | |
| initialDelaySeconds | int | 可选 | 10s | 表示容器启动多少秒之后开始探测,单位秒。默认值为10s。 | 不小于5 | readinessProbe: exec: command: ["echo", "hello"] initialDelaySeconds: 10 periodSeconds: 20 successThreshold :1 failureThreshold: 3 timeoutSeconds:5 |
| periodSeconds | int | 可选 | 20s | 间隔周期,表示每多少秒探测一次容器,单位秒,默认值为20s。 | 不大于180 | |
| successThreshold | int | 可选 | 1 | 表示连续检测多少次成功后则记作成功。默认值为1。 | 不大于10,liveness探针只能为1。 | |
| failureThreshold | int | 可选 | 3 | 表示连续检测多少次失败当作是失败处理,并会重启容器。默认值为3。 | 不大于10 |
示例:
livenessProbe:
httpGet:
path: /health
port: 8080
scheme: HTTP
initialDelaySeconds: 20
timeoutSeconds: 3
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8080
scheme: HTTP
initialDelaySeconds: 20
timeoutSeconds: 3
periodSeconds: 10
successThreshold: 1
failureThreshold: 10
- name: APIGateway
type: WiseCloud::Agent::APIGateway
version: x.x.x.x
flavor: 1C2G
param:
$ref: 'config/sidecar_apigw_param.json sidecar配置
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| sidecars | type = list(object) | - | [] | 由于POD销毁或被驱逐时,日志文件会丢失,因此AIOps Log Sidecar为必选参数,需要业务配置此sidecar及时将日志进行采集。 | 详见代码示例,按照业务需求配置所需的sidecar。 |
示例:
sidecars:
- name: AIOpsLog
type: WiseCloud::Agent::AIOpsLog
version: 3.3.0.100
flavor: 0.4C500M
param:
$ref: 'config/sidecar_aiops_param.json'
- name: RASP
type: WiseCloud::Agent::RASP
version: 2.2.0.102.SP5
flavor: 0.3C500M
param: ''
- name: BIFlume
type: WiseCloud::Agent::BIFlume
version: x.x.x.x
flavor: 0.2C500M
param:
$ref: 'config/sidecar_biflume_param.json'
- name: APIGateway
type: WiseCloud::Agent::APIGateway
version: x.x.x.x
flavor: 1C2G
param:
$ref: 'config/sidecar_apigw_param.json 网络配置
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| isolatedDomain | string | 可选 | - | 隔离域 | 只有CCE_TURBO集群支持,老CCE集群不支持。如果不配置,则使用ENS隔离域规划中对应的隔离域。 | - |
| slbEnable | bool | 可选 | FALSE | 是否启用SLB | “否”仅针对第一次添加SLB信息时有效。 如果之前有部署过,并且配置为“是”,此时再修改为“否”是无效的。 | - |
示例:
- name: WiseCloudFGCEventBuilderService_cluster1
type: WiseCloud::MicroService::NuwaContainer
properties:
network:
slbEnable: true
isolatedDomain: $ {创建的隔离域名称} SLB配置(可选)
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| port | int32 | 必选 | null | 微服务在SLB上暴露的端口 | - | 8080 |
| weight | int32 | 必选 | null | 微服务在SLB上负载的权重 | - | 20 |
| timeout | int32 | 必选 | null | 微服务调用转发的超时时间 | - | 20 |
| maxFails | int32 | 必选 | null | 微服务调用的失败次数 | - | 3 |
| targetGroup | object{ name, loadBalancer } | 必选 | "" | 微服务注册到SLB上的后端服务器组名 |
| name: chaosmonekey_portal_static loadBalancer: strategy: roundRobin |
| listenerGroupName | string | 必选 | "" | 微服务前端关联的SLB Listenser Group实例IaC名称 | 对应NuwaRuntime中的slbServiceName,长度为[1, 64] SLB下需要存在这个监听,为空时不会创建RouteRule。 | chaos_slb_listener_lhq |
| routes | array[ location: string] | 可选 | [] | 微服务的路由规则 | 不推荐使用,请直接使用slb的iac3.0创建。 | /fgc/v1 |
示例:
- name: WiseCloudFGCEventBuilderService_cluster1
type: WiseCloud::MicroService::NuwaContainer
properties:
bindSlb:
- port: 8080
grayStatus: 1
weight: 20
maxFails: 3
timeout: 20
listenerGroupName: chaos_slb_listener_lhq
targetGroup:
name: chaosmonekey_portal_static
loadBalancer:
strategy: roundRobin 证书配置
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| certConfigs | type = list(object({ name = string tag = string })) | 可选 | [] | 证书配置 |
| # 业务证书配置 certConfigs: name: "server" # 证书名称 tag: "default" # 证书tag |
daemonSet
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| daemonSet | type = list(object) | 可选 | [] | 目前仅支持AIOps DaemonSet和BI DaemonSet,挂载hostpath提供存储持久化到node的能力。 |
| 详见代码示例 |
示例:
daemonSet:
- name: AIOps
type: WiseCloud::Agent::AIOps
enable: true
logPath: '/opt/huawei/logs'
limitSize: 100G
groups: ["logConfigGroupName"]
- name: BI
type: WiseCloud::Agent::BI
enable: false
logPath: '/opt/huawei/logs/bi'
groups: ["ODS_V001_DM_service1", "ODS_V001_DM_service2"]
paramJson: "{\"dataGroups\":[{\"dataGroup\":\"ODSName_BatchFileExampleDS\",\"agentType\":\"batch\",\"batchConfig\":{\"datapushInputs\":{\"jobType\":\"file\",\"dayPeriod\":{\"startTime\":\"10:00:00\",\"offset\":\"1\"},\"file\":{\"sources\":[{\"pattern\":\"/opt/huawei/hcy/*.txt\",\"filename\":\"test.txt\"}]}},\"datapushOutput\":{\"postfix\":\"txt\",\"permitEmptyFile\":true},\"advanced\":{\"extendFields\":{\"datapushInput.isUtc\":false,\"datapushInput.file.sourcePolicy\":3,\"datapushInput.file.countThreshold\":0,\"datapushInput.file.sizeThreshold\":0,\"sendThreadCount\":3,\"datapushInput.file.fileRetryTimes\":3,\"datapushInput.file.fileWaitTimes\":3}}}},{\"dataGroup\":\"ODSName_StreamFileExampleDS\",\"agentType\":\"stream\",\"streamConfig\":{\"filebeatInputs\":{\"type\":\"log\",\"enabled\":true,\"paths\":[\"/opt/huawei/logs/*.log\",\"/opt/huawei/logs/*.txt\"]},\"advanced\":{\"extendFields\":{\"filebeatInputs.harvester_limit\":5,\"queue.mem.events\":4096,\"queue.mem.flush.min_events\":2048}}}}]}"
# 配置json格式化 业务配置
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| configs | object(private = object( name = string prefix = string version = string schema = object records = object) public = object( name = string prefix = string)) | 否 | {} | 配置项的根字段,包含两个属性,分别是private和public,分别为业务配置项和公共配置项,其下各个字段的描述如下所示。 | - | 见下文样例 |
| prefix | string | 否 | "" | 配置项的归属路径 | 仅限于publicConfig | /public/cloudeye/wiseEyeConfigService |
| schema | object(type = string properties = object( key1 = object( type = string description = string format = string))) | 否 | {} | 配置项属性,properties属性为key-object格式,key是配置名称 ,object是配置项各项描述,其中format指配置项类型,默认为notype,如果是敏感配置项为sensitive。 如果是非敏感配置项,可以不在schema中声明,以减少维护工作量。 | 仅限于privateConfig | 见下文样例 |
| records | object(key1 = string key2 = string) | 否 | {} | 描述配置,key-value格式,key为配置名称 ,value为配置值。 value仅支持字符串类型 如果是数字、布尔值、对象和数组,需要加单引号,例:'10'、'true'、'{"test": 1}'、'[1,2]'。 | 仅限于privateConfig | records: test: '{"a":"a","b":"b"}' timeout: '10' enableSa: 'true' |
| name | string | 否 | "" | 配置项名称,对应NuwaRuntime的Container[0].configTag,对应PublicConfig和PrivateConfig的name。 配合动态配置生效,需要nuwa基础镜像版本要保持在3.0.11版本以上,否则报错。 | publicConfig/privateConfig均有 限制:8位以内的小写字母和数字 | 见下文样例 |
| version | string | 否 | "" | 配置版本,对应NuwaRuntime的Container[0].configVeersion,对应PrivateConfig的version。 配合动态配置生效,需要nuwa基础镜像版本要保持在3.0.11版本以上,否则报错。 | 仅限于privateConfig | 见下文样例 |
示例:
# resources.yaml
- name: WiseCloudFGCEventBuilderService_cluster1
type: WiseCloud::MicroService::NuwaContainer
properties:
configs:
$ref: 'config/business_config.yaml#'
# business_config.yaml
public:
prefix: /com.huawei.wiseeye
name: public5
private:
version: 1.0.0 #(配合动态配置生效,需要nuwa基础镜像版本要保持在3.0.11版本以上,否则报错)
name: fgcva #(配合动态配置生效,需要nuwa基础镜像版本要保持在3.0.11版本以上,否则报错)
schema:
type: object
properties:
AIOPSCONFIG_AIOPSSERVER: # 默认为format: notype,如果非敏感项,可以不填
format: notype # 默认为notype,如果非敏感项,可以不填
AIOPSCONFIG_AIOPSTOKENURI: # 敏感项必须填
format: sensitive # 敏感项必须填
records: # 必填
AIOPSCONFIG_AIOPSSERVER: https://XX.XX.XX.XX:XXXX/
test: '{"a":"a","b":"b"}' # 仅支持字符串类型,[]、{}的值,yaml会识别为对象和数组,必须加单引号
timeout: '10' # 仅支持字符串类型,数字和布尔值也要加引号
enableSa: 'true' 滚动升级策略
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| rollingUpdateStrategy | type = object({ maxSurge = string maxUnavailable = string }) | 可选 | maxSurge : "25%" maxUnavailable: 0 | 滚动升级策略配置
| 整数:最小值为0 百分比:0% ~ 100%
| rollingUpdateStrategy: maxSurge = "50%" maxUnavailable = "25%" |
优雅下线
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| preStopConfig | type = object({ execCommand = list }) | 必选 | [] | 优雅退出处理 | - | preStopConfig: execCommand: ["/bin/bash", "-c", "sleep 20"] |
| terminationGracePeriodSeconds | int | 可选 | 30 | 优雅退出宽限时间,此时间为整个POD的最大退出时间。 | - | terminationGracePeriodSeconds: 30 |
灰度策略
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| grayStage | type = object({grayInstances = number grayProcess= stringgrayStatus = number }) | 可选 | null | 灰度升级策略配置。
| - | grayStage: grayInstances: 50 grayProcess: "INGRAY" grayStatus: 2 |
示例:
- name: WiseCloudFGCEventBuilderService
type: WiseCloud::MicroService::NuwaContainer
properties:
grayStage:
grayInstances: 50
grayProcess: "INGRAY"
grayStatus: 2 水平自动伸缩(HPA)
如果业务不需要使用hpa,请不要配置hpa相关参数。hpa开关配置关闭,也会创建hpa资源,只是不会生效扩缩容。
| 参数 | 说明 | 是否必填 | 备注 |
|---|---|---|---|
| hpa_scale_disabled | 是否禁用hpa,false表示不禁用;true表示禁用。 | 是 | 取值为false时开启hpa。 |
| polling_interval | 负载检测周期,单位秒。 | 否 | - |
| origin_instances | 初始副本数,不配置则使用min_instances值。 | 否 | - |
| min_instances | 最小副本数 | 是 | 不配置默认为1。 |
| max_instances | 最大副本数 | 是 | 不配置默认为1。 |
| hpa_scale_triggers | 扩缩容指标配置,目前仅支持cpu/memory。 | 是 | 仅统计主容器资源。 |
| hpa_scale_up_rules | 扩容规则,定义稳定时间窗,减少扩容毛刺。 | 否 | - |
| hpa_scale_down_rules | 缩容规则,定义稳定时间窗,减少缩容毛刺。 | 否 | - |
| hpa_scale_up_policies | 扩容策略,定义扩容步长。 | 否 | - |
| hpa_scale_down_policies | 缩容策略,定义缩容步长。 | 否 | - |
示例:
在resources.yaml中添加hpa参数如下:
hpa: #弹性伸缩配置
$ref: 'config/hpa.yaml#/recommend' 在config目录,增加一个hpa.yaml文件,存放hpa的相关配置项。
recommend:
disabled: true #true表示关闭hpa,false表示开启hpa
pollingInterval: 5 #负载检测周期,单位秒
minReplicas: 2 #最小副本数
maxReplicas: 4 #最大副本数
triggers: #业务根据时间情况选择弹性伸缩策略
-type: CPU #业务容器的CPU利用率大于40%则触发扩容条件
metadata:
averageUtilization: 40%
-type: Memory #业务容器的内存利用率大于60%则触发扩容条件
metadata:
averageUtilization: 60% 指定分组和资源标签
| 参数名称 | 参数类型 | 是否必选 | 默认值 | 说明 | 参数规范 | 举例 |
|---|---|---|---|---|---|---|
| resourceTag | type = object ({group = stringfeatures = string}) | 可选 | 无 |
| 此处配置的信息要在Runtime页面提前预置好。 | resourceTag: group: "common" features: "dev" |