特殊语法
#
在 config.yaml 中注入环境变量config.yaml 支持动态注入环境变量。 如果你想在部署时动态控制某些内容,则可以使用此功能。 环境注入的基本语法为 ${ENV}
, 环境变量的值将从当前进程获取。
为环境变量配置默认值
语法为 ${ENV:-DEFAULT_VALUE}
, 如果找不到 ENV
这个环境变量,则会使用 DEFAULT_VALUE 作为默认值。
#
示例env:
结果:
#
在 config.yaml 中使用 include 语法引入其他文件内容config.yaml 支持通过 include 语法来实现配置的高度的封装,例如 "抽象","继承","重写" 等。 include 的基本语法为 ${_INCLUDE_:- file/rel/path | nindent 2}
,其中 nindent 为文件引入时的整体缩进。
#
示例1:通过 include 语法组合 config.yaml这里我们使用 部署配置示例 来演示。
config.yaml:
/service/productpage.yaml:
/service/details.yaml:
目录的结构为:
如何验证
You can use nhctl render ./config.yaml
to verify the result, which will get the rendered result.
#
示例2:对配置进行抽象对于许多服务的开发配置来说,很可能是近似的。 如果发生了改动,往往需要全部一起改, 对于那些相同的配置,可以将其进行抽象:
config.yaml:
/service/productpage.yaml:
/service/details.yaml:
/base/dev-config.yaml:
目录的结构为:
使用 nhctl 渲染./config.yaml
获取结果:
#
示例3:"重载" 配置配置不一定完全相同, 例如每个服务使用的开发镜像和启动命令不一定一样, 如何在抽象的情况下又进行定制化呢?
这里以 示例2
为例,productpage 使用了基础的 dev-config.yaml 作为 dev 部分内容。 同时,定义了 gitUrl
和 image
覆盖 dev-config.yaml 已经定义好的内容。 另外,还定义了 resources
拓展了 dev-config.yaml。
/service/productpage.yaml:
/base/dev-config.yaml:
目录的结构为:
使用 nhctl 渲染./config.yaml
获取结果: