diff --git a/functions/kubernetes/charts/shuffle/templates/_helpers.tpl b/functions/kubernetes/charts/shuffle/templates/_helpers.tpl index 67ca45cf..061ea4f4 100644 --- a/functions/kubernetes/charts/shuffle/templates/_helpers.tpl +++ b/functions/kubernetes/charts/shuffle/templates/_helpers.tpl @@ -27,7 +27,7 @@ Return the common name for worker components {{- end -}} {{/* -Return the common name for app components +Return the common name for app components. */}} {{- define "shuffle.app.name" -}} {{- printf "%s-app" (include "common.names.fullname" .) | trunc 63 -}} @@ -60,31 +60,78 @@ app.kubernetes.io/component: orborus {{- end -}} {{/* -Return the common labels for worker components deployed via helm +Return the common labels for worker components deployed via helm. +NOTE: Worker deployments and services use shuffle.workerInstance.labels instead. */}} {{- define "shuffle.worker.labels" -}} +{{- include "common.labels.standard" . }} +app.kubernetes.io/component: worker +{{- end -}} + + +{{/* +Return the labels for a specific worker instance deployed via helm. +Usage: +{{ include "shuffle.workerInstance.labels" (dict "customLabels" .Values.commonLabels "context" $) -}} +*/}} +{{- define "shuffle.workerInstance.labels" -}} app.kubernetes.io/name: shuffle-worker -helm.sh/chart: {{ include "common.names.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/managed-by: {{ .Release.Service }} +helm.sh/chart: {{ include "common.names.chart" .context }} +app.kubernetes.io/instance: {{ .context.Release.Name }} +app.kubernetes.io/managed-by: {{ .context.Release.Service }} app.kubernetes.io/part-of: shuffle -{{- with .Chart.AppVersion }} +{{- with .context.Chart.AppVersion }} app.kubernetes.io/version: {{ . | replace "+" "_" | quote }} {{- end -}} +{{- range $key, $value := .customLabels }} +{{ $key }}: {{ $value }} +{{- end }} {{- end -}} {{/* -Return the common labels for app components deployed via helm +Return the common labels for app components deployed via helm. +NOTE: App deployments and services use shuffle.appInstance.labels instead. */}} {{- define "shuffle.app.labels" -}} -app.kubernetes.io/name: shuffle-app -helm.sh/chart: {{ include "common.names.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/part-of: shuffle -{{- with .Chart.AppVersion }} -app.kubernetes.io/version: {{ . | replace "+" "_" | quote }} +{{- include "common.labels.standard" . }} +app.kubernetes.io/component: app {{- end -}} + +{{/* +Return the sanitized name of a shuffle app. +Usage: +{{ include "shuffle.appInstance.name" $app }} +*/}} +{{- define "shuffle.appInstance.name -}} +{{ .name | replace "_" | "-" | lower }} +{{- end -}} + +{{/* +Return the sanitized name of a shuffle app, including the version of the app. +Usage: +{{ include "shuffle.appInstance.fullname" $app }} +*/}} +{{- define "shuffle.appInstance.fullname -}} +{{ printf "%s-%s" .name .version | replace "_" | "-" | lower }} +{{- end -}} + +{{/* +Return the labels for a shuffle app deployed by helm. +Usage: +{{ include "shuffle.appInstance.labels" (dict "app" $app "customLabels" .Values.commonLabels "context" $) }} +*/}} +{{- define "shuffle.appInstance.labels" -}} +app.kubernetes.io/name: shuffle-app +app.kubernetes.io/instance: {{ include "shuffle.appInstance.fullname" .app }} +helm.sh/chart: {{ include "common.names.chart" .context }} +app.kubernetes.io/instance: {{ .context.Release.Name }} +app.kubernetes.io/managed-by: {{ .context.Release.Service }} +app.kubernetes.io/part-of: shuffle +app.shuffler.io/name: {{ include "shuffle.appInstance.name" .app }} +app.shuffler.io/version: {{ .app.version | quote }} +{{- range $key, $value := .customLabels }} +{{ $key }}: {{ $value }} +{{- end }} {{- end -}} {{/* @@ -112,20 +159,20 @@ app.kubernetes.io/component: orborus {{- end -}} {{/* -Return the match labels for worker components. -These must match the labels of helm-deployed worker components (shuffle.worker.labels), -as well as orborus-deployed worker components (deployk8sworker). +Return the match labels for workers. +These must match the labels of helm-deployed workers (shuffle.workerInstance.labels), +as well as orborus-deployed workers (deployk8sworker). */}} -{{- define "shuffle.worker.matchLabels" -}} +{{- define "shuffle.workerInstance.matchLabels" -}} app.kubernetes.io/name: shuffle-worker {{- end -}} {{/* -Return the match labels for app components. -These must match the labels of helm-deployed app components (shuffle.app.labels), -as well as worker-deployed app deployments (deployK8sApp). +Return the match labels for apps. +These must match the labels of helm-deployed apps (shuffle.appInstance.labels), +as well as worker-deployed apps (deployK8sApp). */}} -{{- define "shuffle.app.matchLabels" -}} +{{- define "shuffle.appInstance.matchLabels" -}} app.kubernetes.io/name: shuffle-app {{- end -}} diff --git a/functions/kubernetes/charts/shuffle/templates/backend/backend-network-policy.yaml b/functions/kubernetes/charts/shuffle/templates/backend/backend-network-policy.yaml index 48010706..516c9f33 100644 --- a/functions/kubernetes/charts/shuffle/templates/backend/backend-network-policy.yaml +++ b/functions/kubernetes/charts/shuffle/templates/backend/backend-network-policy.yaml @@ -51,14 +51,14 @@ spec: matchLabels: kubernetes.io/metadata.name: {{ .Release.Namespace }} podSelector: - matchLabels: {{ include "shuffle.worker.matchLabels" . | nindent 14 }} + matchLabels: {{ include "shuffle.workerInstance.matchLabels" . | nindent 14 }} # Allow traffic from apps - namespaceSelector: matchLabels: kubernetes.io/metadata.name: {{ .Release.Namespace }} podSelector: - matchLabels: {{ include "shuffle.app.matchLabels" . | nindent 14 }} + matchLabels: {{ include "shuffle.appInstance.matchLabels" . | nindent 14 }} {{- end }} {{- if .Values.backend.networkPolicy.extraIngress }} {{- include "common.tplvalues.render" ( dict "value" .Values.backend.networkPolicy.extraIngress "context" $ ) | nindent 4 }} diff --git a/functions/kubernetes/charts/shuffle/templates/orborus/orborus-network-policy.yaml b/functions/kubernetes/charts/shuffle/templates/orborus/orborus-network-policy.yaml index f55bf957..68ea9aa5 100644 --- a/functions/kubernetes/charts/shuffle/templates/orborus/orborus-network-policy.yaml +++ b/functions/kubernetes/charts/shuffle/templates/orborus/orborus-network-policy.yaml @@ -48,7 +48,7 @@ spec: matchLabels: kubernetes.io/metadata.name: {{ .Release.Namespace }} podSelector: - matchLabels: {{ include "shuffle.worker.matchLabels" . | nindent 14 }} + matchLabels: {{ include "shuffle.workerInstance.matchLabels" . | nindent 14 }} {{- if .Values.orborus.networkPolicy.extraEgress }} {{- include "common.tplvalues.render" ( dict "value" .Values.orborus.networkPolicy.extraEgress "context" $ ) | nindent 4 }} {{- end }} diff --git a/functions/kubernetes/charts/shuffle/templates/shuffle-app/shuffle-app-network-policy.yaml b/functions/kubernetes/charts/shuffle/templates/shuffle-app/shuffle-app-network-policy.yaml index a8493002..73c0572e 100644 --- a/functions/kubernetes/charts/shuffle/templates/shuffle-app/shuffle-app-network-policy.yaml +++ b/functions/kubernetes/charts/shuffle/templates/shuffle-app/shuffle-app-network-policy.yaml @@ -11,7 +11,7 @@ metadata: spec: {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.app.podLabels .Values.commonLabels ) "context" . ) }} podSelector: - matchLabels: {{- include "shuffle.app.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + matchLabels: {{- include "shuffle.appInstance.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} policyTypes: - Ingress - Egress @@ -48,7 +48,7 @@ spec: matchLabels: kubernetes.io/metadata.name: {{ .Release.Namespace }} podSelector: - matchLabels: {{ include "shuffle.worker.matchLabels" . | nindent 14 }} + matchLabels: {{ include "shuffle.workerInstance.matchLabels" . | nindent 14 }} {{- if .Values.app.networkPolicy.extraEgress }} {{- include "common.tplvalues.render" ( dict "value" .Values.app.networkPolicy.extraEgress "context" $ ) | nindent 4 }} {{- end }} @@ -64,7 +64,7 @@ spec: matchLabels: kubernetes.io/metadata.name: {{ .Release.Namespace }} podSelector: - matchLabels: {{ include "shuffle.worker.matchLabels" . | nindent 14 }} + matchLabels: {{ include "shuffle.workerInstance.matchLabels" . | nindent 14 }} {{- end }} {{- if .Values.app.networkPolicy.extraIngress }} {{- include "common.tplvalues.render" ( dict "value" .Values.app.networkPolicy.extraIngress "context" $ ) | nindent 4 }} diff --git a/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-dpl.yaml b/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-dpl.yaml index 18641999..1832991c 100644 --- a/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-dpl.yaml +++ b/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-dpl.yaml @@ -4,7 +4,7 @@ kind: Deployment metadata: name: {{ template "shuffle.worker.name" . }} namespace: {{ include "common.names.namespace" . | quote }} - labels: {{- include "shuffle.worker.labels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + labels: {{- include "shuffle.workerInstance.labels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} {{- if or .Values.worker.deploymentAnnotations .Values.commonAnnotations }} {{- $annotations := include "common.tplvalues.merge" (dict "values" (list .Values.worker.deploymentAnnotations .Values.commonAnnotations) "context" .) }} annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }} @@ -18,13 +18,13 @@ spec: {{- end }} {{- $podLabels := include "common.tplvalues.merge" (dict "values" (list .Values.worker.podLabels .Values.commonLabels) "context" .) }} selector: - matchLabels: {{- include "shuffle.worker.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + matchLabels: {{- include "shuffle.workerInstance.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} template: metadata: {{- if .Values.worker.podAnnotations }} annotations: {{- include "common.tplvalues.render" (dict "value" .Values.worker.podAnnotations "context" $) | nindent 8 }} {{- end }} - labels: {{- include "shuffle.worker.labels" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + labels: {{- include "shuffle.workerInstance.labels" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} spec: {{- include "shuffle.worker.imagePullSecrets" . | nindent 6 }} serviceAccountName: {{ template "shuffle.worker.serviceAccount.name" . }} @@ -101,6 +101,7 @@ spec: value: {{ .Values.app.exposedContainerPort | quote }} - name: WORKER_HOSTNAME value: {{ include "shuffle.worker.name" }}.{{ .Release.Namespace }}.svc.cluster.local + # TODO: If manageAppDeployments is set, we need to add some variables! {{- if .Values.worker.extraEnvVars }} {{- include "common.tplvalues.render" (dict "value" .Values.worker.extraEnvVars "context" $) | nindent 12 }} {{- end }} diff --git a/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-network-policy.yaml b/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-network-policy.yaml index 3637d975..259300e1 100644 --- a/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-network-policy.yaml +++ b/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-network-policy.yaml @@ -11,7 +11,7 @@ metadata: spec: {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.worker.podLabels .Values.commonLabels ) "context" . ) }} podSelector: - matchLabels: {{- include "shuffle.worker.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + matchLabels: {{- include "shuffle.workerInstance.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} policyTypes: - Ingress - Egress @@ -35,7 +35,7 @@ spec: matchLabels: kubernetes.io/metadata.name: {{ .Release.Namespace }} podSelector: - matchLabels: {{ include "shuffle.app.matchLabels" . | nindent 14 }} + matchLabels: {{ include "shuffle.appInstance.matchLabels" . | nindent 14 }} {{- if .Values.worker.networkPolicy.extraEgress }} {{- include "common.tplvalues.render" ( dict "value" .Values.worker.networkPolicy.extraEgress "context" $ ) | nindent 4 }} {{- end }} @@ -57,7 +57,7 @@ spec: matchLabels: kubernetes.io/metadata.name: {{ .Release.Namespace }} podSelector: - matchLabels: {{ include "shuffle.app.matchLabels" . | nindent 14 }} + matchLabels: {{ include "shuffle.appInstance.matchLabels" . | nindent 14 }} {{- end }} {{- if .Values.worker.networkPolicy.extraIngress }} {{- include "common.tplvalues.render" ( dict "value" .Values.worker.networkPolicy.extraIngress "context" $ ) | nindent 4 }} diff --git a/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-svc.yaml b/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-svc.yaml new file mode 100644 index 00000000..79f5be00 --- /dev/null +++ b/functions/kubernetes/charts/shuffle/templates/shuffle-worker/shuffle-worker-svc.yaml @@ -0,0 +1,21 @@ +{{- if .Values.worker.enableHelmDeployment }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "shuffle.worker.name" . }} + namespace: {{ include "common.names.namespace" . | quote }} + {{- $serviceLabels := include "common.tplvalues.merge" (dict "values" (list .Values.worker.service.labels .Values.commonLabels) "context" .) }} + labels: {{- include "shuffle.workerInstance.labels" (dict "customLabels" $serviceLabels "context" $) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: ClusterIP + ports: + - name: http + port: 33333 + targetPort: 33333 + protocol: TCP + appProtocol: http + selector: {{- include "shuffle.workerInstance.matchLabels" $ | nindent 4 }} +{{- end }} \ No newline at end of file diff --git a/functions/kubernetes/charts/shuffle/values.yaml b/functions/kubernetes/charts/shuffle/values.yaml index 8ee8ee06..4b745749 100644 --- a/functions/kubernetes/charts/shuffle/values.yaml +++ b/functions/kubernetes/charts/shuffle/values.yaml @@ -1111,7 +1111,7 @@ orborus: ## args: [] ## @param orborus.automountServiceAccountToken Mount Service Account token in orborus pods - ## NOTE: orborus requires the service account credentials to be mounted + ## NOTE: orborus requires the service account credentials to be mounted if manageWorkerDeployments is enabled. ## automountServiceAccountToken: true ## @param orborus.hostAliases orborus pods host aliases @@ -1199,7 +1199,7 @@ orborus: ## - name: FOO ## value: "bar" ## - extraEnvVars: + extraEnvVars: # TODO: Make this list empty and move to other values. Also check if these need to be set on worker or apps. - name: SHUFFLE_APP_SDK_TIMEOUT value: "300" - name: SHUFFLE_ORBORUS_EXCUTION_CONCURRENCY @@ -1347,15 +1347,15 @@ orborus: ## extraEgress: [] - ## @param orborus.manageWorkerDeployments Whether workers are deployed and managed by orborus. When disabled, every worker is expected to be already deployed (see worker.enableHelmDeployment). - ## This effectively removes required RBAC permissions from the shuffle-orborus service account to create deployments and services. - ## Orborus might still attempt to create kubernetes objects, resulting in an error. There is currently no way to tell orborus, that it should not manage k8s resources. - ## You likely want to enable worker.enableHelmDeployment when enabling this. - manageWorkerDeployments: true + ## @param orborus.manageWorkerDeployments Whether workers are deployed and managed by orborus. When disabled, every worker is expected to be already deployed (see worker.enableHelmDeployment). + ## This effectively removes required RBAC permissions from the shuffle-orborus service account to create deployments and services. + ## Orborus might still attempt to create kubernetes objects, resulting in an error. There is currently no way to tell orborus, that it should not manage k8s resources. + ## You likely want to enable worker.enableHelmDeployment when enabling this. + manageWorkerDeployments: true ## @section worker Parameters ## -worker: # TODO: Add values that other helm deployed components have, mark helm-only params +worker: ## @param worker.enableHelmDeployment Deploy worker via helm. By default, workers are deployed by Orborus. ## You might want to disable orborus.manageWorkerDeployments when enabling this. enableHelmDeployment: false @@ -1365,13 +1365,90 @@ worker: # TODO: Add values that other helm deployed components have, mark helm-o ## @param worker.image.repository worker image repository ## @param worker.image.tag worker image tag (immutable tags are recommended, defaults to appVersion) ## @param worker.image.digest worker image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag image tag (immutable tags are recommended) + ## @param worker.image.pullPolicy worker image pull policy + ## @param worker.image.pullSecrets worker image pull secrets ## image: registry: ghcr.io repository: shuffle/shuffle-worker tag: "" digest: "" - + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images + ## + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## @param worker.replicaCount Number of worker replicas to deploy + ## + replicaCount: 1 + ## @param worker.extraContainerPorts Optionally specify extra list of additional ports for worker containers + ## e.g: + ## extraContainerPorts: + ## - name: myservice + ## containerPort: 9090 + ## + extraContainerPorts: [] + ## Configure extra options for worker containers' liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param worker.livenessProbe.enabled Enable livenessProbe on worker containers + ## @param worker.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param worker.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param worker.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param worker.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param worker.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: false + initialDelaySeconds: 0 + periodSeconds: 15 + timeoutSeconds: 1 + failureThreshold: 4 + successThreshold: 1 + ## @param worker.readinessProbe.enabled Enable readinessProbe on worker containers + ## @param worker.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param worker.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param worker.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param worker.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param worker.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: false + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param worker.startupProbe.enabled Enable startupProbe on worker containers + ## @param worker.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param worker.startupProbe.periodSeconds Period seconds for startupProbe + ## @param worker.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param worker.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param worker.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 0 + periodSeconds: 1 + timeoutSeconds: 1 + failureThreshold: 60 + successThreshold: 1 + ## @param worker.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param worker.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## @param worker.customStartupProbe Custom startupProbe that overrides the default one + ## + customStartupProbe: {} ## worker resource requests and limits ## ref: http://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ ## @param worker.resourcesPreset Set worker container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if worker.resources is set (worker.resources is recommended for production). @@ -1431,6 +1508,187 @@ worker: # TODO: Add values that other helm deployed components have, mark helm-o drop: ["ALL"] seccompProfile: type: "RuntimeDefault" + ## @param worker.command Override default worker container command (useful when using custom images) + ## + command: [] + ## @param worker.args Override default worker container args (useful when using custom images) + ## + args: [] + ## @param worker.automountServiceAccountToken Mount Service Account token in worker pods + ## NOTE: worker requires the service account credentials to be mounted if manageAppDeployments is enabled. + ## + automountServiceAccountToken: true + ## @param worker.hostAliases worker pods host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param worker.deploymentAnnotations Annotations for worker deployment + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + deploymentAnnotations: {} + ## @param worker.podLabels Extra labels for worker pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param worker.podAnnotations Annotations for worker pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param worker.podAffinityPreset Pod affinity preset. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param worker.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node worker.affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param worker.nodeAffinityPreset.type Node affinity preset type. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param worker.nodeAffinityPreset.key Node label key to match. Ignored if `worker.affinity` is set + ## + key: "" + ## @param worker.nodeAffinityPreset.values Node label values to match. Ignored if `worker.affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param worker.affinity Affinity for worker pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `worker.podAffinityPreset`, `worker.podAntiAffinityPreset`, and `worker.nodeAffinityPreset` will be ignored when it's set + ## + affinity: {} + ## @param worker.nodeSelector Node labels for worker pods assignment + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + ## + nodeSelector: {} + ## @param worker.tolerations Tolerations for worker pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param worker.updateStrategy.type worker deployment strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy + ## + updateStrategy: + ## Can be set to RollingUpdate or Recreate + ## + type: RollingUpdate + ## @param worker.priorityClassName worker pods' priorityClassName + ## + priorityClassName: "" + ## @param worker.topologySpreadConstraints Topology Spread Constraints for worker pod assignment spread across your cluster among failure-domains + ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods + ## + topologySpreadConstraints: [] + ## @param worker.schedulerName Name of the k8s scheduler (other than default) for worker pods + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param worker.terminationGracePeriodSeconds Seconds worker pods need to terminate gracefully + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods + ## + terminationGracePeriodSeconds: "" + ## @param worker.lifecycleHooks for worker containers to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param worker.extraEnvVars Array with extra environment variables to add to worker containers + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param worker.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for worker containers + ## + extraEnvVarsCM: "" + ## @param worker.extraEnvVarsSecret Name of existing Secret containing extra env vars for worker containers + ## + extraEnvVarsSecret: "" + ## @param worker.extraVolumes Optionally specify extra list of additional volumes for the worker pods + ## + extraVolumes: [] + ## @param worker.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the worker containers + ## + extraVolumeMounts: [] + ## @param worker.sidecars Add additional sidecar containers to the worker pods + ## e.g: + ## sidecars: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## ports: + ## - name: portname + ## containerPort: 1234 + ## + sidecars: [] + ## @param worker.initContainers Add additional init containers to the worker pods + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## initContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + initContainers: [] + ## Pod Disruption Budget configuration + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb + ## @param worker.pdb.create Enable/disable a Pod Disruption Budget creation + ## @param worker.pdb.minAvailable Minimum number/percentage of pods that should remain scheduled + ## @param worker.pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `worker.pdb.minAvailable` and `worker.pdb.maxUnavailable` are empty. + ## + pdb: + create: true + minAvailable: "" + maxUnavailable: "" + ## Autoscaling configuration + ## ref: https://kubernetes.io/docs/concepts/workloads/autoscaling/ + ## + autoscaling: + ## @param worker.autoscaling.vpa.enabled Enable VPA for worker pods + ## @param worker.autoscaling.vpa.annotations Annotations for VPA resource + ## @param worker.autoscaling.vpa.controlledResources VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory + ## @param worker.autoscaling.vpa.maxAllowed VPA Max allowed resources for the pod + ## @param worker.autoscaling.vpa.minAllowed VPA Min allowed resources for the pod + ## + vpa: + enabled: false + annotations: {} + controlledResources: [] + maxAllowed: {} + minAllowed: {} + ## @param worker.autoscaling.vpa.updatePolicy.updateMode Autoscaling update policy + ## Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod + ## Possible values are "Off", "Initial", "Recreate", and "Auto". + ## + updatePolicy: + updateMode: Auto + ## @param worker.autoscaling.hpa.enabled Enable HPA for worker pods + ## @param worker.autoscaling.hpa.minReplicas Minimum number of replicas + ## @param worker.autoscaling.hpa.maxReplicas Maximum number of replicas + ## @param worker.autoscaling.hpa.targetCPU Target CPU utilization percentage + ## @param worker.autoscaling.hpa.targetMemory Target Memory utilization percentage + ## + hpa: + enabled: false + minReplicas: "" + maxReplicas: "" + targetCPU: "" + targetMemory: "" + + ## Service configuration + ## + service: + ## @param worker.service.labels Extra labels for worker service + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + labels: {} ## ServiceAccount configuration ##