在 helm 图表中附加 yaml 锚点

Appending yaml anchors in helm charts

我正在构建 helm chart,我的 values.yaml 文件出现问题。由于 yaml 本身不支持变量,因此我尝试了锚点,但尽管这样可行:

foo: &anchor A
bar: *anchor

有输出

foo: A
bar: A

我需要将锚点附加到某个字符串,例如

foo: &anchor A
baz: &anotherAnchor B
bar: www.*anchor.*anotherAnchor.com

有输出

foo: A
baz: B
bar: www.A.B.com

甚至可以这样做吗?

与今天存在的 YAML 不同。 YAML 没有转换数据的功能。人们倾向于使用像 Jinja 这样的模板引擎来做这样的事情作为预处理步骤(参见 Ansible、SaltStack 等)。

请注意,虽然 anchor/alias 功能似乎经常用于重复数据删除,但这绝不是本意。最初,它们旨在用于序列化内存中的数据结构,这些数据结构可能包含循环,或多个变量指向同一对象的任何其他内容。在 YAML 语义中,您的前两个代码片段不相同,因为第一个定义 one 字符串对象 A 在两个位置引用,而第二个定义 两个个字符串对象A。但是,对于配置数据,这通常没有什么区别(除非配置在内存中修改并写回)。

这就是 YAML 缺少任何类型的转换功能的原因,这些转换功能允许像您想要的那样进行操作。