Skip to content

Commit 55ef7c7

Browse files
authored
[kube-prometheus-stack] Parameterize job names (#6228)
1 parent f764182 commit 55ef7c7

34 files changed

+194
-72
lines changed

charts/kube-prometheus-stack/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ name: kube-prometheus-stack
3131
sources:
3232
- https://github.com/prometheus-community/helm-charts
3333
- https://github.com/prometheus-operator/kube-prometheus
34-
version: 78.3.0
34+
version: 78.3.1
3535
# renovate: github=prometheus-operator/prometheus-operator
3636
appVersion: v0.86.0
3737
kubeVersion: ">=1.25.0-0"

charts/kube-prometheus-stack/hack/sync_grafana_dashboards.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,18 @@ def new_representer(dumper, data):
113113
'job=\\"prometheus-k8s\\",namespace=\\"monitoring\\"': {
114114
'replacement': '',
115115
},
116+
'job=\\"kubelet\\"': {
117+
'replacement': 'job=\\"`}}{{ $kubeletJob }}{{`\\"',
118+
'init': '{{- $kubeletJob := include "kube-prometheus-stack-kubelet.name" . }}'},
119+
'job=\\"kube-controller-manager\\"': {
120+
'replacement': 'job=\\"`}}{{ $kubeControllerManagerJob }}{{`\\"',
121+
'init': '{{- $kubeControllerManagerJob := include "kube-prometheus-stack-kube-controller-manager.name" . }}'},
122+
'job=\\"kube-scheduler\\"': {
123+
'replacement': 'job=\\"`}}{{ $kubeSchedulerJob }}{{`\\"',
124+
'init': '{{- $kubeSchedulerJob := include "kube-prometheus-stack-kube-scheduler.name" . }}'},
125+
'job=\\"kube-proxy\\"': {
126+
'replacement': 'job=\\"`}}{{ $kubeProxyJob }}{{`\\"',
127+
'init': '{{- $kubeProxyJob := include "kube-prometheus-stack-kube-proxy.name" . }}'},
116128
}
117129

118130
# standard header
@@ -122,7 +134,7 @@ def new_representer(dumper, data):
122134
https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack
123135
*/ -}}
124136
{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}
125-
{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=%(min_kubernetes)s" $kubeTargetVersion) (semverCompare "<%(max_kubernetes)s" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled%(condition)s }}
137+
{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=%(min_kubernetes)s" $kubeTargetVersion) (semverCompare "<%(max_kubernetes)s" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled%(condition)s }}%(init_line)s
126138
apiVersion: v1
127139
kind: ConfigMap
128140
metadata:
@@ -218,13 +230,16 @@ def patch_dashboards_json(content, multicluster_key):
218230

219231
content = json.dumps(content_struct, separators=(',', ':'))
220232
content = content.replace('":multicluster:"', '`}}{{ if %s }}0{{ else }}2{{ end }}{{`' % multicluster_key,)
233+
init_line = ''
221234

222235
for line in replacement_map:
236+
if line in content and replacement_map[line].get('init'):
237+
init_line += '\n' + replacement_map[line]['init']
223238
content = content.replace(line, replacement_map[line]['replacement'])
224239
except (ValueError, KeyError):
225240
pass
226241

227-
return "{{`" + content + "`}}"
242+
return init_line, "{{`" + content + "`}}"
228243

229244

230245
def patch_json_set_timezone_as_variable(content):
@@ -261,16 +276,18 @@ def jsonnet_import_callback(base, rel):
261276

262277

263278
def write_group_to_file(resource_name, content, url, destination, min_kubernetes, max_kubernetes, multicluster_key):
279+
init_line, content = patch_dashboards_json(content, multicluster_key)
280+
264281
# initialize header
265282
lines = header % {
266283
'name': resource_name,
267284
'url': url,
268285
'condition': condition_map.get(resource_name, ''),
269286
'min_kubernetes': min_kubernetes,
270-
'max_kubernetes': max_kubernetes
287+
'max_kubernetes': max_kubernetes,
288+
'init_line': init_line,
271289
}
272290

273-
content = patch_dashboards_json(content, multicluster_key)
274291
content = patch_json_set_timezone_as_variable(content)
275292
content = patch_json_set_editable_as_variable(content)
276293
content = patch_json_set_interval_as_variable(content)

charts/kube-prometheus-stack/hack/sync_prometheus_rules.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,10 +205,22 @@ def new_representer(dumper, data):
205205
'replacement': 'job="{{ $kubeStateMetricsJob }}", namespace{{ $namespaceOperator }}"{{ $targetNamespace }}"',
206206
'limitGroup': ['kubernetes-apps'],
207207
'init': '{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }}{{- $namespaceOperator := .Values.defaultRules.appNamespacesOperator | default "=~" }}'},
208-
'job="kubelet"': {
209-
'replacement': 'job="kubelet", namespace{{ $namespaceOperator }}"{{ $targetNamespace }}"',
208+
'job="kubelet", metrics_path="/metrics': {
209+
'replacement': 'job="{{ $kubeletJob }}", namespace{{ $namespaceOperator }}"{{ $targetNamespace }}", metrics_path="/metrics',
210210
'limitGroup': ['kubernetes-storage'],
211-
'init': '{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }}{{- $namespaceOperator := .Values.defaultRules.appNamespacesOperator | default "=~" }}'},
211+
'init': '{{- $kubeletJob := include "kube-prometheus-stack-kubelet.name" . }}\n{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }}\n{{- $namespaceOperator := .Values.defaultRules.appNamespacesOperator | default "=~" }}'},
212+
'job="kubelet"': {
213+
'replacement': 'job="{{ $kubeletJob }}"',
214+
'init': '{{- $kubeletJob := include "kube-prometheus-stack-kubelet.name" . }}'},
215+
'job="kube-controller-manager"': {
216+
'replacement': 'job="{{ $kubeControllerManagerJob }}"',
217+
'init': '{{- $kubeControllerManagerJob := include "kube-prometheus-stack-kube-controller-manager.name" . }}'},
218+
'job="kube-scheduler"': {
219+
'replacement': 'job="{{ $kubeSchedulerJob }}"',
220+
'init': '{{- $kubeSchedulerJob := include "kube-prometheus-stack-kube-scheduler.name" . }}'},
221+
'job="kube-proxy"': {
222+
'replacement': 'job="{{ $kubeProxyJob }}"',
223+
'init': '{{- $kubeProxyJob := include "kube-prometheus-stack-kube-proxy.name" . }}'},
212224
'runbook_url: https://runbooks.prometheus-operator.dev/runbooks/': {
213225
'replacement': 'runbook_url: {{ .Values.defaultRules.runbookUrl }}/',
214226
'init': ''},

charts/kube-prometheus-stack/templates/_helpers.tpl

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,53 @@ Use the Alertmanager namespace override for multi-namespace deployments in combi
165165
{{- end -}}
166166
{{- end -}}
167167

168+
{{/*
169+
Allow kubelet job name to be overridden
170+
*/}}
171+
{{- define "kube-prometheus-stack-kubelet.name" -}}
172+
{{- if index .Values "kubelet" "jobNameOverride" -}}
173+
{{- index .Values "kubelet" "jobNameOverride" -}}
174+
{{- else -}}
175+
{{- print "kubelet" -}}
176+
{{- end -}}
177+
{{- end -}}
178+
179+
180+
{{/*
181+
Allow kube-controller-manager job name to be overridden
182+
*/}}
183+
{{- define "kube-prometheus-stack-kube-controller-manager.name" -}}
184+
{{- if index .Values "kubeControllerManager" "jobNameOverride" -}}
185+
{{- index .Values "kubeControllerManager" "jobNameOverride" -}}
186+
{{- else -}}
187+
{{- print "kube-controller-manager" -}}
188+
{{- end -}}
189+
{{- end -}}
190+
191+
192+
{{/*
193+
Allow kube-scheduler job name to be overridden
194+
*/}}
195+
{{- define "kube-prometheus-stack-kube-scheduler.name" -}}
196+
{{- if index .Values "kubeScheduler" "jobNameOverride" -}}
197+
{{- index .Values "kubeScheduler" "jobNameOverride" -}}
198+
{{- else -}}
199+
{{- print "kube-scheduler" -}}
200+
{{- end -}}
201+
{{- end -}}
202+
203+
204+
{{/*
205+
Allow kube-proxy job name to be overridden
206+
*/}}
207+
{{- define "kube-prometheus-stack-kube-proxy.name" -}}
208+
{{- if index .Values "kubeProxy" "jobNameOverride" -}}
209+
{{- index .Values "kubeProxy" "jobNameOverride" -}}
210+
{{- else -}}
211+
{{- print "kube-proxy" -}}
212+
{{- end -}}
213+
{{- end -}}
214+
168215
{{/*
169216
Allow kube-state-metrics job name to be overridden
170217
*/}}

charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/cluster-total.yaml

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/controller-manager.yaml

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-multicluster.yaml

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)