嗨,我是Kubernetes and 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-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>
...
请告知这是否可行,或者是否还有其他更好的方法。
谢谢
答案 0 :(得分:1)
我的理解是,您想复制最后一个代码段中概述的代码,并且不想在代码段本身中添加默认值,对吗?
如果是这种情况,则不应使用values.yaml
。
values.yaml
文件应包含模板的键值对之类的默认值。
不过,您可以按照helm guide中的说明在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 }}
是你的朋友!