Helm: Dapatkah Helm mendukung untuk mengabaikan {{expr}} yang hanya untuk konfigurasi tetapi tidak merender?

Dibuat pada 12 Agu 2017  ·  16Komentar  ·  Sumber: helm/helm

Ada kasus penggunaan: terapkan Prometheus sebagai StatefulSet dan config alerting-rules sebagai ConfigMap .

_alerting-rules_ dapat menjelaskan lebih detail di sini: https://prometheus.io/docs/alerting/rules/#alerting -rules

sepertinya:
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 }}." }
Dapatkah Helm mendukung untuk mengabaikan {{expr}} yang hanya untuk konfigurasi tetapi tidak merender?

questiosupport

Komentar yang paling membantu

Sebuah hack yang layak adalah membiarkan Helm merender template sebagai string mentah. Perhatikan tanda kurung kurawal buka dan tutup dengan backtick:

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

Semua 16 komentar

Saya memiliki kasus penggunaan serupa untuk memiliki template gaya go di peta konfigurasi. Saat ini helm mencoba mengevaluasi template dan menyebabkan kesalahan pada config map.

Saya mengalami masalah yang sama / serupa beberapa waktu yang lalu dan menyelesaikannya dengan menyematkan termasuk aturan peringatan sebagai file terpisah, seperti

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 sangat sulit untuk melepaskan {{ }} dalam template go, dan menghirup file dari tempat lain jauh lebih sederhana.

Cara untuk melepaskan diri dari tanda kurung kurawal ganda di template Go adalah dengan menggunakan {{ "{{" }} . Ini tidak terlalu sulit, hanya jelek.

Saya akan menutup masalah ini karena kami memiliki dua solusi terpisah untuk masalah tersebut, tetapi buka kembali jika ini belum diselesaikan.

@bacongobbler Halo Matthew, Saya telah berjuang dengan cara melepaskan tanda kurung kurawal di template Helm dalam penurunan harga. Mungkin saya tidak memahami solusi Anda. Bagaimana saya membuat ini dengan benar?
(hanya cuplikan). Saya sudah mencoba raw / endraw, pre, single backslash, double backslash - Tidak berhasil!
terima kasih atas saran apa pun ... Saya mencoba untuk meletakkan ini di blok kode dengan indentasi atau backticks.

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

@ bacongobbler saya menemukan solusinya. Saya perlu menggunakan pra dan &123; &125;

@ bacongobbler saya menemukan solusinya. Saya perlu menggunakan pra dan &123; &125;

Bisakah Anda menunjukkan contoh?
Apakah ada cara untuk mengecualikan satu yaml dari mesin template?

Sebuah hack yang layak adalah membiarkan Helm merender template sebagai string mentah. Perhatikan tanda kurung kurawal buka dan tutup dengan backtick:

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

Sebuah hack yang layak adalah membiarkan Helm merender template sebagai string mentah. Perhatikan tanda kurung kurawal buka dan tutup dengan backtick:

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

Terima kasih banyak. Itu memecahkan masalah besar

Anda juga dapat menggunakan printf untuk itu:

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

Sebuah hack yang layak adalah membiarkan Helm merender template sebagai string mentah. Perhatikan tanda kurung kurawal buka dan tutup dengan backtick:

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

berhasil, terima kasih

apiVersion: v1
jenis: ConfigMap
metadata:
nama: {{template "nama lengkap". }} - aturan
label:
bagan: "{{.Chart.Name}} - {{.Chart.Version | ganti" + "" _ "}}"
peran: {{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}}

Ini tidak berhasil untuk saya.
Setelah membenturkan kepala saya selama 2 hari bisa membuat pekerjaan berikut!

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

Sebuah hack yang layak adalah membiarkan Helm merender template sebagai string mentah. Perhatikan tanda kurung kurawal buka dan tutup dengan backtick:

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

Saya dapat menambahkan paduan suara konfirmasi bahwa ini masih berfungsi.

Dan Anda mungkin membutuhkannya agar ini berfungsi:

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 

{{ ....... }}
``
dan akan membuat template dengan benar

Sebuah hack yang layak adalah membiarkan Helm merender template sebagai string mentah. Perhatikan tanda kurung kurawal buka dan tutup dengan backtick:

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

Sayangnya ini tidak bekerja dengan menggunakan 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

Kamu bisa menambahkan

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

dan akan membuat template dengan benar

Luar biasa !!!. Berhasil. Terima kasih.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat