【问题标题】:How to include prometheus rules from another yaml file in stable/prometheus chart values.yaml?如何在 stable/prometheus 图表 values.yaml 中包含来自另一个 yaml 文件的普罗米修斯规则?
【发布时间】:2019-11-18 10:10:57
【问题描述】:

您好,我是 Kubernetes 和 Helm Chart 的新手。此处已提出并回答了类似的问题 (How to set prometheus rules in stable/prometheus chart values.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.yaml 中的values-alerts.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>
...

请告知这是否可行,或者是否有其他更好的方法。

谢谢,

【问题讨论】:

  • 下面的解决方案是否达到了您的预期效果?

标签: kubernetes prometheus kubernetes-helm


【解决方案1】:

我的理解是,您想复制上一个代码 sn-p 中概述的代码,并且您不想将默认值添加到 sn-p 本身,对吗?

如果是这种情况,那么您不应该使用values.yamlvalues.yaml 文件应包含模板的键值对等默认值。

但是,您可以在templates 中包含templates,如helm guide 中所述(### 之后的cmets):

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

因此,您可以在values.yaml 中使用include 中的templates/ 文件,而不是including 中的values-alert,并在标签中使用{{ template }}

别忘了缩进,helm template 是你的朋友!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    相关资源
    最近更新 更多