应用平台 APPSTAGE-IaC代码结构介绍:带global的多文件描述结构

时间:2024-09-24 15:36:35

带global的多文件描述结构

Spec包通过不同规格目录来描述同一个服务在不同用途环境下所需的基础设施。但是,同一服务的不同的规格仍然存在大量相同的配置,需要一种机制来完成不同规格间配置的复用。因此,IaC支持放置一个global目录,其与specs目录同级,用于放置被所有规格目录所复用的配置文件。而各具体规格目录,只需包含与 global 目录的增量差异文件即可。

当某个规格被选用于部署时,会先将该规格目录下所有文件与global目录进行合并,得到该规格目录最终的所有配置文件,再进行部署动作。

合并策略:若文件的相对路径相同,则规格目录下的文件保留, global目录下的文件被覆盖,其他文件则共存。

带global的多文件描述结构样例如下:

├── package.json                           # 包描述文件(必须)
├── global                                 # global目录:放置所有规格目录所复用的配置文件
│     │
│     ├── meta.yaml                       # IaC 主体描述文件,内容不包含 components
│     ├── WiseEyeChaosMonkeyMgrService    # 组件一:ChaosMonkey 管理服务,名称需要为该服务下的微服务名称。
│     │    └── resources.yaml            # 组件一的资源列表
│     ├── WiseEyeChaosMonkeyPortal        # 组件二:ChaosMonkey 网页服务
│     │    └── resources.yaml            # 组件二的资源列表
│     ├── environment                     # 组件三:环境
│     │    └── resources.yaml            # 组件三的资源列表
│     └── functions                       # 组件四:函数
│           ├── resources.yaml            # 组件四的资源列表
│           └── values.yaml               # 组件四的values.yaml
│
└── specs                                  # 规格总目录(必须)
      ├── cn_dev_default                   # cn_dev_default 规格目录,一般可用于描述一个开发用途的服务环境所使用的基础设施  
      └── cn_product_default               # cn_product_default 规格目录,一般可用于描述一个生产用途的服务环境所使用的基础设施
            └── functions                  # 与global下functions目录的相对路径一致
                  └── values.yaml          # 用于覆盖global下functions目录的values.yaml
support.huaweicloud.com/devg-appstage/appstage_06_0063.html