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?
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.
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: