Как включить правила prometheus из другого файла yaml в стабильную / прометейную диаграмму values.yaml? - PullRequest
0 голосов
/ 09 июля 2019

Привет, я новичок в Kubernetes и Helm Chart. Подобный вопрос был задан и получен ответ здесь ( Как установить правила для Прометея в стабильных значениях / диаграмме Прометея. Yaml? )

Но я ищу способ, чтобы правила были определены в другом файле, а затем включить этот файл в values.yaml, чтобы упростить его обслуживание (поскольку у меня более 2000+ строк предупреждений ...)

В частности, это то, что у меня есть в values.yaml:

serverFiles:
  alerts:
    groups:
    - name: kubernetes-apps
      rules:
      - alert: KubePodCrashLooping
        annotations:
          message: Pod {{ $labels.namespace }}/{{ $labels.pod }} ({{ $labels.container
            }}) is restarting {{ printf "%.2f" $value }} times / 5 minutes.
          runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodcrashlooping
        expr: rate(kube_pod_container_status_restarts_total{component="kube-state-metrics"}[15m])
          * 60 * 5 > 0
        for: 1h
        labels:
          severity: critical
... 
<2000 more lines>
...
  rules: {}
  prometheus.yml:
    rule_files:
      - /etc/config/rules
      - /etc/config/alerts

И это то, чего я хотел бы достичь в новом values.yaml:

serverFiles:
  alerts: {{ include from values-alerts.yaml }}
  rules: {}
  prometheus.yml:
    rule_files:
      - /etc/config/rules
      - /etc/config/alerts

И это файл values-alerts.yaml, который я хотел бы включить в values.yaml:

alerts:
  groups:
  - name: kubernetes-apps
    rules:
    - alert: KubePodCrashLooping
      annotations:
        message: Pod {{ $labels.namespace }}/{{ $labels.pod }} ({{ $labels.container
          }}) is restarting {{ printf "%.2f" $value }} times / 5 minutes.
        runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodcrashlooping
      expr: rate(kube_pod_container_status_restarts_total{component="kube-state-metrics"}[15m])
        * 60 * 5 > 0
      for: 1h
      labels:
        severity: critical
... 
<2000 more lines>
...

Пожалуйста, сообщите, если это выполнимо, или есть другой лучший способ сделать это.

Спасибо,

1 Ответ

1 голос
/ 09 июля 2019

Насколько я понимаю, вы хотите продублировать код, описанный в вашем последнем фрагменте кода, и не хотите добавлять значения по умолчанию в сам фрагмент, я прав?

Если это так, тоВы не должны использовать values.yaml.Файл values.yaml должен содержать значения по умолчанию для таких вещей, как пары ключ-значение для ваших шаблонов.

Однако вы можете включить templates в templates, как указано в руководстве по управлению (комментарии после ###):

### Define a template (this can be a seperate file)
{{- define "mychart.labels" }}  
  labels:
    generator: helm
    date: {{ now | htmlDate }}
{{- end }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
  {{- template "mychart.labels" }} ### Include the template

Выход:

# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: running-panda-configmap
  labels:
    generator: helm
    date: 2016-11-02

Так что вместо including values-alert в values.yaml вы можете include файлв templates/ вам нужно и {{ template }} разметить.

Не забывайте отступы, и что helm template ваш друг!

...