global与specs的协同关系
iac3.0 # IaC3.0代码根目录:目录名字可自定义 └─ WiseEyeChaosMonkeyService # 此级目录为服务级目录,名字与所部署的服务名称相同 ├─ global # global目录:放置所有规格目录所复用的配置文件 ├─ WiseEyeChaosIssueMgrService ├─ WiseEyeChaosManageService ├─ WiseEyeChaosMonkeyExecutor │ └─ config │ ├─ business_config.yaml │ ├─ env.yaml │ ├─ envs_dynamic.yaml │ ├─ hosts.yaml │ └─ sidecar_aiops_param.json └─ resources.yaml │ └─ values.yaml ├─ WiseEyeChaosMonkeyPortal │ └─ config │ └─ sidecar_aiops_param.json │ └─ resources.yaml │ └─ values.yaml └─ WiseEyeChaosPortal └─meta.yaml ├─specs # 规格文件,描述了每个规格的定制化需求,最终部署的时候以specs文件为准 ├─cn_product_cbu ├─WiseEyeChaosMonkeyExecutor │ └─config │ ├─ envs_dynamic.yaml │ ├─ hosts.yaml │ └─ sidecar_aiops_param.json │ └─values.yaml ├─WiseEyeChaosMonkeyPortal │ └─config │ └─ sidecar_aiops_param.json │ └─values.yaml └─ meta.yaml ├─aaa_product_cbu └─eu_product_cbu └─package.json
当对此微服务的IaC代码打包合并时:
- specs中存在而global中不存在的文件,使用specs中的文件。
- specs中不存在而global中存在的文件,使用global中的文件。
- specs和global中都存在的,则使用specs中的文件。
以/iac3.0/WiseEyeChaosMonkeyService/specs/cn_product_cbu为例,在specs中的cn_product_cbu目录和global中都有WiseEyeChaosMonkeyExecutor和WiseEyeChaosMonkeyPortal微服务文件夹。
合并后最终呈现的文件目录如下:
“覆盖”指的是完全取代,不是内容合并。
cn_product_cbu ├─ meta.yaml # 来自于specs目录,覆盖global中的文件 ├─ WiseEyeChaosMonkeyExecutor │ ├─ values.yaml # 来自于specs目录,覆盖global中的文件 │ ├─ resources.yaml # 来自于global中的文件 │ └─ config │ ├─ business_config.yaml # 来自于global中的文件,因为specs中不存在 │ ├─ env.yaml # 来自于global中的文件,因为specs中不存在 │ ├─ envs_dynamic.yaml # 来自于specs目录,覆盖global中的文件 │ ├─ hosts.yaml # 来自于specs目录,覆盖global中的文件 │ └─ sidecar_aiops_param.json # 来自于specs目录,覆盖global中的文件 ├─ WiseEyeChaosMonkeyPortal │ ├─ values.yaml # 来自于specs目录,覆盖global中的文件 │ ├─ resources.yaml # 来自于global中的文件,因为specs中不存在 │ └─ config │ └─ sidecar_aiops_param.json # 来自于specs目录,覆盖global中的文件 ├─ WiseEyeChaosIssueMgrService # 来自于global中的文件,因为specs中不存在 ├─ WiseEyeChaosManageService # 来自于global中的文件,因为specs中不存在 └─ WiseEyeChaosPortal # 来自于global中的文件,因为specs中不存在