Hay un caso de uso: implementar Prometheus como StatefulSet y configurar las reglas de alerta como ConfigMap .
_alerting-rules_ puede obtener más detalles aquí: https://prometheus.io/docs/alerting/rules/#alerting -rules
parece que:
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 }}."
}
¿Puede Helm admitir ignorar {{expr}} que es solo para configuración pero no para renderizado?
Tengo un caso de uso similar para tener una plantilla de estilo go en un mapa de configuración. En este momento, helm está tratando de evaluar la plantilla y está provocando errores en el mapa de configuración.
Me encontré con este mismo problema / similar hace un tiempo y lo resolví incrustando, incluidas las reglas de alerta, como archivos separados, como
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, es extremadamente difícil escapar de {{ }}
en una plantilla go, y absorber los archivos desde otra parte es mucho más simple.
La forma de escapar de las llaves dobles en las plantillas Go es usar {{ "{{" }}
. No es extremadamente difícil, solo feo.
Voy a cerrar este problema ya que tenemos dos soluciones separadas para el problema, pero vuelva a abrirlo si no se ha resuelto.
@bacongobbler Hola Matthew, He estado luchando con cómo escapar de las llaves en una plantilla de Helm en la rebaja. Quizás no entiendo tu solución. ¿Cómo renderizaría esto correctamente?
(solo un fragmento). Probé raw / endraw, pre, barra invertida simple, barra invertida doble, ¡sin éxito!
gracias por cualquier sugerencia ... Estoy tratando de poner esto en un bloque de código con sangrías o comillas inversas.
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ template "fullname" . }}
@bacongobbler encontré la solución. Necesito usar tanto pre como &123; &125;
@bacongobbler encontré la solución. Necesito usar tanto pre como
&123; &125;
¿Podría mostrar un ejemplo?
¿Hay alguna forma de excluir un yaml del motor de plantillas?
Un truco viable es permitir que Helm renderice la plantilla como una cadena sin formato. Tenga en cuenta el corchete de apertura y cierre con una tilde al revés:
# Excerpt from a Prometheus Alertmanager yaml
receivers:
- name: slack-receiver
slack_configs:
- text: |-
{{`{{ range .Alerts }}
*Alert:* {{ .Annotations.summary }}
{{ end }}`}}
Un truco viable es permitir que Helm renderice la plantilla como una cadena sin formato. Tenga en cuenta el corchete de apertura y cierre con una tilde al revés:
# Excerpt from a Prometheus Alertmanager yaml receivers: - name: slack-receiver slack_configs: - text: |- {{`{{ range .Alerts }} *Alert:* {{ .Annotations.summary }} {{ end }}`}}
Muchas gracias. Eso resolvió el gran problema
también puedes usar printf para eso:
{{ printf "{{ some value }}" }}
Un truco viable es permitir que Helm renderice la plantilla como una cadena sin formato. Tenga en cuenta el corchete de apertura y cierre con una tilde al revés:
# Excerpt from a Prometheus Alertmanager yaml receivers: - name: slack-receiver slack_configs: - text: |- {{`{{ range .Alerts }} *Alert:* {{ .Annotations.summary }} {{ end }}`}}
funciona, gracias
apiVersion: v1
tipo: ConfigMap
metadatos:
nombre: {{plantilla "nombre completo". }}-reglas
etiquetas:
gráfico: "{{.Chart.Name}} - {{.Chart.Version | reemplazar" + "" _ "}}"
rol: {{plantilla "nombre completo". }} - archivos de reglas
prometheus: {{plantilla "nombre completo". }}
datos:
{{(.Files.Glob "files / kubernetes.rules"). AsConfig}}
{{(.Files.Glob "archivos / etcd2.rules"). AsConfig}}
{{(.Files.Glob "files / custom_alert.rules"). AsConfig}}
Esto no funcionó para mí.
¡Después de golpearme la cabeza durante 2 días, pude hacer que lo siguiente funcionara!
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}}
Un truco viable es permitir que Helm renderice la plantilla como una cadena sin formato. Tenga en cuenta el corchete de apertura y cierre con una tilde al revés:
# Excerpt from a Prometheus Alertmanager yaml receivers: - name: slack-receiver slack_configs: - text: |- {{`{{ range .Alerts }} *Alert:* {{ .Annotations.summary }} {{ end }}`}}
Puedo agregar al coro de confirmaciones que esto todavía funciona.
Y es posible que lo necesite para que esto funcione:
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
{{ .......
}}
''
y se moldeará correctamente
Un truco viable es permitir que Helm renderice la plantilla como una cadena sin formato. Tenga en cuenta el corchete de apertura y cierre con una tilde al revés:
# Excerpt from a Prometheus Alertmanager yaml receivers: - name: slack-receiver slack_configs: - text: |- {{`{{ range .Alerts }} *Alert:* {{ .Annotations.summary }} {{ end }}`}}
Desafortunadamente, esto no funciona con 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
Puedes añadir
{{` ....... `}}
y se moldeará correctamente
¡¡¡Impresionante!!!. Funcionó. Gracias.
Comentario más útil
Un truco viable es permitir que Helm renderice la plantilla como una cadena sin formato. Tenga en cuenta el corchete de apertura y cierre con una tilde al revés: