在 Kubernetes YAML 定义中,从文件创建 configmap 时 |+ 和 |- 有什么区别?

21

我遇到了在Kubernetes中从文件创建configmaps的两种语法。

第一种:


apiVersion: v1
data:
  file1.yaml: |+
    parameter1=value1
kind: ConfigMap
metadata:
  name: my-configmap

第二个;

apiVersion: v1
data:
  file1.yaml: | -
    parameter1=value1
kind: ConfigMap
metadata:
  name: my-configmap

|+ 和 |- 有什么区别?

2个回答

34

这是 块折叠标识符

直接引用自链接:

折叠标识符控制字符串末尾的换行符应该如何处理。默认情况下,clip会在字符串末尾放置一个换行符。要删除所有换行符,请在样式标识符后面添加减号(-)进行剥离。clip和strip都忽略实际上在块结尾处有多少换行符; 要保留它们全部,请在样式标识符后面添加加号(+)。

这意味着对于:

apiVersion: v1
data:
  file1.yaml: |-
    parameter1=value1


kind: ConfigMap
metadata:
  name: my-configmap

file1.yaml 的值为:

parameter1=value1

对于:

apiVersion: v1
data:
  file1.yaml: |+
    parameter1=value1


kind: ConfigMap
metadata:
  name: my-configmap

file1.yaml将具有以下值:

parameter1=value1 # line break
# line break
# line break

你最好参考官方的YAML规范,这样你就会注意到你的两个YAML文件都是无效的。 - Anthon
没错,我刚刚删除了导致错误的额外空格。 - Alassane Ndiaye

2
这些是块折叠指示符,它们影响文本块样式标量中末尾换行符的处理方式。默认情况下,如果在|(或>)后没有+-,则这些末尾换行符会被删除,即该标量将作为以单个换行符结尾的字符串加载,而不管末尾是否有多个空行。
如果指定了+,则每个换行符都会被保留,因此对于下一个节点的退格之前的每个空行,该标量将有额外的换行符(除了结束最后一个非空行的换行符)。
如果指定了-,则该标量将被剥离并且不会以换行符结尾,即使文本块样式标量末尾有多个空行。
请注意,您的第二个示例是无效的生产规则表明换行指示符只能与缩进指示符(即数字,如果指定)分开,并且不允许在|-之间添加空格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接