diff --git a/functions/kubernetes/charts/shuffle/README.md b/functions/kubernetes/charts/shuffle/README.md index 0fea5581..8d516904 100644 --- a/functions/kubernetes/charts/shuffle/README.md +++ b/functions/kubernetes/charts/shuffle/README.md @@ -131,14 +131,30 @@ If you want full control, you can deploy apps using helm. This has the following - granular control per app and version (e.g. have more replicas and resources for frequently used apps) - avoid problems with on-demand started apps (see https://github.com/Shuffle/Shuffle/issues/1739) -To deploy apps using helm, use the `app.deployViaHelm` value: +To deploy apps using helm, use the `app.deployViaHelm` value. Here is an example, which deploys the shuffle-tools app and 2 versions of the opensearch app: ```yaml app: + replicas: 1 # default to 1 replica per app deployViaHelm: - - app: shuffle-tools + tools: + app: shuffle-tools version: 1.2.0 - TODO + opensearchOld: + app: opensearch + version: 1.0.0 # Also deploy OpenSearch version 1.0.0, because some workflows still use it. + opensearch: + app: opensearch + version: 1.1.0 + replicas: 3 # use 3 replicas for OpenSearch app + resources: # Custom resources for OpenSearch app + limits: + memory: 512Mi ``` +The key of an app in the `deployViaHelm` map does not matter. We are not using an array here, to allow overriding values in stage-specific value files or using the command line, e.g. +`helm upgrade ... --set app.deployViaHelm.tools.replicas=3`. + +See the app Paramters section below for a complete list of helm values, that can be used to customize app deployments. +Take a look at the `app.deployViaHelm.MY_APP.*` parameters for a complete list of helm values that can be set on every app. It is possible to use a hybrid approach - deploy some apps using helm, while still allowing Worker to create additional apps on-demand. @@ -184,12 +200,13 @@ The password should be provided with the `SHUFFLE_OPENSEARCH_PASSWORD` env varia ### Shared Shuffle Parameters -| Name | Description | Value | -| --------------------- | ------------------------------------------------------------- | --------------- | -| `shuffle.baseUrl` | The external base URL under which Shuffle is reachable. | `""` | -| `shuffle.org` | Default shuffle organization | `Shuffle` | -| `shuffle.appRegistry` | The registry from / to which shuffle apps are pulled / pushed | `""` | -| `shuffle.timezone` | The timezone used by Shuffle | `Europe/Berlin` | +| Name | Description | Value | +| -------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------- | +| `shuffle.baseUrl` | The external base URL under which Shuffle is reachable. | `""` | +| `shuffle.org` | Default shuffle organization | `Shuffle` | +| `shuffle.appRegistry` | The registry from / to which shuffle apps are pulled / pushed | `docker.io` | +| `shuffle.appBaseImageName` | The base image used for shuffle apps. The final image for an app is //: | `frikky` | +| `shuffle.timezone` | The timezone used by Shuffle | `Europe/Berlin` | ### backend Parameters @@ -418,7 +435,7 @@ The password should be provided with the `SHUFFLE_OPENSEARCH_PASSWORD` env varia | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | | `orborus.image.registry` | orborus image registry | `ghcr.io` | | `orborus.image.repository` | orborus image repository | `shuffle/shuffle-orborus` | -| `orborus.image.tag` | orborus image tag (immutable tags are recommended, defaults to appVersion) | `""` | +| `orborus.image.tag` | orborus image tag (immutable tags are recommended, defaults to appVersion) | `nightly` | | `orborus.image.digest` | orborus image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag image tag (immutable tags are recommended) | `""` | | `orborus.image.pullPolicy` | orborus image pull policy | `IfNotPresent` | | `orborus.image.pullSecrets` | orborus image pull secrets | `[]` | @@ -515,15 +532,43 @@ The password should be provided with the `SHUFFLE_OPENSEARCH_PASSWORD` env varia | `orborus.networkPolicy.allowExternalEgress` | Allow the pod to access any range of port and all destinations. | `true` | | `orborus.networkPolicy.extraIngress` | Add extra ingress rules to the NetworkPolicy | `[]` | | `orborus.networkPolicy.extraEgress` | Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true) | `[]` | +| `orborus.executionConcurrency` | The maximum amount of concurrent workflow executions per worker | `25` | +| `orborus.manageWorkerDeployments` | Whether workers are deployed and managed by orborus. When disabled, every worker is expected to be already deployed (see worker.enableHelmDeployment). | `true` | ### worker Parameters | Name | Description | Value | | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | +| `worker.enableHelmDeployment` | Deploy worker via helm. By default, workers are deployed by Orborus. | `false` | | `worker.image.registry` | worker image registry | `ghcr.io` | | `worker.image.repository` | worker image repository | `shuffle/shuffle-worker` | | `worker.image.tag` | worker image tag (immutable tags are recommended, defaults to appVersion) | `""` | | `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) | `""` | +| `worker.image.pullPolicy` | worker image pull policy. Only effective with worker.enableHelmDeployment. | `IfNotPresent` | +| `worker.image.pullSecrets` | worker image pull secrets. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.replicaCount` | Number of worker replicas to deploy. Only effective with worker.enableHelmDeployment. | `1` | +| `worker.extraContainerPorts` | Optionally specify extra list of additional ports for worker containers. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.livenessProbe.enabled` | Enable livenessProbe on worker containers. Only effective with worker.enableHelmDeployment. | `false` | +| `worker.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `0` | +| `worker.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `15` | +| `worker.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `worker.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `4` | +| `worker.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `worker.readinessProbe.enabled` | Enable readinessProbe on worker containers. Only effective with worker.enableHelmDeployment. | `false` | +| `worker.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `0` | +| `worker.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `5` | +| `worker.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `worker.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `worker.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `worker.startupProbe.enabled` | Enable startupProbe on worker containers. Only effective with worker.enableHelmDeployment. | `false` | +| `worker.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `0` | +| `worker.startupProbe.periodSeconds` | Period seconds for startupProbe | `1` | +| `worker.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | +| `worker.startupProbe.failureThreshold` | Failure threshold for startupProbe | `60` | +| `worker.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `worker.customLivenessProbe` | Custom livenessProbe that overrides the default one. Only effective with worker.enableHelmDeployment. | `{}` | +| `worker.customReadinessProbe` | Custom readinessProbe that overrides the default one. Only effective with worker.enableHelmDeployment. | `{}` | +| `worker.customStartupProbe` | Custom startupProbe that overrides the default one. Only effective with worker.enableHelmDeployment. | `{}` | | `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). | `nano` | | `worker.resources` | Set worker container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | | `worker.podSecurityContext.enabled` | Enable worker pods' Security Context | `true` | @@ -541,6 +586,49 @@ The password should be provided with the `SHUFFLE_OPENSEARCH_PASSWORD` env varia | `worker.containerSecurityContext.allowPrivilegeEscalation` | Set allowPrivilegeEscalation in worker container' Security Context | `false` | | `worker.containerSecurityContext.capabilities.drop` | List of capabilities to be dropped in worker container | `["ALL"]` | | `worker.containerSecurityContext.seccompProfile.type` | Set seccomp profile in worker container | `RuntimeDefault` | +| `worker.command` | Override default worker container command (useful when using custom images). Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.args` | Override default worker container args (useful when using custom images). Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.automountServiceAccountToken` | Mount Service Account token in worker pods. Only effective with worker.enableHelmDeployment. | `true` | +| `worker.hostAliases` | worker pods host aliases. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.deploymentAnnotations` | Annotations for worker deployment. Only effective with worker.enableHelmDeployment. | `{}` | +| `worker.podLabels` | Extra labels for worker pods. Only effective with worker.enableHelmDeployment. | `{}` | +| `worker.podAnnotations` | Annotations for worker pods. Only effective with worker.enableHelmDeployment. | `{}` | +| `worker.podAffinityPreset` | Pod affinity preset. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard`. Only effective with worker.enableHelmDeployment. | `""` | +| `worker.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard`. Only effective with worker.enableHelmDeployment. | `soft` | +| `worker.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard`. Only effective with worker.enableHelmDeployment. | `""` | +| `worker.nodeAffinityPreset.key` | Node label key to match. Ignored if `worker.affinity` is set | `""` | +| `worker.nodeAffinityPreset.values` | Node label values to match. Ignored if `worker.affinity` is set | `[]` | +| `worker.affinity` | Affinity for worker pods assignment. Only effective with worker.enableHelmDeployment. | `{}` | +| `worker.nodeSelector` | Node labels for worker pods assignment. Only effective with worker.enableHelmDeployment. | `{}` | +| `worker.tolerations` | Tolerations for worker pods assignment. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.updateStrategy.type` | worker deployment strategy type. Only effective with worker.enableHelmDeployment. | `RollingUpdate` | +| `worker.priorityClassName` | worker pods' priorityClassName. Only effective with worker.enableHelmDeployment. | `""` | +| `worker.topologySpreadConstraints` | Topology Spread Constraints for worker pod assignment spread across your cluster among failure-domains. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.schedulerName` | Name of the k8s scheduler (other than default) for worker pods. Only effective with worker.enableHelmDeployment. | `""` | +| `worker.terminationGracePeriodSeconds` | Seconds worker pods need to terminate gracefully. Only effective with worker.enableHelmDeployment. | `""` | +| `worker.lifecycleHooks` | for worker containers to automate configuration before or after startup. Only effective with worker.enableHelmDeployment. | `{}` | +| `worker.extraEnvVars` | Array with extra environment variables to add to worker containers. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for worker containers. Only effective with worker.enableHelmDeployment. | `""` | +| `worker.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for worker containers. Only effective with worker.enableHelmDeployment. | `""` | +| `worker.extraVolumes` | Optionally specify extra list of additional volumes for the worker pods. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the worker containers. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.sidecars` | Add additional sidecar containers to the worker pods. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.initContainers` | Add additional init containers to the worker pods. Only effective with worker.enableHelmDeployment. | `[]` | +| `worker.pdb.create` | Enable/disable a Pod Disruption Budget creation. Only effective with worker.enableHelmDeployment. | `true` | +| `worker.pdb.minAvailable` | Minimum number/percentage of pods that should remain scheduled | `""` | +| `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. | `""` | +| `worker.autoscaling.vpa.enabled` | Enable VPA for worker pods. Only effective with worker.enableHelmDeployment. | `false` | +| `worker.autoscaling.vpa.annotations` | Annotations for VPA resource | `{}` | +| `worker.autoscaling.vpa.controlledResources` | VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory | `[]` | +| `worker.autoscaling.vpa.maxAllowed` | VPA Max allowed resources for the pod | `{}` | +| `worker.autoscaling.vpa.minAllowed` | VPA Min allowed resources for the pod | `{}` | +| `worker.autoscaling.vpa.updatePolicy.updateMode` | Autoscaling update policy | `Auto` | +| `worker.autoscaling.hpa.enabled` | Enable HPA for worker pods. Only effective with worker.enableHelmDeployment. | `false` | +| `worker.autoscaling.hpa.minReplicas` | Minimum number of replicas | `""` | +| `worker.autoscaling.hpa.maxReplicas` | Maximum number of replicas | `""` | +| `worker.autoscaling.hpa.targetCPU` | Target CPU utilization percentage | `""` | +| `worker.autoscaling.hpa.targetMemory` | Target Memory utilization percentage | `""` | +| `worker.service.labels` | Extra labels for worker service. Only effective with worker.enableHelmDeployment. | `{}` | | `worker.serviceAccount.create` | Specifies whether a ServiceAccount should be created | `true` | | `worker.serviceAccount.name` | The name of the ServiceAccount to use. | `""` | | `worker.serviceAccount.annotations` | Additional Service Account annotations (evaluated as a template) | `{}` | @@ -552,6 +640,7 @@ The password should be provided with the `SHUFFLE_OPENSEARCH_PASSWORD` env varia | `worker.networkPolicy.allowExternalEgress` | Allow the pod to access any range of port and all destinations. | `true` | | `worker.networkPolicy.extraIngress` | Add extra ingress rules to the NetworkPolicy | `[]` | | `worker.networkPolicy.extraEgress` | Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true) | `[]` | +| `worker.manageAppDeployments` | Whether apps are deployed and managed by worker. When disabled, every used app is expected to to be already deployed (see app.deployViaHelm). | `true` | ### app Parameters @@ -586,6 +675,11 @@ The password should be provided with the `SHUFFLE_OPENSEARCH_PASSWORD` env varia | `app.networkPolicy.extraIngress` | Add extra ingress rules to the NetworkPolicy | `[]` | | `app.networkPolicy.extraEgress` | Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true) | `[]` | | `app.exposedContainerPort` | The port that shuffle app containers will listen on for new requests. | `80` | +| `app.sdkTimeout` | The timeout in seconds for app actions. | `300` | +| `app.disableLogs` | Do not capture app logs. By default, app logs are captured, so that they are visible in the frontend. | `false` | +| `app.deployViaHelm` | A list of apps that should be deployed using helm. | `{}` | +| `app.deployViaHelm.MY_APP.app` | The name of the app (required, e.g. shuffle-tools) | | +| `app.deployViaHelm.MY_APP.version` | The version of the app (required, e.g. 1.2.0) | | ### Traffic Exposure Parameters @@ -654,19 +748,19 @@ The password should be provided with the `SHUFFLE_OPENSEARCH_PASSWORD` env varia ### Init Container Parameters -| Name | Description | Value | -| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | -| `volumePermissions.enabled` | Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup` | `false` | -| `volumePermissions.image.registry` | OS Shell + Utility image registry | `docker.io` | -| `volumePermissions.image.repository` | OS Shell + Utility image repository | `bitnami/os-shell` | -| `volumePermissions.image.tag` | OS Shell + Utility image tag (immutable tags are recommended) | `12-debian-12-r30` | -| `volumePermissions.image.pullPolicy` | OS Shell + Utility image pull policy | `IfNotPresent` | -| `volumePermissions.image.pullSecrets` | OS Shell + Utility image pull secrets | `[]` | -| `volumePermissions.resourcesPreset` | Set init container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production). | `nano` | -| `volumePermissions.resources` | Set init container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | -| `volumePermissions.containerSecurityContext.enabled` | Enabled init container' Security Context | `true` | -| `volumePermissions.containerSecurityContext.seLinuxOptions` | Set SELinux options in init container | `{}` | -| `volumePermissions.containerSecurityContext.runAsUser` | Set init container's Security Context runAsUser | `0` | +| Name | Description | Value | +| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | +| `volumePermissions.enabled` | Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup` | `false` | +| `volumePermissions.image.registry` | OS Shell + Utility image registry | `docker.io` | +| `volumePermissions.image.repository` | OS Shell + Utility image repository | `bitnamilegacy/os-shell` | +| `volumePermissions.image.tag` | OS Shell + Utility image tag (immutable tags are recommended) | `12-debian-12-r30` | +| `volumePermissions.image.pullPolicy` | OS Shell + Utility image pull policy | `IfNotPresent` | +| `volumePermissions.image.pullSecrets` | OS Shell + Utility image pull secrets | `[]` | +| `volumePermissions.resourcesPreset` | Set init container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production). | `nano` | +| `volumePermissions.resources` | Set init container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | +| `volumePermissions.containerSecurityContext.enabled` | Enabled init container' Security Context | `true` | +| `volumePermissions.containerSecurityContext.seLinuxOptions` | Set SELinux options in init container | `{}` | +| `volumePermissions.containerSecurityContext.runAsUser` | Set init container's Security Context runAsUser | `0` | ### OpenSearch Parameters @@ -685,3 +779,5 @@ The password should be provided with the `SHUFFLE_OPENSEARCH_PASSWORD` env varia + + diff --git a/functions/kubernetes/charts/shuffle/values.schema.json b/functions/kubernetes/charts/shuffle/values.schema.json index c2f9821c..d997e81e 100644 --- a/functions/kubernetes/charts/shuffle/values.schema.json +++ b/functions/kubernetes/charts/shuffle/values.schema.json @@ -130,7 +130,12 @@ "appRegistry": { "type": "string", "description": "The registry from / to which shuffle apps are pulled / pushed", - "default": "" + "default": "docker.io" + }, + "appBaseImageName": { + "type": "string", + "description": "The base image used for shuffle apps. The final image for an app is //:", + "default": "frikky" }, "timezone": { "type": "string", @@ -1466,7 +1471,7 @@ "tag": { "type": "string", "description": "orborus image tag (immutable tags are recommended, defaults to appVersion)", - "default": "" + "default": "nightly" }, "digest": { "type": "string", @@ -2053,12 +2058,27 @@ "items": {} } } + }, + "executionConcurrency": { + "type": "number", + "description": "The maximum amount of concurrent workflow executions per worker", + "default": 25 + }, + "manageWorkerDeployments": { + "type": "boolean", + "description": "Whether workers are deployed and managed by orborus. When disabled, every worker is expected to be already deployed (see worker.enableHelmDeployment).", + "default": true } } }, "worker": { "type": "object", "properties": { + "enableHelmDeployment": { + "type": "boolean", + "description": "Deploy worker via helm. By default, workers are deployed by Orborus.", + "default": false + }, "image": { "type": "object", "properties": { @@ -2081,9 +2101,151 @@ "type": "string", "description": "worker image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag image tag (immutable tags are recommended)", "default": "" + }, + "pullPolicy": { + "type": "string", + "description": "worker image pull policy. Only effective with worker.enableHelmDeployment.", + "default": "IfNotPresent" + }, + "pullSecrets": { + "type": "array", + "description": "worker image pull secrets. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} } } }, + "replicaCount": { + "type": "number", + "description": "Number of worker replicas to deploy. Only effective with worker.enableHelmDeployment.", + "default": 1 + }, + "extraContainerPorts": { + "type": "array", + "description": "Optionally specify extra list of additional ports for worker containers. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "livenessProbe": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable livenessProbe on worker containers. Only effective with worker.enableHelmDeployment.", + "default": false + }, + "initialDelaySeconds": { + "type": "number", + "description": "Initial delay seconds for livenessProbe", + "default": 0 + }, + "periodSeconds": { + "type": "number", + "description": "Period seconds for livenessProbe", + "default": 15 + }, + "timeoutSeconds": { + "type": "number", + "description": "Timeout seconds for livenessProbe", + "default": 1 + }, + "failureThreshold": { + "type": "number", + "description": "Failure threshold for livenessProbe", + "default": 4 + }, + "successThreshold": { + "type": "number", + "description": "Success threshold for livenessProbe", + "default": 1 + } + } + }, + "readinessProbe": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable readinessProbe on worker containers. Only effective with worker.enableHelmDeployment.", + "default": false + }, + "initialDelaySeconds": { + "type": "number", + "description": "Initial delay seconds for readinessProbe", + "default": 0 + }, + "periodSeconds": { + "type": "number", + "description": "Period seconds for readinessProbe", + "default": 5 + }, + "timeoutSeconds": { + "type": "number", + "description": "Timeout seconds for readinessProbe", + "default": 1 + }, + "failureThreshold": { + "type": "number", + "description": "Failure threshold for readinessProbe", + "default": 3 + }, + "successThreshold": { + "type": "number", + "description": "Success threshold for readinessProbe", + "default": 1 + } + } + }, + "startupProbe": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable startupProbe on worker containers. Only effective with worker.enableHelmDeployment.", + "default": false + }, + "initialDelaySeconds": { + "type": "number", + "description": "Initial delay seconds for startupProbe", + "default": 0 + }, + "periodSeconds": { + "type": "number", + "description": "Period seconds for startupProbe", + "default": 1 + }, + "timeoutSeconds": { + "type": "number", + "description": "Timeout seconds for startupProbe", + "default": 1 + }, + "failureThreshold": { + "type": "number", + "description": "Failure threshold for startupProbe", + "default": 60 + }, + "successThreshold": { + "type": "number", + "description": "Success threshold for startupProbe", + "default": 1 + } + } + }, + "customLivenessProbe": { + "type": "object", + "description": "Custom livenessProbe that overrides the default one. Only effective with worker.enableHelmDeployment.", + "default": {} + }, + "customReadinessProbe": { + "type": "object", + "description": "Custom readinessProbe that overrides the default one. Only effective with worker.enableHelmDeployment.", + "default": {} + }, + "customStartupProbe": { + "type": "object", + "description": "Custom startupProbe that overrides the default one. Only effective with worker.enableHelmDeployment.", + "default": {} + }, "resourcesPreset": { "type": "string", "description": "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).", @@ -2191,6 +2353,273 @@ } } }, + "command": { + "type": "array", + "description": "Override default worker container command (useful when using custom images). Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "args": { + "type": "array", + "description": "Override default worker container args (useful when using custom images). Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "automountServiceAccountToken": { + "type": "boolean", + "description": "Mount Service Account token in worker pods. Only effective with worker.enableHelmDeployment.", + "default": true + }, + "hostAliases": { + "type": "array", + "description": "worker pods host aliases. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "deploymentAnnotations": { + "type": "object", + "description": "Annotations for worker deployment. Only effective with worker.enableHelmDeployment.", + "default": {} + }, + "podLabels": { + "type": "object", + "description": "Extra labels for worker pods. Only effective with worker.enableHelmDeployment.", + "default": {} + }, + "podAnnotations": { + "type": "object", + "description": "Annotations for worker pods. Only effective with worker.enableHelmDeployment.", + "default": {} + }, + "podAffinityPreset": { + "type": "string", + "description": "Pod affinity preset. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard`. Only effective with worker.enableHelmDeployment.", + "default": "" + }, + "podAntiAffinityPreset": { + "type": "string", + "description": "Pod anti-affinity preset. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard`. Only effective with worker.enableHelmDeployment.", + "default": "soft" + }, + "nodeAffinityPreset": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Node affinity preset type. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard`. Only effective with worker.enableHelmDeployment.", + "default": "" + }, + "key": { + "type": "string", + "description": "Node label key to match. Ignored if `worker.affinity` is set", + "default": "" + }, + "values": { + "type": "array", + "description": "Node label values to match. Ignored if `worker.affinity` is set", + "default": [], + "items": {} + } + } + }, + "affinity": { + "type": "object", + "description": "Affinity for worker pods assignment. Only effective with worker.enableHelmDeployment.", + "default": {} + }, + "nodeSelector": { + "type": "object", + "description": "Node labels for worker pods assignment. Only effective with worker.enableHelmDeployment.", + "default": {} + }, + "tolerations": { + "type": "array", + "description": "Tolerations for worker pods assignment. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "updateStrategy": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "worker deployment strategy type. Only effective with worker.enableHelmDeployment.", + "default": "RollingUpdate" + } + } + }, + "priorityClassName": { + "type": "string", + "description": "worker pods' priorityClassName. Only effective with worker.enableHelmDeployment.", + "default": "" + }, + "topologySpreadConstraints": { + "type": "array", + "description": "Topology Spread Constraints for worker pod assignment spread across your cluster among failure-domains. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "schedulerName": { + "type": "string", + "description": "Name of the k8s scheduler (other than default) for worker pods. Only effective with worker.enableHelmDeployment.", + "default": "" + }, + "terminationGracePeriodSeconds": { + "type": "string", + "description": "Seconds worker pods need to terminate gracefully. Only effective with worker.enableHelmDeployment.", + "default": "" + }, + "lifecycleHooks": { + "type": "object", + "description": "for worker containers to automate configuration before or after startup. Only effective with worker.enableHelmDeployment.", + "default": {} + }, + "extraEnvVars": { + "type": "array", + "description": "Array with extra environment variables to add to worker containers. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "extraEnvVarsCM": { + "type": "string", + "description": "Name of existing ConfigMap containing extra env vars for worker containers. Only effective with worker.enableHelmDeployment.", + "default": "" + }, + "extraEnvVarsSecret": { + "type": "string", + "description": "Name of existing Secret containing extra env vars for worker containers. Only effective with worker.enableHelmDeployment.", + "default": "" + }, + "extraVolumes": { + "type": "array", + "description": "Optionally specify extra list of additional volumes for the worker pods. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "extraVolumeMounts": { + "type": "array", + "description": "Optionally specify extra list of additional volumeMounts for the worker containers. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "sidecars": { + "type": "array", + "description": "Add additional sidecar containers to the worker pods. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "initContainers": { + "type": "array", + "description": "Add additional init containers to the worker pods. Only effective with worker.enableHelmDeployment.", + "default": [], + "items": {} + }, + "pdb": { + "type": "object", + "properties": { + "create": { + "type": "boolean", + "description": "Enable/disable a Pod Disruption Budget creation. Only effective with worker.enableHelmDeployment.", + "default": true + }, + "minAvailable": { + "type": "string", + "description": "Minimum number/percentage of pods that should remain scheduled", + "default": "" + }, + "maxUnavailable": { + "type": "string", + "description": "Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `worker.pdb.minAvailable` and `worker.pdb.maxUnavailable` are empty.", + "default": "" + } + } + }, + "autoscaling": { + "type": "object", + "properties": { + "vpa": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable VPA for worker pods. Only effective with worker.enableHelmDeployment.", + "default": false + }, + "annotations": { + "type": "object", + "description": "Annotations for VPA resource", + "default": {} + }, + "controlledResources": { + "type": "array", + "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", + "default": [], + "items": {} + }, + "maxAllowed": { + "type": "object", + "description": "VPA Max allowed resources for the pod", + "default": {} + }, + "minAllowed": { + "type": "object", + "description": "VPA Min allowed resources for the pod", + "default": {} + }, + "updatePolicy": { + "type": "object", + "properties": { + "updateMode": { + "type": "string", + "description": "Autoscaling update policy", + "default": "Auto" + } + } + } + } + }, + "hpa": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable HPA for worker pods. Only effective with worker.enableHelmDeployment.", + "default": false + }, + "minReplicas": { + "type": "string", + "description": "Minimum number of replicas", + "default": "" + }, + "maxReplicas": { + "type": "string", + "description": "Maximum number of replicas", + "default": "" + }, + "targetCPU": { + "type": "string", + "description": "Target CPU utilization percentage", + "default": "" + }, + "targetMemory": { + "type": "string", + "description": "Target Memory utilization percentage", + "default": "" + } + } + } + } + }, + "service": { + "type": "object", + "properties": { + "labels": { + "type": "object", + "description": "Extra labels for worker service. Only effective with worker.enableHelmDeployment.", + "default": {} + } + } + }, "serviceAccount": { "type": "object", "properties": { @@ -2263,6 +2692,11 @@ "items": {} } } + }, + "manageAppDeployments": { + "type": "boolean", + "description": "Whether apps are deployed and managed by worker. When disabled, every used app is expected to to be already deployed (see app.deployViaHelm).", + "default": true } } }, @@ -2453,6 +2887,16 @@ "type": "number", "description": "The port that shuffle app containers will listen on for new requests. ", "default": 80 + }, + "sdkTimeout": { + "type": "number", + "description": "The timeout in seconds for app actions.", + "default": 300 + }, + "disableLogs": { + "type": "boolean", + "description": "Do not capture app logs. By default, app logs are captured, so that they are visible in the frontend.", + "default": false } } }, @@ -2793,7 +3237,7 @@ "repository": { "type": "string", "description": "OS Shell + Utility image repository", - "default": "bitnami/os-shell" + "default": "bitnamilegacy/os-shell" }, "tag": { "type": "string", diff --git a/functions/kubernetes/charts/shuffle/values.yaml b/functions/kubernetes/charts/shuffle/values.yaml index 4b745749..c53e4943 100644 --- a/functions/kubernetes/charts/shuffle/values.yaml +++ b/functions/kubernetes/charts/shuffle/values.yaml @@ -74,7 +74,7 @@ diagnosticMode: shuffle: ## @param shuffle.baseUrl The external base URL under which Shuffle is reachable. ## - #baseUrl: "" + baseUrl: "" ## ref: https://shuffler.io/docs/organizations ## This chart only supports single-tenant deployments at the moment @@ -84,14 +84,18 @@ shuffle: ## @param shuffle.appRegistry The registry from / to which shuffle apps are pulled / pushed ## - appRegistry: "" # TODO: Default? + appRegistry: "docker.io" + + ## @param shuffle.appBaseImageName The base image used for shuffle apps. The final image for an app is //: + ## + appBaseImageName: "frikky" ## @param shuffle.timezone The timezone used by Shuffle ## timezone: Europe/Berlin ## @section backend Parameters -## +## backend: ## backend image ## @param backend.image.registry backend image registry @@ -525,8 +529,6 @@ backend: ## @param backend.openSearch.username The username that is used for authenticating with OpenSearch ## username: admin - - password: StrongShufflePassword321! ## @param backend.openSearch.certificateFile The path to a custom OpenSearch certificate file ## certificateFile: "" @@ -887,16 +889,6 @@ frontend: ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ ## labels: {} - type: NodePort - ports: - - name: http - port: 80 - targetPort: 3001 - nodePort: 30080 - - name: https - port: 443 - targetPort: 3443 - nodePort: 30443 ## ServiceAccount configuration ## @@ -1199,17 +1191,7 @@ orborus: ## - name: FOO ## value: "bar" ## - 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 - value: "7" - - name: SHUFFLE_STATS_DISABLED - value: "true" - - name: KUBERNETES_NAMESPACE - value: "shuffle" - - name: SHUFFLE_BASE_IMAGE_NAME - value: "frikky/shuffle" # TODO: Allow to configure, share with worker + extraEnvVars: [] ## @param orborus.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for orborus containers ## extraEnvVarsCM: "" @@ -1347,6 +1329,10 @@ orborus: ## extraEgress: [] + ## @param orborus.executionConcurrency The maximum amount of concurrent workflow executions per worker + ## + executionConcurrency: 25 + ## @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. @@ -1365,8 +1351,8 @@ worker: ## @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 + ## @param worker.image.pullPolicy worker image pull policy. Only effective with worker.enableHelmDeployment. + ## @param worker.image.pullSecrets worker image pull secrets. Only effective with worker.enableHelmDeployment. ## image: registry: ghcr.io @@ -1386,10 +1372,10 @@ worker: ## - myRegistryKeySecretName ## pullSecrets: [] - ## @param worker.replicaCount Number of worker replicas to deploy + ## @param worker.replicaCount Number of worker replicas to deploy. Only effective with worker.enableHelmDeployment. ## replicaCount: 1 - ## @param worker.extraContainerPorts Optionally specify extra list of additional ports for worker containers + ## @param worker.extraContainerPorts Optionally specify extra list of additional ports for worker containers. Only effective with worker.enableHelmDeployment. ## e.g: ## extraContainerPorts: ## - name: myservice @@ -1398,7 +1384,7 @@ worker: 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.enabled Enable livenessProbe on worker containers. Only effective with worker.enableHelmDeployment. ## @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 @@ -1412,7 +1398,7 @@ worker: timeoutSeconds: 1 failureThreshold: 4 successThreshold: 1 - ## @param worker.readinessProbe.enabled Enable readinessProbe on worker containers + ## @param worker.readinessProbe.enabled Enable readinessProbe on worker containers. Only effective with worker.enableHelmDeployment. ## @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 @@ -1426,7 +1412,7 @@ worker: timeoutSeconds: 1 failureThreshold: 3 successThreshold: 1 - ## @param worker.startupProbe.enabled Enable startupProbe on worker containers + ## @param worker.startupProbe.enabled Enable startupProbe on worker containers. Only effective with worker.enableHelmDeployment. ## @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 @@ -1440,13 +1426,13 @@ worker: timeoutSeconds: 1 failureThreshold: 60 successThreshold: 1 - ## @param worker.customLivenessProbe Custom livenessProbe that overrides the default one + ## @param worker.customLivenessProbe Custom livenessProbe that overrides the default one. Only effective with worker.enableHelmDeployment. ## customLivenessProbe: {} - ## @param worker.customReadinessProbe Custom readinessProbe that overrides the default one + ## @param worker.customReadinessProbe Custom readinessProbe that overrides the default one. Only effective with worker.enableHelmDeployment. ## customReadinessProbe: {} - ## @param worker.customStartupProbe Custom startupProbe that overrides the default one + ## @param worker.customStartupProbe Custom startupProbe that overrides the default one. Only effective with worker.enableHelmDeployment. ## customStartupProbe: {} ## worker resource requests and limits @@ -1508,37 +1494,37 @@ worker: drop: ["ALL"] seccompProfile: type: "RuntimeDefault" - ## @param worker.command Override default worker container command (useful when using custom images) + ## @param worker.command Override default worker container command (useful when using custom images). Only effective with worker.enableHelmDeployment. ## command: [] - ## @param worker.args Override default worker container args (useful when using custom images) + ## @param worker.args Override default worker container args (useful when using custom images). Only effective with worker.enableHelmDeployment. ## args: [] - ## @param worker.automountServiceAccountToken Mount Service Account token in worker pods + ## @param worker.automountServiceAccountToken Mount Service Account token in worker pods. Only effective with worker.enableHelmDeployment. ## NOTE: worker requires the service account credentials to be mounted if manageAppDeployments is enabled. ## automountServiceAccountToken: true - ## @param worker.hostAliases worker pods host aliases + ## @param worker.hostAliases worker pods host aliases. Only effective with worker.enableHelmDeployment. ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ ## hostAliases: [] - ## @param worker.deploymentAnnotations Annotations for worker deployment + ## @param worker.deploymentAnnotations Annotations for worker deployment. Only effective with worker.enableHelmDeployment. ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ ## deploymentAnnotations: {} - ## @param worker.podLabels Extra labels for worker pods + ## @param worker.podLabels Extra labels for worker pods. Only effective with worker.enableHelmDeployment. ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ ## podLabels: {} - ## @param worker.podAnnotations Annotations for worker pods + ## @param worker.podAnnotations Annotations for worker pods. Only effective with worker.enableHelmDeployment. ## 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` + ## @param worker.podAffinityPreset Pod affinity preset. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard`. Only effective with worker.enableHelmDeployment. ## 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` + ## @param worker.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard`. Only effective with worker.enableHelmDeployment. ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity ## podAntiAffinityPreset: soft @@ -1546,7 +1532,7 @@ worker: ## 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` + ## @param worker.nodeAffinityPreset.type Node affinity preset type. Ignored if `worker.affinity` is set. Allowed values: `soft` or `hard`. Only effective with worker.enableHelmDeployment. ## type: "" ## @param worker.nodeAffinityPreset.key Node label key to match. Ignored if `worker.affinity` is set @@ -1559,64 +1545,64 @@ worker: ## - e2e-az2 ## values: [] - ## @param worker.affinity Affinity for worker pods assignment + ## @param worker.affinity Affinity for worker pods assignment. Only effective with worker.enableHelmDeployment. ## 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 + ## @param worker.nodeSelector Node labels for worker pods assignment. Only effective with worker.enableHelmDeployment. ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ ## nodeSelector: {} - ## @param worker.tolerations Tolerations for worker pods assignment + ## @param worker.tolerations Tolerations for worker pods assignment. Only effective with worker.enableHelmDeployment. ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ ## tolerations: [] - ## @param worker.updateStrategy.type worker deployment strategy type + ## @param worker.updateStrategy.type worker deployment strategy type. Only effective with worker.enableHelmDeployment. ## 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 + ## @param worker.priorityClassName worker pods' priorityClassName. Only effective with worker.enableHelmDeployment. ## priorityClassName: "" - ## @param worker.topologySpreadConstraints Topology Spread Constraints for worker pod assignment spread across your cluster among failure-domains + ## @param worker.topologySpreadConstraints Topology Spread Constraints for worker pod assignment spread across your cluster among failure-domains. Only effective with worker.enableHelmDeployment. ## 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 + ## @param worker.schedulerName Name of the k8s scheduler (other than default) for worker pods. Only effective with worker.enableHelmDeployment. ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ ## schedulerName: "" - ## @param worker.terminationGracePeriodSeconds Seconds worker pods need to terminate gracefully + ## @param worker.terminationGracePeriodSeconds Seconds worker pods need to terminate gracefully. Only effective with worker.enableHelmDeployment. ## 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 + ## @param worker.lifecycleHooks for worker containers to automate configuration before or after startup. Only effective with worker.enableHelmDeployment. ## lifecycleHooks: {} - ## @param worker.extraEnvVars Array with extra environment variables to add to worker containers + ## @param worker.extraEnvVars Array with extra environment variables to add to worker containers. Only effective with worker.enableHelmDeployment. ## e.g: ## extraEnvVars: ## - name: FOO ## value: "bar" ## extraEnvVars: [] - ## @param worker.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for worker containers + ## @param worker.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for worker containers. Only effective with worker.enableHelmDeployment. ## extraEnvVarsCM: "" - ## @param worker.extraEnvVarsSecret Name of existing Secret containing extra env vars for worker containers + ## @param worker.extraEnvVarsSecret Name of existing Secret containing extra env vars for worker containers. Only effective with worker.enableHelmDeployment. ## extraEnvVarsSecret: "" - ## @param worker.extraVolumes Optionally specify extra list of additional volumes for the worker pods + ## @param worker.extraVolumes Optionally specify extra list of additional volumes for the worker pods. Only effective with worker.enableHelmDeployment. ## extraVolumes: [] - ## @param worker.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the worker containers + ## @param worker.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the worker containers. Only effective with worker.enableHelmDeployment. ## extraVolumeMounts: [] - ## @param worker.sidecars Add additional sidecar containers to the worker pods + ## @param worker.sidecars Add additional sidecar containers to the worker pods. Only effective with worker.enableHelmDeployment. ## e.g: ## sidecars: ## - name: your-image-name @@ -1627,7 +1613,7 @@ worker: ## containerPort: 1234 ## sidecars: [] - ## @param worker.initContainers Add additional init containers to the worker pods + ## @param worker.initContainers Add additional init containers to the worker pods. Only effective with worker.enableHelmDeployment. ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ ## e.g: ## initContainers: @@ -1639,7 +1625,7 @@ worker: 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.create Enable/disable a Pod Disruption Budget creation. Only effective with worker.enableHelmDeployment. ## @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. ## @@ -1651,7 +1637,7 @@ worker: ## ref: https://kubernetes.io/docs/concepts/workloads/autoscaling/ ## autoscaling: - ## @param worker.autoscaling.vpa.enabled Enable VPA for worker pods + ## @param worker.autoscaling.vpa.enabled Enable VPA for worker pods. Only effective with worker.enableHelmDeployment. ## @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 @@ -1669,7 +1655,7 @@ worker: ## updatePolicy: updateMode: Auto - ## @param worker.autoscaling.hpa.enabled Enable HPA for worker pods + ## @param worker.autoscaling.hpa.enabled Enable HPA for worker pods. Only effective with worker.enableHelmDeployment. ## @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 @@ -1685,7 +1671,7 @@ worker: ## Service configuration ## service: - ## @param worker.service.labels Extra labels for worker service + ## @param worker.service.labels Extra labels for worker service. Only effective with worker.enableHelmDeployment. ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ ## labels: {} @@ -1870,8 +1856,14 @@ app: ## @param app.exposedContainerPort The port that shuffle app containers will listen on for new requests. ## exposedContainerPort: 80 + ## @param app.sdkTimeout The timeout in seconds for app actions. + ## + sdkTimeout: 300 + ## @param app.disableLogs Do not capture app logs. By default, app logs are captured, so that they are visible in the frontend. + ## + disableLogs: false - ## @param app.deployViaHelm A list of apps that should be deployed using helm. + ## @param app.deployViaHelm [object] A list of apps that should be deployed using helm. ## By default, workers create deployments and services for apps when they are first needed (or during startup for some selected apps). ## Deploying apps via workers has some drawbacks, such as: ## - A workflow fails when the app is not deployed when the workflow gets executed (see https://github.com/Shuffle/Shuffle/issues/1739) @@ -1879,7 +1871,11 @@ app: ## - Worker needs elevated permissions in Kubernetes ## Note that you can deploy some apps via helm, while keeping the flexibility of letting workers deploy apps if they are not already deployed. ## If you deploy all needed apps via helm and dont want workers to create additional deployments, set worker.manageAppDeployments to false. - ## + ## The key of the app does not matter. + ## @extra app.deployViaHelm.MY_APP.app [string] The name of the app (required, e.g. shuffle-tools) + ## @extra app.deployViaHelm.MY_APP.version [string] The version of the app (required, e.g. 1.2.0) + + # TODO: Convert sample value to @extra. ## Sample value: ## - app: my-app # required ## version: 1.0.0 # required @@ -1892,10 +1888,9 @@ app: ## extraEnv: [] # optional ## podSecurityContext: null # optional, defaults to app.podSecurityContext ## containerSecurityContext: null # optional, defaults to app.containerSecurityContext - ## ## TODO: allow to override resources, serviceAccount, mounts, env, security Contexts. Fall back to app defaults as defined above. ## - deployViaHelm: [] + deployViaHelm: {} ## @section Traffic Exposure Parameters ## @@ -2192,6 +2187,8 @@ volumePermissions: ## OpenSearch chart configuration ## ref: https://github.com/bitnami/charts/blob/main/bitnami/opensearch/values.yaml ## @param opensearch.enabled Switch to enable or disable the opensearch helm chart +## @skip opensearch.sysctlImage +## @skip opensearch.image ## @skip opensearch.master ## @skip opensearch.data ## @skip opensearch.coordinating @@ -2200,15 +2197,12 @@ volumePermissions: ## opensearch: enabled: true - sysctlImage: enabled: false - image: registry: docker.io repository: bitnamilegacy/opensearch tag: "3.2.0" - master: replicaCount: 1 data: