You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by dg...@apache.org on 2019/07/11 14:37:58 UTC
[incubator-openwhisk-deploy-kube] branch master updated: feat: add
k8s tolerations support (#490)
This is an automated email from the ASF dual-hosted git repository.
dgrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-deploy-kube.git
The following commit(s) were added to refs/heads/master by this push:
new 23a98f4 feat: add k8s tolerations support (#490)
23a98f4 is described below
commit 23a98f4ee1c97df5a919c1c326065f8a2da9be44
Author: Robert Kopaczewski <rk...@23doors.com>
AuthorDate: Thu Jul 11 16:37:51 2019 +0200
feat: add k8s tolerations support (#490)
---
helm/openwhisk/templates/_tolerations.tpl | 23 ++++++++++++++++++++
helm/openwhisk/templates/apigateway-pod.yaml | 6 +++++
helm/openwhisk/templates/controller-pod.yaml | 5 +++++
helm/openwhisk/templates/couchdb-pod.yaml | 6 +++++
helm/openwhisk/templates/invoker-agent-pod.yaml | 5 +++++
helm/openwhisk/templates/invoker-pod.yaml | 5 +++++
helm/openwhisk/templates/kafka-pod.yaml | 5 +++++
helm/openwhisk/templates/nginx-pod.yaml | 5 +++++
helm/openwhisk/templates/redis-pod.yaml | 5 +++++
helm/openwhisk/templates/zookeeper-pod.yaml | 5 +++++
helm/openwhisk/values-metadata.yaml | 29 +++++++++++++++++++++++++
helm/openwhisk/values.yaml | 9 ++++++++
12 files changed, 108 insertions(+)
diff --git a/helm/openwhisk/templates/_tolerations.tpl b/helm/openwhisk/templates/_tolerations.tpl
new file mode 100644
index 0000000..921b172
--- /dev/null
+++ b/helm/openwhisk/templates/_tolerations.tpl
@@ -0,0 +1,23 @@
+{{/* Core toleration */}}
+{{- define "openwhisk.toleration.core" -}}
+- key: "openwhisk-role"
+ operator: "Equal"
+ value: {{ .Values.toleration.coreValue }}
+ effect: "NoSchedule"
+{{- end -}}
+
+ {{/* Edge toleration */}}
+{{- define "openwhisk.toleration.edge" -}}
+- key: "openwhisk-role"
+ operator: "Equal"
+ value: {{ .Values.toleration.edgeValue }}
+ effect: "NoSchedule"
+{{- end -}}
+
+ {{/* Invoker toleration */}}
+{{- define "openwhisk.toleration.invoker" -}}
+- key: "openwhisk-role"
+ operator: "Equal"
+ value: {{ .Values.toleration.invokerValue }}
+ effect: "NoSchedule"
+{{- end -}}
diff --git a/helm/openwhisk/templates/apigateway-pod.yaml b/helm/openwhisk/templates/apigateway-pod.yaml
index 01e7030..deb5988 100644
--- a/helm/openwhisk/templates/apigateway-pod.yaml
+++ b/helm/openwhisk/templates/apigateway-pod.yaml
@@ -40,6 +40,12 @@ spec:
{{ include "openwhisk.affinity.core" . | indent 8 }}
{{ include "openwhisk.affinity.selfAntiAffinity" ( printf "%s-apigateway" .Release.Name ) | indent 8 }}
{{- end }}
+
+ {{- if .Values.toleration.enabled }}
+ tolerations:
+{{ include "openwhisk.toleration.core" . | indent 8 }}
+ {{- end }}
+
{{ include "openwhisk.docker.imagePullSecrets" . | indent 6 }}
containers:
- name: apigateway
diff --git a/helm/openwhisk/templates/controller-pod.yaml b/helm/openwhisk/templates/controller-pod.yaml
index 44a49a9..454959f 100644
--- a/helm/openwhisk/templates/controller-pod.yaml
+++ b/helm/openwhisk/templates/controller-pod.yaml
@@ -44,6 +44,11 @@ spec:
{{ include "openwhisk.affinity.selfAntiAffinity" ( printf "%s-controller" .Release.Name ) | indent 8 }}
{{- end }}
+ {{- if .Values.toleration.enabled }}
+ tolerations:
+{{ include "openwhisk.toleration.core" . | indent 8 }}
+ {{- end }}
+
initContainers:
{{- if not .Values.controller.lean }}
# The controller must wait for kafka and/or couchdb to be ready before it starts
diff --git a/helm/openwhisk/templates/couchdb-pod.yaml b/helm/openwhisk/templates/couchdb-pod.yaml
index 718f89c..01f7af7 100644
--- a/helm/openwhisk/templates/couchdb-pod.yaml
+++ b/helm/openwhisk/templates/couchdb-pod.yaml
@@ -41,6 +41,12 @@ spec:
{{ include "openwhisk.affinity.core" . | indent 8 }}
{{ include "openwhisk.affinity.selfAntiAffinity" ( printf "%s-couchdb" .Release.Name ) | indent 8 }}
{{- end }}
+
+ {{- if .Values.toleration.enabled }}
+ tolerations:
+{{ include "openwhisk.toleration.core" . | indent 8 }}
+ {{- end }}
+
{{ include "openwhisk.docker.imagePullSecrets" . | indent 6 }}
containers:
- name: couchdb
diff --git a/helm/openwhisk/templates/invoker-agent-pod.yaml b/helm/openwhisk/templates/invoker-agent-pod.yaml
index 8efd7ca..698eaac 100644
--- a/helm/openwhisk/templates/invoker-agent-pod.yaml
+++ b/helm/openwhisk/templates/invoker-agent-pod.yaml
@@ -39,6 +39,11 @@ spec:
affinity:
{{ include "openwhisk.affinity.invoker" . | indent 8 }}
+{{- if .Values.toleration.enabled }}
+ tolerations:
+{{ include "openwhisk.toleration.invoker" . | indent 8 }}
+{{- end }}
+
volumes:
{{ include "openwhisk.docker_volumes" . | indent 6 }}
- name: userlogs
diff --git a/helm/openwhisk/templates/invoker-pod.yaml b/helm/openwhisk/templates/invoker-pod.yaml
index 81588e0..98355f6 100644
--- a/helm/openwhisk/templates/invoker-pod.yaml
+++ b/helm/openwhisk/templates/invoker-pod.yaml
@@ -55,6 +55,11 @@ spec:
{{ include "openwhisk.affinity.selfAntiAffinity" ( printf "%s-invoker" .Release.Name ) | indent 8 }}
{{- end }}
+{{- if .Values.toleration.enabled }}
+ tolerations:
+{{ include "openwhisk.toleration.invoker" . | indent 8 }}
+{{- end }}
+
{{ include "openwhisk.invoker.volumes" . }}
initContainers:
diff --git a/helm/openwhisk/templates/kafka-pod.yaml b/helm/openwhisk/templates/kafka-pod.yaml
index fac4710..a74452d 100644
--- a/helm/openwhisk/templates/kafka-pod.yaml
+++ b/helm/openwhisk/templates/kafka-pod.yaml
@@ -45,6 +45,11 @@ spec:
{{ include "openwhisk.affinity.selfAntiAffinity" ( printf "%s-kafka" .Release.Name ) | indent 8 }}
{{- end }}
+ {{- if .Values.toleration.enabled }}
+ tolerations:
+{{ include "openwhisk.toleration.core" . | indent 8 }}
+ {{- end }}
+
{{- if and .Values.k8s.persistence.enabled (eq (int .Values.kafka.replicaCount) 1) }}
volumes:
- name: "{{ .Release.Name }}-kafka-pvc"
diff --git a/helm/openwhisk/templates/nginx-pod.yaml b/helm/openwhisk/templates/nginx-pod.yaml
index 7591f70..4d09a75 100644
--- a/helm/openwhisk/templates/nginx-pod.yaml
+++ b/helm/openwhisk/templates/nginx-pod.yaml
@@ -41,6 +41,11 @@ spec:
{{ include "openwhisk.affinity.selfAntiAffinity" ( printf "%s-nginx" .Release.Name ) | indent 8 }}
{{- end }}
+ {{- if .Values.toleration.enabled }}
+ tolerations:
+{{ include "openwhisk.toleration.edge" . | indent 8 }}
+ {{- end }}
+
volumes:
- name: nginx-certs
secret:
diff --git a/helm/openwhisk/templates/redis-pod.yaml b/helm/openwhisk/templates/redis-pod.yaml
index d68b3a1..53aeb4d 100644
--- a/helm/openwhisk/templates/redis-pod.yaml
+++ b/helm/openwhisk/templates/redis-pod.yaml
@@ -41,6 +41,11 @@ spec:
{{ include "openwhisk.affinity.selfAntiAffinity" ( printf "%s-redis" .Release.Name | quote ) | indent 8 }}
{{- end }}
+ {{- if .Values.toleration.enabled }}
+ tolerations:
+{{ include "openwhisk.toleration.core" . | indent 8 }}
+ {{- end }}
+
{{- if .Values.k8s.persistence.enabled }}
volumes:
- name: redis-data
diff --git a/helm/openwhisk/templates/zookeeper-pod.yaml b/helm/openwhisk/templates/zookeeper-pod.yaml
index e673023..b4fb0a1 100644
--- a/helm/openwhisk/templates/zookeeper-pod.yaml
+++ b/helm/openwhisk/templates/zookeeper-pod.yaml
@@ -45,6 +45,11 @@ spec:
{{ include "openwhisk.affinity.selfAntiAffinity" ( printf "%s-zookeeper" .Release.Name ) | indent 8 }}
{{- end }}
+{{- if .Values.toleration.enabled }}
+ tolerations:
+{{ include "openwhisk.toleration.core" . | indent 8 }}
+{{- end }}
+
volumes:
- name: zk-config
configMap:
diff --git a/helm/openwhisk/values-metadata.yaml b/helm/openwhisk/values-metadata.yaml
index 8137bfb..6f0aafa 100644
--- a/helm/openwhisk/values-metadata.yaml
+++ b/helm/openwhisk/values-metadata.yaml
@@ -1498,6 +1498,35 @@ affinity:
type: "string"
required: true
+toleration:
+ __metadata:
+ label: "Node toleration configuration"
+ description: "Key used for node tolerations"
+ enabled:
+ __metadata:
+ label: "Toleration enabled"
+ description: "If toleration should be enabled"
+ type: "boolean"
+ required: true
+ coreValue:
+ __metadata:
+ label: "Core openwhisk-role toleration value"
+ description: "Value used for worker nodes toleration that should execute OpenWhisk core pods"
+ type: "string"
+ required: true
+ edgeValue:
+ __metadata:
+ label: "Edge openwhisk-role toleration value"
+ description: "Value used for worker nodes toleration that should execute OpenWhisk edge pods"
+ type: "string"
+ required: true
+ invokerValue:
+ __metadata:
+ label: "Invoker openwhisk-role toleration value"
+ description: "Value used for worker nodes toleration that should execute OpenWhisk invoker pods"
+ type: "string"
+ required: true
+
probes:
_metadata:
label: "Pod's Probes Settings"
diff --git a/helm/openwhisk/values.yaml b/helm/openwhisk/values.yaml
index bf23bd5..deb5fae 100644
--- a/helm/openwhisk/values.yaml
+++ b/helm/openwhisk/values.yaml
@@ -377,6 +377,15 @@ affinity:
invokerNodeLabel: invoker
providerNodeLabel: provider
+# Used to define toleration for the Kubernetes scheduler.
+# If tolerations.enabled is true, then all of the deployments for the OpenWhisk
+# microservices will add tolerations for key openwhisk-role with specified value and effect NoSchedule.
+toleration:
+ enabled: true
+ coreValue: core
+ edgeValue: edge
+ invokerValue: invoker
+
# Used to define the probes timing settings so that you can more precisely control the
# liveness and readiness checks.
# initialDelaySeconds - Initial wait time to start probes after container has started