Существует вариант использования: разверните Prometheus как StatefulSet и настройте правила предупреждений как
_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 на карте конфигурации. Прямо сейчас helm пытается оценить шаблон и вызывает ошибки в карте конфигурации.
Некоторое время назад я столкнулся с этой же / аналогичной проблемой и решил ее, встраивая правила предупреждений в виде отдельных файлов, например
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 }}
Насколько мне известно, очень сложно избежать {{ }}
в шаблоне go, а прихлебать файлы откуда-то гораздо проще.
Чтобы избежать двойных фигурных скобок в шаблонах Go, используйте {{ "{{" }}
. Это не очень сложно, просто некрасиво.
Я собираюсь закрыть эту проблему, так как у нас есть два отдельных решения проблемы, но, пожалуйста, откройте заново, если она не была решена.
@bacongobbler Привет, Мэтью, я борюсь с тем, как избежать фигурных скобок в шаблоне Helm в уценке. Может я не понимаю твоего решения. Как мне это сделать правильно?
(просто отрывок). Я пробовал raw / endraw, pre, одинарную обратную косую черту, двойную обратную косую черту - безуспешно!
спасибо за любое предложение ... Я пытаюсь поместить это в блок кода с отступами или обратными кавычками.
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
метаданные:
name: {{шаблон "полное имя". }}-правила
ярлыки:
диаграмма: "{{.Chart.Name}} - {{.Chart.Version | replace" + "" _ "}}"
роль: {{шаблон "полное имя". }} - файлы правил
прометей: {{шаблон "полное имя". }}
данные:
{{(.Files.Glob "files / kubernetes.rules"). AsConfig}}
{{(.Files.Glob "files / etcd2.rules"). AsConfig}}
{{(.Files.Glob "files / custom_alert.rules"). AsConfig}}
У меня это не сработало.
После 2-х дневных ударов головой смогла сделать следующие работы!
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 отображать шаблон как необработанную строку. Обратите внимание на открывающую и закрывающую фигурные скобки с обратной кавычкой: