Helm: Kann Helm unterstützen, {{expr}} zu ignorieren, das nur zur Konfiguration dient, aber nicht gerendert wird?

Erstellt am 12. Aug. 2017  ·  16Kommentare  ·  Quelle: helm/helm

Es gibt einen Anwendungsfall: Prometheus als StatefulSet bereitstellen und Warnregeln als

_alerting-rules_ kann hier näher erläutert werden: https://prometheus.io/docs/alerting/rules/#alerting -rules

es sieht aus wie:
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 }}." }
Kann Helm unterstützen, {{expr}} zu ignorieren, das nur zur Konfiguration dient, aber nicht gerendert wird?

questiosupport

Hilfreichster Kommentar

Ein praktikabler Hack besteht darin, Helm die Vorlage als Rohzeichenfolge rendern zu lassen. Beachten Sie die öffnende und schließende geschweifte Klammer mit einem Backtick:

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

Alle 16 Kommentare

Ich habe einen ähnlichen Anwendungsfall, um eine Go-Style-Vorlage in einer Konfigurationszuordnung zu haben. Im Moment versucht das Ruder, die Vorlage auszuwerten und Fehler in der Konfigurationszuordnung zu verursachen.

Ich bin vor einiger Zeit auf dasselbe / ähnliche Problem gestoßen und habe es gelöst, indem ich die Warnregeln als separate Dateien eingebettet habe

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 ist äußerst schwierig, {{ }} in einer Go-Vorlage zu entkommen, und das Einschlürfen der Dateien von einem anderen Ort aus ist viel einfacher.

Um doppelte geschweifte Klammern in Go-Vorlagen zu umgehen, verwenden Sie {{ "{{" }} . Es ist nicht extrem schwierig, nur hässlich.

Ich werde dieses Problem schließen, da wir zwei separate Lösungen für das Problem haben. Öffnen Sie es jedoch erneut, wenn dies nicht behoben wurde.

@bacongobbler Hallo Matthew, ich habe mit Markdown gekämpft, wie man geschweiften Klammern in einer Helm-Vorlage in Markdown entkommt. Vielleicht verstehe ich Ihre Lösung nicht. Wie würde ich das richtig rendern?
(nur ein Ausschnitt). Ich habe Raw / Endraw, Pre, Single Backslash, Double Backslash ausprobiert - kein Erfolg!
Vielen Dank für jeden Vorschlag ... Ich versuche, dies mit Einrückungen oder Backticks in einen Codeblock zu setzen.

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

@ Bacongobbler Ich habe die Lösung gefunden. Ich muss sowohl pre als auch &123; &125;

@ Bacongobbler Ich habe die Lösung gefunden. Ich muss sowohl pre als auch &123; &125;

Könnten Sie bitte ein Beispiel zeigen?
Gibt es eine Möglichkeit, ein Yaml von der Template-Engine auszuschließen?

Ein praktikabler Hack besteht darin, Helm die Vorlage als Rohzeichenfolge rendern zu lassen. Beachten Sie die öffnende und schließende geschweifte Klammer mit einem Backtick:

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

Ein praktikabler Hack besteht darin, Helm die Vorlage als Rohzeichenfolge rendern zu lassen. Beachten Sie die öffnende und schließende geschweifte Klammer mit einem Backtick:

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

Vielen Dank. Das hat das große Problem gelöst

Sie können auch printf dafür verwenden:

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

Ein praktikabler Hack besteht darin, Helm die Vorlage als Rohzeichenfolge rendern zu lassen. Beachten Sie die öffnende und schließende geschweifte Klammer mit einem Backtick:

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

es funktioniert, danke

apiVersion: v1
Art: ConfigMap
Metadaten:
Name: {{Vorlage "vollständiger Name". }} - Regeln
Etiketten:
Diagramm: "{{.Chart.Name}} - {{.Chart.Version | ersetzen" + "" _ "}}"
Rolle: {{Vorlage "vollständiger Name". }} - Regeldateien
prometheus: {{template "fullname". }}
Daten:
{{(.Files.Glob "files / kubernetes.rules"). AsConfig}}
{{(.Files.Glob "files / etcd2.rules"). AsConfig}}
{{(.Files.Glob "files / custom_alert.rules"). AsConfig}}

Das hat bei mir nicht funktioniert.
Nachdem ich 2 Tage lang meinen Kopf geschlagen hatte, konnte ich folgende Arbeit leisten!

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}}

Ein praktikabler Hack besteht darin, Helm die Vorlage als Rohzeichenfolge rendern zu lassen. Beachten Sie die öffnende und schließende geschweifte Klammer mit einem Backtick:

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

Ich kann dem Chor der Bestätigungen hinzufügen, dass dies immer noch funktioniert.

Und möglicherweise benötigen Sie es, damit dies funktioniert:

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 

{{ ....... }}
`` `
und wird richtig Vorlage

Ein praktikabler Hack besteht darin, Helm die Vorlage als Rohzeichenfolge rendern zu lassen. Beachten Sie die öffnende und schließende geschweifte Klammer mit einem Backtick:

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

Leider funktioniert dies nicht mit 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

Du kannst hinzufügen

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

und wird richtig Vorlage

Genial!!!. Es funktionierte. Vielen Dank.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

burnettk picture burnettk  ·  3Kommentare

bq1756 picture bq1756  ·  3Kommentare

adam-sandor picture adam-sandor  ·  3Kommentare

sgoings picture sgoings  ·  3Kommentare

danielcb picture danielcb  ·  3Kommentare