Helm: Helm是否可以支持忽略{{expr}}(仅用于配置而不用于渲染)?

创建于 2017-08-12  ·  16评论  ·  资料来源: helm/helm

有一个用例:将Prometheus部署为StatefulSet,将配置警报规则部署为ConfigMap

_alerting-rules_可以在此处获取更多详细信息: https: //prometheus.io/docs/alerting/rules/#alerting -rules

看起来像:
ALERT InstanceMemoryOverload IF node_memory_Active >= 1 FOR 1m LABELS { service = "k8s_metrics", alertname = "InstanceMemoryOverload" } ANNOTATIONS { summary = "Instance {{ $labels.instance }} memory overload", description = "{{ $labels.instance }} memory overload for more than 1 minutes, now is {{ $value }}." }
Helm是否可以支持忽略{{expr}}(仅用于配置而不用于渲染)?

questiosupport

最有用的评论

一个可行的办法是让Helm将模板呈现为原始字符串。 注意带有反引号的左花括号和右花括号:

# Excerpt from a Prometheus Alertmanager yaml
receivers:
- name: slack-receiver
  slack_configs:
  - text: |-
      {{`{{ range .Alerts }}
        *Alert:* {{ .Annotations.summary }}
      {{ end }}`}}

所有16条评论

我有一个类似的用例,在配置映射中有一个go样式模板。 目前,舵手正在尝试评估模板,并在配置图中导致错误。

不久前,我遇到了这个相同/相似的问题,并通过将警报规则作为单独的文件嵌入来解决了该问题,例如

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "fullname" . }}-rules
  labels:
    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
    role: {{ template "fullname" . }}-rulefiles
    prometheus: {{ template "fullname" . }}
data:
  {{ (.Files.Glob "files/kubernetes.rules").AsConfig }}
  {{ (.Files.Glob "files/etcd2.rules").AsConfig }}
  {{ (.Files.Glob "files/custom_alert.rules").AsConfig }}

AFAIK很难在go模板中转义{{ }} ,并且将文件从其他地方拖入要容易得多。

在Go模板中转义双大括号的方法是使用{{ "{{" }} 。 这不是很困难,只是丑陋。

我要解决此问题,因为我们有两个单独的解决方案,但如果此问题尚未解决,请重新打开。

@bacongobbler你好,马修,我一直在与如何在markdown的Helm模板中转义花括号作斗争。 也许我不了解您的解决方案。 我该如何正确渲染呢?
(只是一小段)。 我尝试过原始/绘制,预,单反斜杠,双反斜杠-没有成功!
感谢您的任何建议...我正在尝试将其放在带有缩进或反引号的代码块中。

  apiVersion: apps/v1beta1
  kind: Deployment
  metadata:
    name: {{ template "fullname" . }}

@bacongobbler我找到了解决方案。 我需要同时使用pre和&123; &125;

@bacongobbler我找到了解决方案。 我需要同时使用pre和&123; &125;

你能举个例子吗?
有没有办法从模板引擎中排除一个Yaml?

一个可行的办法是让Helm将模板呈现为原始字符串。 注意带有反引号的左花括号和右花括号:

# Excerpt from a Prometheus Alertmanager yaml
receivers:
- name: slack-receiver
  slack_configs:
  - text: |-
      {{`{{ range .Alerts }}
        *Alert:* {{ .Annotations.summary }}
      {{ end }}`}}

一个可行的办法是让Helm将模板呈现为原始字符串。 注意带有反引号的左花括号和右花括号:

# Excerpt from a Prometheus Alertmanager yaml
receivers:
- name: slack-receiver
  slack_configs:
  - text: |-
      {{`{{ range .Alerts }}
        *Alert:* {{ .Annotations.summary }}
      {{ end }}`}}

非常感谢你。 那解决了大问题

您还可以为此使用printf:

{{ printf "{{ some value }}" }}

一个可行的办法是让Helm将模板呈现为原始字符串。 注意带有反引号的左花括号和右花括号:

# Excerpt from a Prometheus Alertmanager yaml
receivers:
- name: slack-receiver
  slack_configs:
  - text: |-
      {{`{{ range .Alerts }}
        *Alert:* {{ .Annotations.summary }}
      {{ end }}`}}

它有效,谢谢

apiVersion:v1
种类:ConfigMap
元数据:
名称:{{模板“全名”。 }}规则
标签:
图表:“ {{.Chart.Name}}-{{.Chart.Version |替换为“ +”“ _”}}“
角色:{{模板“全名”。 }}-rulefiles
普罗米修斯:{{模板“全名”。 }}
数据:
{{(.Files.Glob“ files / kubernetes.rules”)。AsConfig}}
{{(.Files.Glob“ files / etcd2.rules”)。AsConfig}}
{{(.Files.Glob“ files / custom_alert.rules”)。AsConfig}}

这对我不起作用。
敲了两天后,我可以进行以下工作了!

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "fullname" . }}-rules
  labels:
    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
    role: {{ template "fullname" . }}-rulefiles
    prometheus: {{ template "fullname" . }}
data:
  {{- (.Files.Glob "files/kubernetes.rules").AsConfig | nindent 2}}

一个可行的办法是让Helm将模板呈现为原始字符串。 注意带有反引号的左花括号和右花括号:

# Excerpt from a Prometheus Alertmanager yaml
receivers:
- name: slack-receiver
  slack_configs:
  - text: |-
      {{`{{ range .Alerts }}
        *Alert:* {{ .Annotations.summary }}
      {{ end }}`}}

我可以添加确认这仍然有效的合唱。

您可能需要它才能使它起作用:

https://www.vaultproject.io/docs/platform/k8s/injector/examples/

cat <<EOF >> ./patch.yaml
spec:
  template:
    metadata:
      annotations:
        vault.hashicorp.com/agent-inject: "true"
        vault.hashicorp.com/agent-inject-status: "update"
        vault.hashicorp.com/agent-inject-secret-db-creds: "database/creds/db-app"
        vault.hashicorp.com/agent-inject-template-db-creds: |
          {{- with secret "database/creds/db-app" -}}
          postgres://{{ .Data.username }}:{{ .Data.password }}<strong i="13">@postgres</strong>:5432/appdb?sslmode=disable
          {{- end }}
        vault.hashicorp.com/role: "db-app"
        vault.hashicorp.com/ca-cert: "/vault/tls/ca.crt"
        vault.hashicorp.com/client-cert: "/vault/tls/client.crt"
        vault.hashicorp.com/client-key: "/vault/tls/client.key"
        vault.hashicorp.com/tls-secret: "vault-tls-client"
EOF
spec:
  groups:
  - name: alertrules.kafkalag
    rules:
    - alert: AssessmentAggregator lag
      expr: sum(samza_pipeline_metrics_consumer_lag{job_name= "AssessmentAggregator"}) > {{ .Values.assessment_aggregator_threshold }}
      for: 5m
      labels:
        severity: critical
      annotations:
        message: {{`"AssessmentAggregator lag is {{$value}}"`}}
        summary: AssessmentAggregator lag is Critical
````
You can add 

{{ ....... }}
```
并将模板正确

一个可行的办法是让Helm将模板呈现为原始字符串。 注意带有反引号的左花括号和右花括号:

# Excerpt from a Prometheus Alertmanager yaml
receivers:
- name: slack-receiver
  slack_configs:
  - text: |-
      {{`{{ range .Alerts }}
        *Alert:* {{ .Annotations.summary }}
      {{ end }}`}}

不幸的是,使用promtool无效。 https://prometheus.io/docs/prometheus/latest/configuration/unit_testing_rules/

spec:
  groups:
  - name: alertrules.kafkalag
    rules:
    - alert: AssessmentAggregator lag
      expr: sum(samza_pipeline_metrics_consumer_lag{job_name= "AssessmentAggregator"}) > {{ .Values.assessment_aggregator_threshold }}
      for: 5m
      labels:
        severity: critical
      annotations:
        message: {{`"AssessmentAggregator lag is {{$value}}"`}}
        summary: AssessmentAggregator lag is Critical

你可以加

{{` ....... `}}

并将模板正确

惊人的!!!。 有效。 谢谢。

此页面是否有帮助?
0 / 5 - 0 等级