Helm: Может ли Helm игнорировать {{expr}}, который нужен только для настройки, но не для рендеринга?

Созданный на 12 авг. 2017  ·  16Комментарии  ·  Источник: helm/helm

Существует вариант использования: разверните 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}}, который нужен только для настройки, но не для рендеринга?

questiosupport

Самый полезный комментарий

Жизнеспособный прием - позволить Helm отображать шаблон как необработанную строку. Обратите внимание на открывающую и закрывающую фигурные скобки с обратной кавычкой:

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

Все 16 Комментарий

У меня есть аналогичный пример использования шаблона стиля 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

Можете добавить

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

и будет правильно шаблон

Потрясающие!!!. Это сработало. Спасибо.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги