在 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 缺少任何类型的转换功能的原因,这些转换功能允许像您想要的那样进行操作。
我正在构建 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 缺少任何类型的转换功能的原因,这些转换功能允许像您想要的那样进行操作。