有一个用例:将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}}(仅用于配置而不用于渲染)?
我有一个类似的用例,在配置映射中有一个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
你可以加
{{` ....... `}}
并将模板正确
惊人的!!!。 有效。 谢谢。
最有用的评论
一个可行的办法是让Helm将模板呈现为原始字符串。 注意带有反引号的左花括号和右花括号: