您好,我是 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>
...
请告知这是否可行,或者是否有其他更好的方法。
谢谢,
最佳答案
我的理解是,您想要复制上一个代码片段中概述的代码,并且不想向代码片段本身添加默认值,对吗?
如果是这种情况,那么您不应使用 values.yaml
。
values.yaml
文件应包含模板的键值对等默认值。
但是,您可以在 templates
中包含 templates
,如 helm guide 中所述。 (### 之后的评论):
### 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
中包含
该文件,而不是在 values.yaml
中包含
您需要的 templates/
和 {{ template }}
标签。
不要忘记缩进,helm 模板
是你的 friend !
关于kubernetes - 如何将另一个 yaml 文件中的 prometheus 规则包含在 stable/prometheus 图表 value.yaml 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56942637/