更新时间:2024-04-02 GMT+08:00
分享

global与specs的协同关系

本节以WiseChaos的IaC代码为例,详细描述代码运行原理及涉及的各个IaC文件的作用,微服务WiseChaos的整体IaC代码结构如下:
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中不存在
分享:

    相关文档

    相关产品