头盔图表(yaml):正则表达式已损坏

头盔图表(yaml):正则表达式已损坏,yaml,prometheus,kubernetes-helm,Yaml,Prometheus,Kubernetes Helm,我正在处理一些正则表达式查询,并且遇到了一些问题,这些查询是我们基本yaml部署的一部分。我遇到的问题是普罗米修斯星图的节点导出器部分。我已经配置了这个: nodeExporter: extraArgs: { collector.filesystem.ignored-fs-types="^(devpts|devtmpfs|mqueue|proc|securityfs|binfmt_misc|debugfs|overlay|pstore|selinuxf

我正在处理一些正则表达式查询,并且遇到了一些问题,这些查询是我们基本yaml部署的一部分。我遇到的问题是普罗米修斯星图的节点导出器部分。我已经配置了这个:

   nodeExporter:
      extraArgs: {
        collector.filesystem.ignored-fs-types="^(devpts|devtmpfs|mqueue|proc|securityfs|binfmt_misc|debugfs|overlay|pstore|selinuxfs|tmpfs|hugetlbfs|nfsd|cgroup|configfs|rpc_pipefs|sysfs|autofs|rootfs)$",
        collector.filesystem.ignored-mount-points="^/etc/.+$",
        collector.netstat.fields="*",
        collector.diskstats.ignored-devices="^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p|dm-)\d+$", # BROKEN
        collector.netclass.ignored-devices=^(?:tun|kube|veth|dummy|docker).+$,                      # BROKEN
        collector.nfs
       }
      tolerations:
        - operator: Exists
如上所述,使用正则表达式的这两行被打断:

 collector.diskstats.ignored-devices="^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p|dm-)\d+$", # BROKEN
 collector.netclass.ignored-devices=^(?:tun|kube|veth|dummy|docker).+$,                      # BROKEN

第一个字符中“nvme”前面的
|
字符和第二个字符中的
?:
字符似乎有问题。我相信这与regex/yaml格式有关,但我不确定如何纠正这一点。

使用
{
,您将开始一个yaml流映射。它通常包含逗号分隔的键值对,尽管您也可以像本例中那样,给出单个值,这将使它们成为具有
null
值的键

在YAML中,一旦输入流样式集合,所有特殊流指示器就不能再用于普通标量。特殊流指示器是
{}[],
。普通标量是不带引号的文本值

第一个断开的值是非法的,因为它包含
[
]
。根据规范,第二个断开的值实际上是合法的,但是相当多的YAML实现阻塞了它,因为
还用作映射键的指示器

您有几个选择:

  • 引用标量。由于标量中没有一个包含单引号,因此使用单引号将每个标量括起来就可以了。通常,您也可以对标量进行双引号引用,但是您需要转义其中的所有双引号字符和所有反斜杠,这对可读性没有帮助
nodeExporter:
附加参数:{
collector.filesystem.ignored fs types=“^(devpts | devtmpfs | mqueue | proc | securityfs | binfmt | misc | debugfs | overlay | pstore | selinux | tmpfs | hugetlbfs | nfsd | cgroup | configfs | rpc | pipefs | sysfs | autofs | rootfs)$”,
collector.filesystem.ignored mount points=“^/etc/+$”,
collector.netstat.fields=“*”,
'collector.diskstats.ignored devices=“^(ram | loop | fd |(h | s | v | xv)d[a-z]| nvme\d+n\d+p | dm-\d+$”,
'collector.netclass.ignored devices=^(?:tun | kube | veth | dummy | docker)。+$,
collector.nfs
}
容忍:
-操作员:存在
  • 使用块标量。块标量通常是输入包含大量特殊字符的标量的最佳方式,因为它们通过缩进结束,因此可以包含任何特殊字符。块标量只能出现在其他块结构中,因此您需要制作
    extraArgs
    块映射:
nodeExporter:
附加参数:
?collector.filesystem.ignored fs types=“^(devpts | devtmpfs | mqueue | proc | securityfs | binfmt | misc | debugfs | overlay | pstore | selinux | tmpfs | hugetlbfs | nfsd | cgroup | configfs | rpc | pipefs | sysfs | autofs | rootfs)$”
?collector.filesystem.ignored mount points=“^/etc/+$”
?收集器.netstat.fields=“*”
? |-
collector.diskstats.ignored devices=“^(ram | loop | fd |(h | s | v | xv)d[a-z]| nvme\d+n\d+p | dm-\d+$”
? |-
collector.netclass.ignored devices=^(?:tun | kube | veth | dummy | docker)+$
?收集器.nfs
容忍:
-操作员:存在
如您所见,现在使用前面提到的
作为关键指示器。 因为它是一个块序列,所以不再需要逗号。
|-
启动一个文本块标量,从中剥离最后的换行符