Helm: Helm이 ꡬ성 μš©μ΄μ§€λ§Œ λ Œλ”λ§ν•˜μ§€ μ•ŠλŠ” {{expr}}을 λ¬΄μ‹œν•˜λ„λ‘ 지원할 수 μžˆλ‚˜μš”?

에 λ§Œλ“  2017λ…„ 08μ›” 12일  Β·  16μ½”λ©˜νŠΈ  Β·  좜처: helm/helm

μ‚¬μš© 사둀가 μžˆμŠ΅λ‹ˆλ‹€. Prometheusλ₯Ό StatefulSet으둜 λ°°ν¬ν•˜κ³  κ²½κ³  κ·œμΉ™μ„ ConfigMap으둜 ꡬ성 ν•©λ‹ˆλ‹€.

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

AFAIK go ν…œν”Œλ¦Ώμ—μ„œ {{ }} μ΄μŠ€μΌ€μ΄ν”„ν•˜λŠ” 것은 맀우 μ–΄λ ΅κ³  λ‹€λ₯Έ κ³³μ—μ„œ νŒŒμΌμ„ ν›‘μ–΄ λ³΄λŠ” 것은 훨씬 더 κ°„λ‹¨ν•©λ‹ˆλ‹€.

Go ν…œν”Œλ¦Ώμ—μ„œ 이쀑 μ€‘κ΄„ν˜Έλ₯Ό μ΄μŠ€μΌ€μ΄ν”„ν•˜λŠ” 방법은 {{ "{{" }} μž…λ‹ˆλ‹€. 그것은 κ·Ήλ„λ‘œ 어렡지 μ•Šκ³  μΆ”μ•…ν•©λ‹ˆλ‹€.

λ¬Έμ œμ— λŒ€ν•œ 두 가지 λ³„λ„μ˜ μ†”λ£¨μ…˜μ΄ μžˆμœΌλ―€λ‘œμ΄ 문제λ₯Ό μ’…λ£Œν•˜κ² μŠ΅λ‹ˆλ‹€. λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•Šμ€ 경우 λ‹€μ‹œμ—¬μ‹­μ‹œμ˜€.

@bacongobbler μ•ˆλ…•ν•˜μ„Έμš” Matthew, μ €λŠ” 마크 λ‹€μš΄μ˜ Helm ν…œν”Œλ¦Ώμ—μ„œ μ€‘κ΄„ν˜Έλ₯Ό μ΄μŠ€μΌ€μ΄ν”„ν•˜λŠ” 방법과 μ‹Έμš°κ³  μžˆμŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ λ‹Ήμ‹ μ˜ 해결책을 μ΄ν•΄ν•˜μ§€ λͺ»ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이것을 μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§ν•˜λ €λ©΄ μ–΄λ–»κ²Œν•΄μ•Όν•©λ‹ˆκΉŒ?
(단지 슀 λ‹ˆνŽ«). λ‚˜λŠ” raw / endraw, pre, single backslash, double backslashλ₯Ό μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€-μ„±κ³΅ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€!
μ œμ•ˆ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ ... λ“€μ—¬ μ“°κΈ° λ˜λŠ” λ°±ν‹±μœΌλ‘œ μ½”λ“œ 블둝에 λ„£μœΌλ €κ³ ν•©λ‹ˆλ‹€.

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

μž‘λ™ν•©λ‹ˆλ‹€, thx

apiVersion : v1
μ’…λ₯˜ : ConfigMap
메타 데이터 :
이름 : {{ν…œν”Œλ¦Ώ "fullname". }}-κ·œμΉ™
라벨 :
차트 : "{{.Chart.Name}}-{{.Chart.Version | replace"+ ""_ "}}"
μ—­ν•  : {{template "fullname". }}-κ·œμΉ™ 파일
prometheus : {{template "fullname". }}
데이터:
{{(.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 λ“±κΈ‰