云服务器内容精选

  • 资源定义 一个component下可以定义多个资源,所有的资源描述都存放于resources.yaml中,资源的type和name构成资源的唯一标记,以列表的形式存在。 在以下样例中,WiseEyeChaosMonkeyMgrService下的resources.yaml中定义了该组件下的全量资源。 图1 资源定义 表1 resources.yaml字段说明 字段 含义 name 微服务平台显示的资源名称,最大长度为16字符。 type 资源类型。支持配置管理、NUWA Container及SLB。 properties 属性值,包含资源的详细参数。详细参数介绍请参见资源列表。 如果资源文件过大可以通过引用的方式对文件进行拆分及复用如图,我们可以把配置的定义放在config/business_config.yaml文件下。 图2 resources.yaml文件拆分 business_config.yaml文件可以复用: 图3 business_config.yaml文件复用
  • component内部 资源编排 component内部允许同一个资源出现多次,这表示同一个资源的不同变更阶段,这一场景下该资源的所有节点必须声明alias字段并且alias取值必须在component内全局唯一,同一个资源的所有alias之间必须显式地在dependsOn字段中声明串行依赖。 component的resources属性中描述资源列表,通过设置资源的dependsOn属性描述对其他资源的依赖。 dependsOn是列表类型,每个元素使用type、name、alias等字段描述对其他资源的引用,其中name字段是必填字段,type、alias是可选字段;component解析某资源的dependsOn时,会根据元素属性从相同component中搜索满足条件的资源作为当前资源的依赖。 部分资源之间已经有隐式引用关系,系统自动添加dependsOn,不需要再显式声明。每种类型的哪些属性隐含引用关系,可以参考其文档,具体请参见资源列表。 资源不能有循环依赖(A dependsOn B,B dependsOn C,C dependsOn A),不能依赖自己。 以下示例定义了两个资源,一个名为chaosmonkey-elb的ELB,一个名为chaosmonkey-slb的SLB;chaosmonkey-slb依赖于chaosmonkey-elb。在变更时,先变更chaosmonkey-elb,变更成功后再变更chaosmonkey-slb,如果chaosmonkey-elb变更失败,则不会变更chaosmonkey-slb。 - name: chaosmonkey-elb # 资源名称 type: WiseCloud::LoadBalancer::ELBV2 # 资源类型 properties: listeners: - name: listener protocol: HTTP protocolPort: 80 poolName: pool_a pools: - name: pool_a protocol: HTTP - name: chaosmonkey-slb # 资源名称 type: WiseCloud::LoadBalancer::SLB # 资源类型 dependsOn: # 定义对其他资源的依赖 - name: chaosmonkey-elb # 依赖的资源名称 properties: elbName: chaosmonkey-elb elbPoolNames: ["pool_a"] deployVersion: 1.4.12 slbConfigs: targets: - clusterName: mgr routes: - location: / target: mgr
  • component定义 定义component是IaC将一个环境的资源组织起来的方式,我们可以把同一类资源组织起来成为一个component。所有被IaC定义的资源必须属于某一个component。在以下样例中,IaC代码定义了WiseEyeChaosMonkeyMgrService和WiseEyeChaosMonkeyPortal两个component。 ├── global/ │ ├── meta.yaml │ ├── WiseEyeChaosMonkeyMgrService/... │ └── WiseEyeChaosMonkeyPortal/...
  • 自定义lua配置 表14 customLuaConf字段说明 参数名 是否必选 说明 slb100GlobalInit 否 大小不得超过16KB slb200WorkerInit 否 大小不得超过16KB slb300PreFlowControl 否 大小不得超过16KB slb400OnFlowControled 否 大小不得超过16KB slb500PreGrey 否 大小不得超过16KB slb600PostGrey 否 大小不得超过16KB slb700PostRoute 否 大小不得超过16KB slb750RespHeaderFilter 否 大小不得超过16KB slb800RespBodyFilter 否 大小不得超过16KB slb_instance_config/SLB_100_Global_Init_iac3.lua #SLB_100_Global_Init_iac3.lua默认配置 --the custom point SLB_100_Global_Init, running when Global init. --will be triggered in exec function, so pls make sure there is a exec function in global_init local global_init = {}; function global_init.exec(gen_param) --eg:ngx.log(ngx.ERR,"i am in global_init") end return global_init slb_instance_config/SLB_200_Worker_Init_iac3.lua #SLB_200_Worker_Init_iac3.lua默认配置 --the custom point SLB_200_Worker_Init, running when Worker init. --will be triggered in exec function, so pls make sure there is a exec function in worker_init local worker_init = {}; function worker_init.exec(gen_param) --eg:ngx.log(ngx.ERR,"i am in worker init"); end return worker_init slb_instance_config/SLB_300_Pre_FlowControl_iac3.lua #SLB_300_Pre_FlowControl_iac3.lua默认配置 --the custom point SLB_300_Pre_FlowControl, running before flowcontrol and blacklist. --will be triggered in exec function, so pls make sure there is a exec function in pre_flowcontrol local pre_flowcontrol = {}; function pre_flowcontrol.exec(gen_param) --eg:ngx.log(ngx.ERR,"I am in pre flowcontrol") end return pre_flowcontrol slb_instance_config/SLB_400_On_FlowControled_iac3.lua #SLB_400_On_FlowControled_iac3.lua默认配置 --the custom point SLB_400_On_FlowControlled, running when request is flowcontrolled or blocked due to blacklist. --will be triggered in exec function, so pls make sure there is a exec function in on_flowcontroled local on_flowcontroled = {}; function on_flowcontroled.exec(gen_param) --eg:ngx.log(ngx.ERR,"the flowcontrol type is:",gen_param.control_type) end return on_flowcontroled slb_instance_config/SLB_500_Pre_Grey_iac3.lua #SLB_500_Pre_Grey_iac3.lua默认配置 --the custom point SLB_500_Pre_Grey, running before Greyrule judge. --will be triggered in exec function, so pls make sure there is a exec function in pre_grey local pre_grey = {}; function pre_grey.exec(gen_param) --eg:ngx.log(ngx.ERR,"I am in pre grey"); end return pre_grey slb_instance_config/SLB_600_Post_Grey_iac3.lua #SLB_600_Post_Grey_iac3.lua默认配置 --the custom point SLB_600_Post_Grey, running after get result of greyrule. --will be triggered in exec function, so pls make sure there is a exec function in post_grey local post_grey = {}; function post_grey.exec(gen_param) --eg:ngx.log(ngx.ERR,"I AM IN POST GREY"); end return post_grey slb_instance_config/SLB_700_Post_Route_iac3.lua #SLB_700_Post_Route_iac3.lua默认配置 --the custom point SLB_700_Post_Route, running after get result of routerule. --will be triggered in exec function, so pls make sure there is a exec function in post_route local post_route = {}; function post_route.exec(gen_param) --eg:ngx.log(ngx.ERR,"I AM IN POST Route"); end return post_route slb_instance_config/SLB_750_Resp_Header_Filter_iac3.lua #SLB_750_Resp_Header_Filter_iac3.lua默认配置 --the custom point SLB_750_Resp_Header_Filter, running during header filter. --will be triggered in exec function, so pls make sure there is a exec function in header_filter local header_filter = {}; function header_filter.exec(gen_param) --eg:ngx.log(ngx.ERR,"I am in header filter"); end return header_filter slb_instance_config/SLB_800_Resp_Body_Filter_iac3.lua #SLB_800_Resp_Body_Filter_iac3.lua默认配置 --the custom point SLB_800_Resp_Body_Filter, running during body filter. --will be triggered in exec function, so pls make sure there is a exec function in body_filter local body_filter = {}; function body_filter.exec(gen_param) --eg:ngx.log(ngx.ERR,"I am in body filter"); end return body_filter
  • 流控配置 表9 flowControlConf字段说明 参数名 是否必选 说明 flowControlSwitch 是 流控总开关,取值为on或off。 autoDivideSwitch 是 分摊模式开关,取值为on或off。 flowControlOrder 是 流控类型执行顺序,和下面的流控配置相匹配。 nodeFlowControl 否 节点级流控配置 interfaceFlowControl 否 接口级流控配置 serviceFlowControl 否 服务级流控配置 ipFlowControl 否 IP流控配置 singleParamFlowControl 否 自定义参数流控配置 multiParamFlowControl 否 多参数组合流控配置 quotaFlowControl 否 配额流控配置 concurrentFlowControl 否 并发连接流控配置
  • 其他配置 表13 confLuaConf字段说明 参数名 说明 addGreyFlag 灰度标记开关,取值为on或off。 greyTestSwitch 灰度测试开关,取值为on或off。 greyTestServiceId 灰度测试服务Id。 greyTestSwitch为on时必传。 getIpType 取IP方式,取值为1或2,1表示从左取,2表示从右取,默认为1。 isBypassOnGreyDown 灰度服务器全部宕机后,请求路由到生产开关,取值为on或off,默认为off。 areaGreyGetIpFromLeft 地域灰度IP从左侧取值开关,取值为on或off,默认为off。 greyTestQpsLimit 灰度测试每秒转发量限制,取值为1到1000。 successRateAlarmAbsThreshold 成功率告警阈值绝对值,非负浮点数,取值为0到100,默认值为90。 successRateAlarmOffsetThreshold 成功率下降告警阈值(相比1分钟前或者5分钟前),非负浮点数,取值为0到100,默认值为5。 healthCheckAlarmServerCountThreshold 健康检查不健康机器数告警阈值,正整数,默认为1,表示有1台节点不健康就会告警。 healthCheckAlarmDurationThreshold 健康检查告警持续时间阈值,非负正整数,默认为0,表示不健康主机立即告警;如果配置为1,表示发现不健康持续1分钟以上,才会告警。 concurrentFlowControlAlarmThreshold 并发请求流控告警阈值,非负整数,默认为0,表示只要发生1次流控,就会告警。 serviceFlowControlAlarmThreshold 服务级流控告警阈值,非负整数,默认0,表示只要发生1次流控,就会告警。 singleParamFlowControlAlarmThreshold 自定义参数流控告警阈值,非负整数,默认0,表示只要发生1次流控,就会告警。 multiParamFlowControlAlarmThreshold 多参数流控告警阈值,非负整数,默认0,表示只要发生1次流控,就会告警。 quotaFlowControlAlarmThreshold 配额流控告警阈值,非负整数,默认0,表示只要发生1次流控,就会告警。 manyRequestPreAlarmThreshold 请求数过多告警阈值,正整数,例如:25000,表示每个cpu每分钟平均处理达到25000请求,则触发告警。 以4C的主机为例,1分钟处理超过25000*4=100000请求,则开始告警。 manyRequestAlarmThreshold 请求数警阈值,非负整数,默认为0。 statisticsParams 统计日志参数,格式为格式为ParamName:position。 ParamName为参数名称。 Position为参数位置,取值为queryString或header。 slb_instance_config/conf_lua_config.yaml #其他配置 addGreyFlag: 'off' #非必填,灰度标记开关,取值为off或on greyTestSwitch: 'off' #非必填,灰度测试开关,取值为off或on greyTestServiceId: 123456 #非必填,灰度测试服务ID isBypassOnGreyDown: 'off' #非必填,宕机时路由到生产集群开关,取值为off或on areaGreyGetIpFromLeft: 'off' #非必填,地域灰度IP从左取值开关 ,取值为off或on getIpType: 1 #非必填,取IP方式,取值为1或2 statisticsParams: #非必填,统计日志参数 greyTestQpsLimit: 1000 #非必填,灰度测试每秒转发量限制,取值为1到1000 manyRequestAlarmThreshold: 1000 #非必填,请求数量告警 successRateAlarmAbsThreshold: 90 #非必填,成功率告警阈值,取值为0到100 successRateAlarmOffsetThreshold: 90 #非必填,成功率下降告警阈值,取值为0到100 healthCheckAlarmServerCountThreshold: 1000 #非必填,健康检查告警阈值 healthCheckAlarmDurationThreshold: 1000 #非必填,健康告警持续时间阈值 concurrentFlowControlAlarmThreshold: 1000 #非必填,并发连接流控告警阈值 serviceFlowControlAlarmThreshold: 1000 #非必填,服务级流控告警阈值 multiParamFlowControlAlarmThreshold: 1000 #非必填,多参数流控告警阈值 singleParamFlowControlAlarmThreshold: 1000 #非必填,自定义参数流控告警阈值 quotaFlowControlAlarmThreshold: 1000 #非必填,配额流控告警阈值 manyRequestPreAlarmThreshold: 1000 #非必填,请求数量预告警
  • 重写重定向配置 表2 urlResetConf字段说明 参数名 是否必选 说明 transferType 是 转换类型,为以下枚举值: rewriteGrey 灰度重写 rewriteNormal 生产重写 redirectGrey 灰度重定向 redirectNormal 生产重定向 source 是 匹配路径,例:/abc/portal/login.jsp(.*)$ target 是 目标路径,例:/abc/def/$1 slb_instance_config/url_reset_config.yaml #重写重定向配置 - transferType: rewriteNormal #必填,转发类型,rewriteNormal代表生产重写 source: /a1 #必填,匹配路径 target: /b1 #必填,目标路径 - transferType: rewriteGrey #必填,转发类型,rewriteGrey代表灰度重写 source: /a2 #必填,匹配路径 target: /b2 #必填,目标路径
  • nginx配置 slb_instance_config/nginx.conf #nginx默认配置 #user slb slb; worker_processes auto; #worker_cpu_affinity 0001 0010 0100 1000; pid logs/nginx.pid; ##################################################################### ### Default: Close the error log error_log /dev/null crit; # nofile per worker around 20000-100000 is ok, eg, if have 8 worker, nginx will use no more than 8*worker_rlimit_nofile nofile, should make this result less than system nofile. worker_rlimit_nofile 51200; events { use epoll; # connections per worker, usually setup same or similar value as worker_rlimit_nofile. worker_connections 51200; } http { ##################################################################### ### load basic lua script include 'lua/nginx.http.lua.conf'; init_by_lua_file 'conf/lua/initial.lua'; init_worker_by_lua_file 'conf/lua/initialWorker.lua'; log_by_lua_file 'conf/lua/monitor/LogRequest.lua'; #rewrite_by_lua_no_postpone on; ##################################################################### uninitialized_variable_warn off; server_tokens off; autoindex off; port_in_redirect off; ssi off; proxy_hide_header X-Powered-By; add_header X-XSS-Protection "1; mode=block"; add_header X-frame-options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains "; add_header Content-Security-Policy "default-src 'self'"; add_header Cache-control "no-cache, no-store, must-revalidate"; add_header Pragma no-cache; add_header Expires 0; client_header_timeout 60s; client_body_timeout 60s; keepalive_timeout 75s; send_timeout 60s; client_header_buffer_size 1k; large_client_header_buffers 4 8k; client_body_buffer_size 16k; client_max_body_size 1m; proxy_buffer_size 8k; proxy_buffers 8 8k; proxy_busy_buffers_size 16k; include mime.types; default_type text/html; ##################################################################### ### gzip compress gzip on; gzip_http_version 1.1; gzip_comp_level 5; gzip_min_length 1k; gzip_disable "MSIE [1-6]."; gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss application/xhtml+xml; ##################################################################### ### enabled the error page process fastcgi_intercept_errors on; error_page 400 401 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 /4xx.html; error_page 500 501 502 503 504 505 /5xx.html; ##################################################################### ### log format and switch. log_format main '$time_local|$request_time|$upstream_response_time|$uri' '|$status|$body_bytes_sent|$request_length|$bytes_sent|$http_user_agent|$http_host' '|$upstream_addr|$upstream_status|$scheme|$is_grey_server|$resp_status|$server_protocol'; access_log logs/access.log main buffer=5m flush=10s; log_format bigData '$time_local|$server_addr|$upstream_addr|$is_grey_server|$uri' '|$upstream_status|$resp_status|$request_time|$upstream_response_time|$request_length|$bytes_sent|$connections_active|$target_all|$remote_addr' '|$http_x_forwarded_for|$request_method|$http_user_agent|$status|$http_referer|$server_protocol|$body_bytes_sent|$request_length|$http_host|$request' '|$server_port|-|$http_x_api_method||||||||||'; access_log logs/access_for_big_data.log bigData buffer=5m flush=10s; ##################################################################### ### load sub configure include vhosts/*.conf; include slb_conf/*.conf; }
  • 内网段配置 表3 innerSegmentsConf字段说明 参数名 是否必选 说明 segment 是 IP地址段,格式为ip/子网掩码。 slb_instance_config/inner_segments_config.yaml #内网段配置 - segment: 10.0.0.0/8 - segment: 127.0.0.1/32 - segment: 172.16.0.0/12 - segment: 192.168.0.0/16 - segment: 100.125.0.0/16
  • 包结构 图1 SQL包结构 变更多个逻辑库,需要创建多个目录,存放对应逻辑库的sql文件。 sql文件支持两种命名:upgrade.sql(增量脚本)和rollback.sql(回滚脚本)。 GeminiDB(for Cassandra)类型数据库sql文件后缀是cql。 DDL的package.json如下所示,主要是写ddl语句。 { "name": "${service_name}-ddl-sqlchange-cn-cbu",//数据库包的包名,包括站点、业务、服务、实例类型、实例名和包名等信息 "site_name": "cbu", //站点名,中国区为cbu,欧洲区为eu-cbu,亚非拉为aaa-cbu "business_name": "${business_name}", //AppStage业务控制台中业务定义的产品英文名称,查看方式请参考产品管理 "service_name": "${service_name}", //AppStage业务控制台中业务定义的服务英文名称,查看方式请参考服务管理 "instance_name": "${mysql_instance_cn_cbu}", //WiseDBA中纳管的数据库实例名称 "instance_type": " GaussDB 4MySQL", //数据库实例类型,支持GaussDB4MySQL/RDS4MySQL/GaussDB4Cassandra/GaussDB4OpenGauss,分别对应WiseDBA中的GaussDB(for MySQL)/RDS for MySQL/GeminiDB(for Cassandra)/GaussDB "type": "dbscript_ddl", //包类型,ddl语句固定为dbscript_ddl "version": "${package_version}" //数据库包的版本,即包坐标中的version字段,例如:1.0.1 } DML的package.json如下所示,主要是写dml语句。 { "name": "${service_name}-dml-sqlchange-cn-cbu",//数据库包的包名,包括站点、业务、服务、实例类型、实例名和包名等信息 "site_name": "cbu", //站点名,中国区为cbu,欧洲区为eu-cbu,亚非拉为aaa-cbu "business_name": "${business_name}", //AppStage业务控制台中业务定义的产品英文名称,查看方式请参考产品管理 "service_name": "${service_name}", //AppStage业务控制台中业务定义的服务英文名称,查看方式请参考服务管理 "instance_name": "${mysql_instance_cn_cbu}", //WiseDBA中纳管的数据库实例名称 "instance_type": "GaussDB4MySQL", //数据库实例类型,支持GaussDB4MySQL/RDS4MySQL/GaussDB4Cassandra/GaussDB4OpenGauss,分别对应WiseDBA中的GaussDB(for MySQL)/RDS for MySQL/GaussDB(for Cassandra)/GaussDB "type": "dbscript_dml", //包类型,dml语句固定为dbscript_dml "version": "${package_version}" //数据库包的版本,即包坐标中的version字段,例如:1.0.1 }
  • 包描述文件介绍 包描述文件package.json样例如下: { "type": "iacspec", # 代码包类型 "name": "service/1180196813870297088", # 代码包名称,格式:service/{自有服务Id}(必须) "version": "1.0.0" # 代码包版本号(必须) } 表1 package.json字段说明 位置 类型 必填 描述 type string 是 包类型,常量:iacspec或iacpatch。 name string 是 包名称 iacspec包名称格式:service/{service-id},其中service-id为服务ID。 iacpatch包名称格式:service/{service-id}/{component-name},其中{service-id}为服务ID,{component-name}为组件名称。 您可以在AppStage运维中心工作台右上角的个人账号信息管理中,选择“租户管理”,查看服务ID。 version string 是 版本号。 父主题: 应用平台IaC部署代码开发
  • global与specs的协同关系 global文件夹:放置被所有规格目录所复用的配置文件。 global文件夹里面的微服务都可以被规格文件夹specs中的代码复用(可根据meta.yaml指定复用哪些微服务,取决于你在相应环境的部署规划)。 global文件夹的作用类似于Java中的父类,spec类似于继承了global的子类,实际部署时还是使用的specs中的文件,但specs中的文件可以继承和复用global文件。 meta.yaml:描述变更的组件与过程。 {microservice}:描述要变更的微服务。 resources.yaml:微服务变更的主体文件,其他所有的values.yaml、config文件夹中的yaml等文件都围绕此文件展开。文件名必须为resources.yaml。 其他文件:为变量配置文件,其定义的内容都会被resources.yaml引用,文件名称可自定义。 spec文件夹:同一个服务在不同用途环境下所需配置文件(基础设施)。这个文件目录是必须的。 specs是在环境上部署服务时,最终使用的配置文件,当部署服务时,第一关注点和入口就是specs。 specs目录下的规格文件夹,命名采用站点级Cloud Map的名称(cn_product_cbu、eu_product_cbu)。可以在环境管理界面查看可选的站点级Cloud Map名称列表。 当某个规格被选用于部署时,会先将该规格目录下所有文件与global目录进行合并,得到该规格目录最终的所有配置文件,再进行部署动作。
  • 目录结构介绍 表1 IaC Spec包结构说明 位置 类型 个数 描述 iacspec_{service}_{version}.zip 文件 1 IaC压缩包。 └── package.json 文件 1 包描述文件,相关说明请参见包描述文件介绍。 └── global/ 文件夹 1 全局默认的IaC描述,包含完整文件结构,放置被所有规格目录所复用的配置文件。 │ └── meta.yaml 文件 1 变更策略描述,相关说明请参见在IaC代码中定义流水线。 │ └── environment/ 文件夹 1 定义component1,公共资源。 │ └── resources.yaml 文件 1 公共资源列表,相关说明请参见在IaC代码中声明资源。 │ └── values.yaml 文件 1 公共资源参数值,在resources.yaml中通过$ref的方式来引用。 │ └── {microservice}/ 文件夹 0-N 定义component2,微服务资源。 │ └── resources.yaml 文件 1 微服务资源列表,相关说明请参见在IaC代码中声明资源。 │ └── values.yaml 文件 1 微服务资源参数值,在resources.yaml中通过$ref的方式来引用。 │ └── configs/ 文件夹 1 微服务配置目录。 │ └── config_schema.yaml 文件 1 声明微服务的业务配置项属性,敏感业务配置项需要声明,非敏感配置项可以不声明。在resources.yaml中通过$ref的方式来引用。 │ └── {cluster}_config_records.yaml 文件 0-N 微服务的业务配置项,在resources.yaml中通过$ref的方式来引用。 └── specs/ 文件夹 1 环境特定的IaC描述,结构与global相同,但仅包含与global有差异的文件。 │ └── cn_product_cbu/ 文件夹 1 中国区生产环境,命名采用站点级Cloud Map的名称,可以在环境管理界面查看可选的站点级Cloud Map名称列表。 │ └── environment/ 文件夹 0-1 环境公共资源。 │ └── values.yaml 文件 0-1 公共资源参数值。 │ └── {microservice}/ 文件夹 0-N 微服务资源。 │ └── values.yaml 文件 0-1 微服务资源参数值。 │ └── configs/ 文件夹 0-1 微服务配置目录。 │ └── {cluster}_config_records.yaml 文件 0-N 微服务的业务配置项。 │ └── aaa_product_cbu/ 文件夹 1 亚非拉生产环境。 │ └── eu_product_cbu/ 文件夹 1 欧洲生产环境。
  • 如何定义流水线 meta.yaml文件涉及applyPipeline/pipelines两个字段。pipelines中支持定义多个流程,applyPipeline描述本次变更要使用的流程。pipeline能力丰富,通过设计pipeline可以实现精巧的多阶段部署、部分变更、主动暂停等复杂场景的变更编排。 样例如下: type: WiseCloud::Environment # 保留字,声明这是一个针对环境的IAC代码 applyPipeline: default # 代码中指定的默认pipeline,指定的pipeline必须是在pipelines中声明的 pipelines: # 列表,可以定义多个pipeline,并在执行任务时选择 - name: default # pipeline名称 action: Serial # 此pipeline执行任务的策略 Serial(串行)/ Parallel(并行) tasks: # 声明流水线的子任务,通过声明pipeline的任务,实现对资源部署流程的编排 - name: apply-chaosmonkey-stage1 action: Serial tasks: - name: deploy action: Serial tasks: - name: apply-chaosmonkey-por action: Apply component: name: WiseEyeChaosMonkeyPortal - name: all action: Serial tasks: - name: apply-chaosmonkey-stage1 action: Serial tasks: - name: deploy action: Serial tasks: - name: apply-chaosmonkey-por action: Apply component: name: WiseEyeChaosMonkeyPortal - name: apply-chaosmonkey-stage2 action: Serial tasks: - name: deploy action: Serial tasks: - name: apply-chaosmonkey-mgr action: Apply component: name: WiseEyeChaosMonkeyMgrService 表1 meta.yaml字段说明 字段 说明 type 描述当前环境类型,当前为固定值WiseCloud::Environment。 applyPipeline 定义默认选用的组件编排流水线名称,当前默认使用environment-deploy。 pipelines pipelines中支持定义多个流程。
  • IaC Patch包典型目录结构 IaC Patch包用于描述环境中的一个组件。IaC Patch包典型目录结构如下: 表1 IaC Patch包结构说明 位置 类型 个数 描述 iacpatch_{microservice}_{version}.zip 文件 1 IaC压缩包。 └── package.json 文件 1 包描述文件,相关说明请参见包描述文件介绍。 └── global/ 文件夹 1 全局默认的IaC描述,包含完整文件结构。全局默认的IaC描述,包含完整文件结构,放置被所有规格目录所复用的配置文件 │ └── resources.yaml 文件 1 微服务资源列表,相关说明请参见在IaC代码中声明资源。 │ └── values.yaml 文件 1 微服务资源参数值,在resources.yaml中通过$ref的方式来引用。 │ └── configs/ 文件夹 1 微服务配置目录。 │ └── config_schema.yaml 文件 1 声明微服务的业务配置项属性,敏感业务配置项需要声明,非敏感配置项可以不声明。在resources.yaml中通过$ref的方式来引用。 │ └── {cluster}_config_records.yaml 文件 0-N 微服务的业务配置项,在resources.yaml中通过$ref的方式来引用。 └── specs/ 文件夹 1 环境特定的IaC描述,结构与global相同,但仅包含与global有差异的文件。 │ └── cn_product_cbu/ 文件夹 1 中国区生产环境,命名采用站点级Cloud Map的名称,可以在环境管理界面查看可选的站点级Cloud Map名称列表。 │ └── values.yaml 文件 0-1 微服务资源参数值。 │ └── configs/ 文件夹 0-1 微服务配置目录。 │ └── {cluster}_config_records.yaml 文件 0-N 微服务的业务配置项。 │ └── aaa_product_cbu/ 文件夹 1 亚非拉生产环境。 │ └── eu_product_cbu/ 文件夹 1 欧洲生产环境。 IaC Patch包样例: └── iacpatch_WiseEyeDeployConsoleService_1.1.2.zip ├── global/ # global目录:放置所有规格目录所复用的配置文件 │ ├── config/ # 微服务配置目录 │ │ ├── config_records.yaml │ │ └── config_schema.yaml │ ├── resources.yaml # 微服务的资源列表 │ ├── packages.yaml │ └── values.yaml # 变量定义文件,被resources.yaml引用 ├── specs/ # 环境特定的IaC描述,结构与global相同,但仅包含与global有差异的文件 │ ├── eu_product_cbu/... # 欧洲生产环境 │ ├── aaa_product_cbu/... # 亚非拉生产环境 │ └── cn_product_cbu/ # 中国区生产环境,命名采用站点级Cloud Map的名称,可以在环境管理界面查看可选的站点级Cloud Map名称列表 │ ├── values.yaml # 变量定义文件,被resources.yaml引用 │ └── config/ # 微服务配置目录 │ └── config_records.yaml └── package.json # 包描述文件(必须) 父主题: 应用平台IaC部署代码开发