From 70afe83c16214ca34445ab51838ab27d8ecf5021 Mon Sep 17 00:00:00 2001 From: Steve Wilkerson Date: Wed, 22 Aug 2018 09:40:24 -0500 Subject: [PATCH] Helm-Toolkit: Add snippet for kubernetes tolerations This adds a helm-toolkit template for injecting pod tolerations via values, similar to how container resources are handled. This allows for custom definition of tolerations instead of defining tolerations for pods directly into the pod templates Change-Id: Ice520fcece425b14ae890ca5980fec9d7428a34d --- .../templates/daemonset-fluent-bit.yaml | 8 +--- fluent-logging/values.yaml | 8 ++++ .../snippets/_kubernetes_tolerations.tpl | 47 +++++++++++++++++++ .../templates/daemonset.yaml | 8 +--- prometheus-node-exporter/values.yaml | 8 ++++ 5 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 helm-toolkit/templates/snippets/_kubernetes_tolerations.tpl diff --git a/fluent-logging/templates/daemonset-fluent-bit.yaml b/fluent-logging/templates/daemonset-fluent-bit.yaml index c82cef8a8..196995eb2 100644 --- a/fluent-logging/templates/daemonset-fluent-bit.yaml +++ b/fluent-logging/templates/daemonset-fluent-bit.yaml @@ -93,12 +93,8 @@ spec: configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }} spec: serviceAccountName: {{ $serviceAccountName }} -{{ if .Values.labels.fluentbit.tolerations }} - tolerations: - - key: node-role.kubernetes.io/master - operator: Exists - - key: node-role.kubernetes.io/node - operator: Exists +{{ if $envAll.Values.pod.tolerations.fluentbit.enabled }} +{{ tuple $envAll "fluentbit" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 6 }} {{ else }} nodeSelector: {{ .Values.labels.fluentbit.node_selector_key }}: {{ .Values.labels.fluentbit.node_selector_value | quote }} diff --git a/fluent-logging/values.yaml b/fluent-logging/values.yaml index 561fdd618..b3cb6f3b4 100644 --- a/fluent-logging/values.yaml +++ b/fluent-logging/values.yaml @@ -384,6 +384,14 @@ pod: limits: memory: '1024Mi' cpu: '2000m' + tolerations: + fluentbit: + enabled: false + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + - key: node-role.kubernetes.io/node + operator: Exists mounts: fluentd: fluentd: diff --git a/helm-toolkit/templates/snippets/_kubernetes_tolerations.tpl b/helm-toolkit/templates/snippets/_kubernetes_tolerations.tpl new file mode 100644 index 000000000..25104557e --- /dev/null +++ b/helm-toolkit/templates/snippets/_kubernetes_tolerations.tpl @@ -0,0 +1,47 @@ +{{/* +Copyright 2017 The Openstack-Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/}} + +{{/* +abstract: | + Renders kubernetes tolerations for pods +values: | + pod: + tolerations: + api: + enabled: true + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + - key: node-role.kubernetes.io/node + operator: Exists + +usage: | + {{ include "helm-toolkit.snippets.kubernetes_tolerations" ( tuple . .Values.pod.tolerations.api ) }} +return: | + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + - key: node-role.kubernetes.io/node + operator: Exists +*/}} + +{{- define "helm-toolkit.snippets.kubernetes_tolerations" -}} +{{- $envAll := index . 0 -}} +{{- $component := index . 1 -}} +{{- $pod := index $envAll.Values.pod.tolerations $component }} +tolerations: +{{ toYaml $pod.tolerations }} +{{- end -}} diff --git a/prometheus-node-exporter/templates/daemonset.yaml b/prometheus-node-exporter/templates/daemonset.yaml index 90678191f..645388253 100644 --- a/prometheus-node-exporter/templates/daemonset.yaml +++ b/prometheus-node-exporter/templates/daemonset.yaml @@ -54,12 +54,8 @@ spec: namespace: {{ .Values.endpoints.node_metrics.namespace }} spec: serviceAccountName: {{ $serviceAccountName }} -{{ if .Values.labels.node_exporter.tolerations }} - tolerations: - - key: node-role.kubernetes.io/master - operator: Exists - - key: node-role.kubernetes.io/node - operator: Exists +{{ if .Values.pod.tolerations.node_exporter.enabled }} +{{ tuple $envAll "node_exporter" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 6 }} {{ else }} nodeSelector: {{ .Values.labels.node_exporter.node_selector_key }}: {{ .Values.labels.node_exporter.node_selector_value | quote }} diff --git a/prometheus-node-exporter/values.yaml b/prometheus-node-exporter/values.yaml index f8438f11b..b652cdcd9 100644 --- a/prometheus-node-exporter/values.yaml +++ b/prometheus-node-exporter/values.yaml @@ -81,6 +81,14 @@ pod: limits: memory: "1024Mi" cpu: "2000m" + tolerations: + node_exporter: + enabled: false + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + - key: node-role.kubernetes.io/node + operator: Exists dependencies: dynamic: