{
    "title": "Chart Values",
    "type": "object",
    "properties": {
        "global": {
            "type": "object",
            "properties": {
                "imageRegistry": {
                    "type": "string",
                    "description": "Global Docker image registry",
                    "default": ""
                },
                "imagePullSecrets": {
                    "type": "array",
                    "description": "Global Docker registry secret names as an array",
                    "default": [],
                    "items": {}
                },
                "defaultStorageClass": {
                    "type": "string",
                    "description": "Global default StorageClass for Persistent Volume(s)",
                    "default": ""
                },
                "compatibility": {
                    "type": "object",
                    "properties": {
                        "openshift": {
                            "type": "object",
                            "properties": {
                                "adaptSecurityContext": {
                                    "type": "string",
                                    "description": "Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation)",
                                    "default": "auto"
                                }
                            }
                        },
                        "omitEmptySeLinuxOptions": {
                            "type": "boolean",
                            "description": "If set to true, removes the seLinuxOptions from the securityContexts when it is set to an empty object",
                            "default": false
                        }
                    }
                }
            }
        },
        "kubeVersion": {
            "type": "string",
            "description": "Override Kubernetes version",
            "default": ""
        },
        "nameOverride": {
            "type": "string",
            "description": "String to partially override common.names.name",
            "default": ""
        },
        "fullnameOverride": {
            "type": "string",
            "description": "String to fully override common.names.fullname",
            "default": ""
        },
        "namespaceOverride": {
            "type": "string",
            "description": "String to fully override common.names.namespace",
            "default": ""
        },
        "commonLabels": {
            "type": "object",
            "description": "Labels to add to all deployed objects",
            "default": {}
        },
        "commonAnnotations": {
            "type": "object",
            "description": "Annotations to add to all deployed objects",
            "default": {}
        },
        "clusterDomain": {
            "type": "string",
            "description": "Kubernetes cluster domain name",
            "default": "cluster.local"
        },
        "extraDeploy": {
            "type": "array",
            "description": "Array of extra objects to deploy with the release",
            "default": [],
            "items": {}
        },
        "diagnosticMode": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable diagnostic mode (all probes will be disabled and the command will be overridden)",
                    "default": false
                },
                "command": {
                    "type": "array",
                    "description": "Command to override all containers in the chart release",
                    "default": [
                        "sleep"
                    ],
                    "items": {
                        "type": "string"
                    }
                },
                "args": {
                    "type": "array",
                    "description": "Args to override all containers in the chart release",
                    "default": [
                        "infinity"
                    ],
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "shuffle": {
            "type": "object",
            "properties": {
                "baseUrl": {
                    "type": "string",
                    "description": "The external base URL under which Shuffle is reachable.",
                    "default": ""
                },
                "org": {
                    "type": "string",
                    "description": "Default shuffle organization",
                    "default": "Shuffle"
                },
                "appRegistry": {
                    "type": "string",
                    "description": "The registry from / to which shuffle apps are pulled / pushed",
                    "default": ""
                },
                "timezone": {
                    "type": "string",
                    "description": "The timezone used by Shuffle",
                    "default": "Europe/Berlin"
                }
            }
        },
        "backend": {
            "type": "object",
            "properties": {
                "image": {
                    "type": "object",
                    "properties": {
                        "registry": {
                            "type": "string",
                            "description": "backend image registry",
                            "default": "ghcr.io"
                        },
                        "repository": {
                            "type": "string",
                            "description": "backend image repository",
                            "default": "shuffle/shuffle-backend"
                        },
                        "digest": {
                            "type": "string",
                            "description": "backend 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": "backend image pull policy",
                            "default": "IfNotPresent"
                        },
                        "pullSecrets": {
                            "type": "array",
                            "description": "backend image pull secrets",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "replicaCount": {
                    "type": "number",
                    "description": "Number of backend replicas to deploy",
                    "default": 1
                },
                "containerPorts": {
                    "type": "object",
                    "properties": {
                        "http": {
                            "type": "number",
                            "description": "backend HTTP container port",
                            "default": 5001
                        }
                    }
                },
                "extraContainerPorts": {
                    "type": "array",
                    "description": "Optionally specify extra list of additional ports for backend containers",
                    "default": [],
                    "items": {}
                },
                "livenessProbe": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enable livenessProbe on backend containers",
                            "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 backend containers",
                            "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 backend containers",
                            "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",
                    "default": {}
                },
                "customReadinessProbe": {
                    "type": "object",
                    "description": "Custom readinessProbe that overrides the default one",
                    "default": {}
                },
                "customStartupProbe": {
                    "type": "object",
                    "description": "Custom startupProbe that overrides the default one",
                    "default": {}
                },
                "resourcesPreset": {
                    "type": "string",
                    "description": "Set backend container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if backend.resources is set (backend.resources is recommended for production).",
                    "default": "small"
                },
                "resources": {
                    "type": "object",
                    "description": "Set backend container requests and limits for different resources like CPU or memory (essential for production workloads)",
                    "default": {}
                },
                "podSecurityContext": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enable backend pods' Security Context",
                            "default": true
                        },
                        "fsGroupChangePolicy": {
                            "type": "string",
                            "description": "Set filesystem group change policy for backend pods",
                            "default": "Always"
                        },
                        "sysctls": {
                            "type": "array",
                            "description": "Set kernel settings using the sysctl interface for backend pods",
                            "default": [],
                            "items": {}
                        },
                        "supplementalGroups": {
                            "type": "array",
                            "description": "Set filesystem extra groups for backend pods",
                            "default": [],
                            "items": {}
                        },
                        "fsGroup": {
                            "type": "number",
                            "description": "Set fsGroup in backend pods' Security Context",
                            "default": 1001
                        }
                    }
                },
                "containerSecurityContext": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enabled backend container' Security Context",
                            "default": true
                        },
                        "runAsUser": {
                            "type": "number",
                            "description": "Set runAsUser in backend container' Security Context",
                            "default": 1000
                        },
                        "runAsGroup": {
                            "type": "number",
                            "description": "Set runAsGroup in backend container' Security Context",
                            "default": 1000
                        },
                        "runAsNonRoot": {
                            "type": "boolean",
                            "description": "Set runAsNonRoot in backend container' Security Context",
                            "default": true
                        },
                        "readOnlyRootFilesystem": {
                            "type": "boolean",
                            "description": "Set readOnlyRootFilesystem in backend container' Security Context",
                            "default": true
                        },
                        "privileged": {
                            "type": "boolean",
                            "description": "Set privileged in backend container' Security Context",
                            "default": false
                        },
                        "allowPrivilegeEscalation": {
                            "type": "boolean",
                            "description": "Set allowPrivilegeEscalation in backend container' Security Context",
                            "default": false
                        },
                        "capabilities": {
                            "type": "object",
                            "properties": {
                                "drop": {
                                    "type": "array",
                                    "description": "List of capabilities to be dropped in backend container",
                                    "default": [
                                        "ALL"
                                    ],
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "seccompProfile": {
                            "type": "object",
                            "properties": {
                                "type": {
                                    "type": "string",
                                    "description": "Set seccomp profile in backend container",
                                    "default": "RuntimeDefault"
                                }
                            }
                        }
                    }
                },
                "command": {
                    "type": "array",
                    "description": "Override default backend container command (useful when using custom images)",
                    "default": [],
                    "items": {}
                },
                "args": {
                    "type": "array",
                    "description": "Override default backend container args (useful when using custom images)",
                    "default": [],
                    "items": {}
                },
                "automountServiceAccountToken": {
                    "type": "boolean",
                    "description": "Mount Service Account token in backend pods",
                    "default": true
                },
                "hostAliases": {
                    "type": "array",
                    "description": "backend pods host aliases",
                    "default": [],
                    "items": {}
                },
                "daemonsetAnnotations": {
                    "type": "object",
                    "description": "Annotations for backend daemonset",
                    "default": {}
                },
                "deploymentAnnotations": {
                    "type": "object",
                    "description": "Annotations for backend deployment",
                    "default": {}
                },
                "statefulsetAnnotations": {
                    "type": "object",
                    "description": "Annotations for backend statefulset",
                    "default": {}
                },
                "podLabels": {
                    "type": "object",
                    "description": "Extra labels for backend pods",
                    "default": {}
                },
                "podAnnotations": {
                    "type": "object",
                    "description": "Annotations for backend pods",
                    "default": {}
                },
                "podAffinityPreset": {
                    "type": "string",
                    "description": "Pod affinity preset. Ignored if `backend.affinity` is set. Allowed values: `soft` or `hard`",
                    "default": ""
                },
                "podAntiAffinityPreset": {
                    "type": "string",
                    "description": "Pod anti-affinity preset. Ignored if `backend.affinity` is set. Allowed values: `soft` or `hard`",
                    "default": "soft"
                },
                "nodeAffinityPreset": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "description": "Node affinity preset type. Ignored if `backend.affinity` is set. Allowed values: `soft` or `hard`",
                            "default": ""
                        },
                        "key": {
                            "type": "string",
                            "description": "Node label key to match. Ignored if `backend.affinity` is set",
                            "default": ""
                        },
                        "values": {
                            "type": "array",
                            "description": "Node label values to match. Ignored if `backend.affinity` is set",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "affinity": {
                    "type": "object",
                    "description": "Affinity for backend pods assignment",
                    "default": {}
                },
                "nodeSelector": {
                    "type": "object",
                    "description": "Node labels for backend pods assignment",
                    "default": {}
                },
                "tolerations": {
                    "type": "array",
                    "description": "Tolerations for backend pods assignment",
                    "default": [],
                    "items": {}
                },
                "updateStrategy": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "description": "backend statefulset strategy type",
                            "default": "RollingUpdate"
                        }
                    }
                },
                "podManagementPolicy": {
                    "type": "string",
                    "description": "Pod management policy for backend statefulset",
                    "default": "OrderedReady"
                },
                "priorityClassName": {
                    "type": "string",
                    "description": "backend pods' priorityClassName",
                    "default": ""
                },
                "topologySpreadConstraints": {
                    "type": "array",
                    "description": "Topology Spread Constraints for backend pod assignment spread across your cluster among failure-domains",
                    "default": [],
                    "items": {}
                },
                "schedulerName": {
                    "type": "string",
                    "description": "Name of the k8s scheduler (other than default) for backend pods",
                    "default": ""
                },
                "terminationGracePeriodSeconds": {
                    "type": "string",
                    "description": "Seconds backend pods need to terminate gracefully",
                    "default": ""
                },
                "lifecycleHooks": {
                    "type": "object",
                    "description": "for backend containers to automate configuration before or after startup",
                    "default": {}
                },
                "extraEnvVars": {
                    "type": "array",
                    "description": "Array with extra environment variables to add to backend containers",
                    "default": [],
                    "items": {}
                },
                "extraEnvVarsCM": {
                    "type": "string",
                    "description": "Name of existing ConfigMap containing extra env vars for backend containers",
                    "default": ""
                },
                "extraEnvVarsSecret": {
                    "type": "string",
                    "description": "Name of existing Secret containing extra env vars for backend containers",
                    "default": ""
                },
                "extraVolumes": {
                    "type": "array",
                    "description": "Optionally specify extra list of additional volumes for the backend pods",
                    "default": [],
                    "items": {}
                },
                "extraVolumeMounts": {
                    "type": "array",
                    "description": "Optionally specify extra list of additional volumeMounts for the backend containers",
                    "default": [],
                    "items": {}
                },
                "sidecars": {
                    "type": "array",
                    "description": "Add additional sidecar containers to the backend pods",
                    "default": [],
                    "items": {}
                },
                "initContainers": {
                    "type": "array",
                    "description": "Add additional init containers to the backend pods",
                    "default": [],
                    "items": {}
                },
                "pdb": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Enable/disable a Pod Disruption Budget creation",
                            "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 `backend.pdb.minAvailable` and `backend.pdb.maxUnavailable` are empty.",
                            "default": ""
                        }
                    }
                },
                "autoscaling": {
                    "type": "object",
                    "properties": {
                        "vpa": {
                            "type": "object",
                            "properties": {
                                "enabled": {
                                    "type": "boolean",
                                    "description": "Enable VPA for backend pods",
                                    "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 backend pods",
                                    "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": ""
                                }
                            }
                        }
                    }
                },
                "serviceAccount": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Specifies whether a ServiceAccount should be created",
                            "default": true
                        },
                        "name": {
                            "type": "string",
                            "description": "The name of the ServiceAccount to use.",
                            "default": ""
                        },
                        "annotations": {
                            "type": "object",
                            "description": "Additional Service Account annotations (evaluated as a template)",
                            "default": {}
                        },
                        "automountServiceAccountToken": {
                            "type": "boolean",
                            "description": "Automount service account token for the backend service account",
                            "default": true
                        },
                        "imagePullSecrets": {
                            "type": "array",
                            "description": "Add image pull secrets to the backend service account",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "rbac": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Specifies whether RBAC resources should be created",
                            "default": true
                        }
                    }
                },
                "networkPolicy": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Specifies whether a NetworkPolicy should be created",
                            "default": true
                        },
                        "allowExternal": {
                            "type": "boolean",
                            "description": "Don't require server label for connections",
                            "default": true
                        },
                        "allowExternalEgress": {
                            "type": "boolean",
                            "description": "Allow the pod to access any range of port and all destinations.",
                            "default": true
                        },
                        "extraIngress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy",
                            "default": [],
                            "items": {}
                        },
                        "extraEgress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "cleanupSchedule": {
                    "type": "number",
                    "description": "The interval in seconds at which the cleanup job runs",
                    "default": 300
                },
                "openSearch": {
                    "type": "object",
                    "properties": {
                        "url": {
                            "type": "string",
                            "description": "The URL at which OpenSearch is available",
                            "default": "http://{{ .Release.Name }}-opensearch:9200"
                        },
                        "username": {
                            "type": "string",
                            "description": "The username that is used for authenticating with OpenSearch",
                            "default": "admin"
                        },
                        "certificateFile": {
                            "type": "string",
                            "description": "The path to a custom OpenSearch certificate file",
                            "default": ""
                        },
                        "skipSSLVerify": {
                            "type": "boolean",
                            "description": "Skip SSL verification",
                            "default": false
                        },
                        "indexPrefix": {
                            "type": "string",
                            "description": "A prefix for OpenSearch indices",
                            "default": ""
                        }
                    }
                },
                "apps": {
                    "type": "object",
                    "properties": {
                        "downloadLocation": {
                            "type": "string",
                            "description": "The location to a git repository from which default appps are downloaded on startup.",
                            "default": "https://github.com/shuffle/python-apps"
                        },
                        "downloadBranch": {
                            "type": "string",
                            "description": "The branch from which apps should be downloaded on startup.",
                            "default": "master"
                        },
                        "forceUpdate": {
                            "type": "boolean",
                            "description": "Force an update of apps on startup.",
                            "default": false
                        }
                    }
                }
            }
        },
        "frontend": {
            "type": "object",
            "properties": {
                "image": {
                    "type": "object",
                    "properties": {
                        "registry": {
                            "type": "string",
                            "description": "frontend image registry",
                            "default": "ghcr.io"
                        },
                        "repository": {
                            "type": "string",
                            "description": "frontend image repository",
                            "default": "shuffle/shuffle-frontend"
                        },
                        "digest": {
                            "type": "string",
                            "description": "frontend 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": "frontend image pull policy",
                            "default": "IfNotPresent"
                        },
                        "pullSecrets": {
                            "type": "array",
                            "description": "frontend image pull secrets",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "replicaCount": {
                    "type": "number",
                    "description": "Number of frontend replicas to deploy",
                    "default": 1
                },
                "containerPorts": {
                    "type": "object",
                    "properties": {
                        "http": {
                            "type": "number",
                            "description": "frontend HTTP container port",
                            "default": 80
                        },
                        "https": {
                            "type": "number",
                            "description": "frontend HTTPS container port",
                            "default": 443
                        }
                    }
                },
                "extraContainerPorts": {
                    "type": "array",
                    "description": "Optionally specify extra list of additional ports for frontend containers",
                    "default": [],
                    "items": {}
                },
                "livenessProbe": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enable livenessProbe on frontend containers",
                            "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 frontend containers",
                            "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 frontend containers",
                            "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",
                    "default": {}
                },
                "customReadinessProbe": {
                    "type": "object",
                    "description": "Custom readinessProbe that overrides the default one",
                    "default": {}
                },
                "customStartupProbe": {
                    "type": "object",
                    "description": "Custom startupProbe that overrides the default one",
                    "default": {}
                },
                "resourcesPreset": {
                    "type": "string",
                    "description": "Set frontend container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if frontend.resources is set (frontend.resources is recommended for production).",
                    "default": "nano"
                },
                "resources": {
                    "type": "object",
                    "description": "Set frontend container requests and limits for different resources like CPU or memory (essential for production workloads)",
                    "default": {}
                },
                "podSecurityContext": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enable frontend pods' Security Context",
                            "default": false
                        },
                        "fsGroupChangePolicy": {
                            "type": "string",
                            "description": "Set filesystem group change policy for frontend pods",
                            "default": "Always"
                        },
                        "sysctls": {
                            "type": "array",
                            "description": "Set kernel settings using the sysctl interface for frontend pods",
                            "default": [],
                            "items": {}
                        },
                        "supplementalGroups": {
                            "type": "array",
                            "description": "Set filesystem extra groups for frontend pods",
                            "default": [],
                            "items": {}
                        },
                        "fsGroup": {
                            "type": "number",
                            "description": "Set fsGroup in frontend pods' Security Context",
                            "default": 1001
                        }
                    }
                },
                "containerSecurityContext": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enabled frontend container' Security Context",
                            "default": false
                        },
                        "runAsUser": {
                            "type": "number",
                            "description": "Set runAsUser in frontend container' Security Context",
                            "default": 101
                        },
                        "runAsGroup": {
                            "type": "number",
                            "description": "Set runAsGroup in frontend container' Security Context",
                            "default": 101
                        },
                        "runAsNonRoot": {
                            "type": "boolean",
                            "description": "Set runAsNonRoot in frontend container' Security Context",
                            "default": true
                        },
                        "readOnlyRootFilesystem": {
                            "type": "boolean",
                            "description": "Set readOnlyRootFilesystem in frontend container' Security Context",
                            "default": true
                        },
                        "privileged": {
                            "type": "boolean",
                            "description": "Set privileged in frontend container' Security Context",
                            "default": false
                        },
                        "allowPrivilegeEscalation": {
                            "type": "boolean",
                            "description": "Set allowPrivilegeEscalation in frontend container' Security Context",
                            "default": false
                        },
                        "capabilities": {
                            "type": "object",
                            "properties": {
                                "drop": {
                                    "type": "array",
                                    "description": "List of capabilities to be dropped in frontend container",
                                    "default": [
                                        "ALL"
                                    ],
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "seccompProfile": {
                            "type": "object",
                            "properties": {
                                "type": {
                                    "type": "string",
                                    "description": "Set seccomp profile in frontend container",
                                    "default": "RuntimeDefault"
                                }
                            }
                        }
                    }
                },
                "command": {
                    "type": "array",
                    "description": "Override default frontend container command (useful when using custom images)",
                    "default": [],
                    "items": {}
                },
                "args": {
                    "type": "array",
                    "description": "Override default frontend container args (useful when using custom images)",
                    "default": [],
                    "items": {}
                },
                "automountServiceAccountToken": {
                    "type": "boolean",
                    "description": "Mount Service Account token in frontend pods",
                    "default": false
                },
                "hostAliases": {
                    "type": "array",
                    "description": "frontend pods host aliases",
                    "default": [],
                    "items": {}
                },
                "daemonsetAnnotations": {
                    "type": "object",
                    "description": "Annotations for frontend daemonset",
                    "default": {}
                },
                "deploymentAnnotations": {
                    "type": "object",
                    "description": "Annotations for frontend deployment",
                    "default": {}
                },
                "statefulsetAnnotations": {
                    "type": "object",
                    "description": "Annotations for frontend statefulset",
                    "default": {}
                },
                "podLabels": {
                    "type": "object",
                    "description": "Extra labels for frontend pods",
                    "default": {}
                },
                "podAnnotations": {
                    "type": "object",
                    "description": "Annotations for frontend pods",
                    "default": {}
                },
                "podAffinityPreset": {
                    "type": "string",
                    "description": "Pod affinity preset. Ignored if `frontend.affinity` is set. Allowed values: `soft` or `hard`",
                    "default": ""
                },
                "podAntiAffinityPreset": {
                    "type": "string",
                    "description": "Pod anti-affinity preset. Ignored if `frontend.affinity` is set. Allowed values: `soft` or `hard`",
                    "default": "soft"
                },
                "nodeAffinityPreset": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "description": "Node affinity preset type. Ignored if `frontend.affinity` is set. Allowed values: `soft` or `hard`",
                            "default": ""
                        },
                        "key": {
                            "type": "string",
                            "description": "Node label key to match. Ignored if `frontend.affinity` is set",
                            "default": ""
                        },
                        "values": {
                            "type": "array",
                            "description": "Node label values to match. Ignored if `frontend.affinity` is set",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "affinity": {
                    "type": "object",
                    "description": "Affinity for frontend pods assignment",
                    "default": {}
                },
                "nodeSelector": {
                    "type": "object",
                    "description": "Node labels for frontend pods assignment",
                    "default": {}
                },
                "tolerations": {
                    "type": "array",
                    "description": "Tolerations for frontend pods assignment",
                    "default": [],
                    "items": {}
                },
                "updateStrategy": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "description": "frontend statefulset strategy type",
                            "default": "RollingUpdate"
                        }
                    }
                },
                "podManagementPolicy": {
                    "type": "string",
                    "description": "Pod management policy for frontend statefulset",
                    "default": "OrderedReady"
                },
                "priorityClassName": {
                    "type": "string",
                    "description": "frontend pods' priorityClassName",
                    "default": ""
                },
                "topologySpreadConstraints": {
                    "type": "array",
                    "description": "Topology Spread Constraints for frontend pod assignment spread across your cluster among failure-domains",
                    "default": [],
                    "items": {}
                },
                "schedulerName": {
                    "type": "string",
                    "description": "Name of the k8s scheduler (other than default) for frontend pods",
                    "default": ""
                },
                "terminationGracePeriodSeconds": {
                    "type": "string",
                    "description": "Seconds frontend pods need to terminate gracefully",
                    "default": ""
                },
                "lifecycleHooks": {
                    "type": "object",
                    "description": "for frontend containers to automate configuration before or after startup",
                    "default": {}
                },
                "extraEnvVars": {
                    "type": "array",
                    "description": "Array with extra environment variables to add to frontend containers",
                    "default": [],
                    "items": {}
                },
                "extraEnvVarsCM": {
                    "type": "string",
                    "description": "Name of existing ConfigMap containing extra env vars for frontend containers",
                    "default": ""
                },
                "extraEnvVarsSecret": {
                    "type": "string",
                    "description": "Name of existing Secret containing extra env vars for frontend containers",
                    "default": ""
                },
                "extraVolumes": {
                    "type": "array",
                    "description": "Optionally specify extra list of additional volumes for the frontend pods",
                    "default": [],
                    "items": {}
                },
                "extraVolumeMounts": {
                    "type": "array",
                    "description": "Optionally specify extra list of additional volumeMounts for the frontend containers",
                    "default": [],
                    "items": {}
                },
                "sidecars": {
                    "type": "array",
                    "description": "Add additional sidecar containers to the frontend pods",
                    "default": [],
                    "items": {}
                },
                "initContainers": {
                    "type": "array",
                    "description": "Add additional init containers to the frontend pods",
                    "default": [],
                    "items": {}
                },
                "pdb": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Enable/disable a Pod Disruption Budget creation",
                            "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 `frontend.pdb.minAvailable` and `frontend.pdb.maxUnavailable` are empty.",
                            "default": ""
                        }
                    }
                },
                "autoscaling": {
                    "type": "object",
                    "properties": {
                        "vpa": {
                            "type": "object",
                            "properties": {
                                "enabled": {
                                    "type": "boolean",
                                    "description": "Enable VPA for frontend pods",
                                    "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 frontend pods",
                                    "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": ""
                                }
                            }
                        }
                    }
                },
                "serviceAccount": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Specifies whether a ServiceAccount should be created",
                            "default": true
                        },
                        "name": {
                            "type": "string",
                            "description": "The name of the ServiceAccount to use.",
                            "default": ""
                        },
                        "annotations": {
                            "type": "object",
                            "description": "Additional Service Account annotations (evaluated as a template)",
                            "default": {}
                        },
                        "automountServiceAccountToken": {
                            "type": "boolean",
                            "description": "Automount service account token for the frontend service account",
                            "default": true
                        },
                        "imagePullSecrets": {
                            "type": "array",
                            "description": "Add image pull secrets to the frontend service account",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "networkPolicy": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Specifies whether a NetworkPolicy should be created",
                            "default": true
                        },
                        "allowExternal": {
                            "type": "boolean",
                            "description": "Don't require server label for connections",
                            "default": true
                        },
                        "allowExternalEgress": {
                            "type": "boolean",
                            "description": "Allow the pod to access any range of port and all destinations.",
                            "default": true
                        },
                        "extraIngress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy",
                            "default": [],
                            "items": {}
                        },
                        "extraEgress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)",
                            "default": [],
                            "items": {}
                        }
                    }
                }
            }
        },
        "orborus": {
            "type": "object",
            "properties": {
                "image": {
                    "type": "object",
                    "properties": {
                        "registry": {
                            "type": "string",
                            "description": "orborus image registry",
                            "default": "ghcr.io"
                        },
                        "repository": {
                            "type": "string",
                            "description": "orborus image repository",
                            "default": "shuffle/shuffle-orborus"
                        },
                        "digest": {
                            "type": "string",
                            "description": "orborus 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": "orborus image pull policy",
                            "default": "IfNotPresent"
                        },
                        "pullSecrets": {
                            "type": "array",
                            "description": "orborus image pull secrets",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "replicaCount": {
                    "type": "number",
                    "description": "Number of orborus replicas to deploy",
                    "default": 1
                },
                "containerPorts": {
                    "type": "object",
                    "properties": {
                        "http": {
                            "type": "number",
                            "description": "orborus HTTP container port",
                            "default": 8080
                        }
                    }
                },
                "extraContainerPorts": {
                    "type": "array",
                    "description": "Optionally specify extra list of additional ports for orborus containers",
                    "default": [],
                    "items": {}
                },
                "livenessProbe": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enable livenessProbe on orborus containers",
                            "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 orborus containers",
                            "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 orborus containers",
                            "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",
                    "default": {}
                },
                "customReadinessProbe": {
                    "type": "object",
                    "description": "Custom readinessProbe that overrides the default one",
                    "default": {}
                },
                "customStartupProbe": {
                    "type": "object",
                    "description": "Custom startupProbe that overrides the default one",
                    "default": {}
                },
                "resourcesPreset": {
                    "type": "string",
                    "description": "Set orborus container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if orborus.resources is set (orborus.resources is recommended for production).",
                    "default": "nano"
                },
                "resources": {
                    "type": "object",
                    "description": "Set orborus container requests and limits for different resources like CPU or memory (essential for production workloads)",
                    "default": {}
                },
                "podSecurityContext": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enable orborus pods' Security Context",
                            "default": true
                        },
                        "fsGroupChangePolicy": {
                            "type": "string",
                            "description": "Set filesystem group change policy for orborus pods",
                            "default": "Always"
                        },
                        "sysctls": {
                            "type": "array",
                            "description": "Set kernel settings using the sysctl interface for orborus pods",
                            "default": [],
                            "items": {}
                        },
                        "supplementalGroups": {
                            "type": "array",
                            "description": "Set filesystem extra groups for orborus pods",
                            "default": [],
                            "items": {}
                        },
                        "fsGroup": {
                            "type": "number",
                            "description": "Set fsGroup in orborus pods' Security Context",
                            "default": 1001
                        }
                    }
                },
                "containerSecurityContext": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enabled orborus container' Security Context",
                            "default": true
                        },
                        "runAsUser": {
                            "type": "number",
                            "description": "Set runAsUser in orborus container' Security Context",
                            "default": 101
                        },
                        "runAsGroup": {
                            "type": "number",
                            "description": "Set runAsGroup in orborus container' Security Context",
                            "default": 101
                        },
                        "runAsNonRoot": {
                            "type": "boolean",
                            "description": "Set runAsNonRoot in orborus container' Security Context",
                            "default": true
                        },
                        "readOnlyRootFilesystem": {
                            "type": "boolean",
                            "description": "Set readOnlyRootFilesystem in orborus container' Security Context",
                            "default": true
                        },
                        "privileged": {
                            "type": "boolean",
                            "description": "Set privileged in orborus container' Security Context",
                            "default": false
                        },
                        "allowPrivilegeEscalation": {
                            "type": "boolean",
                            "description": "Set allowPrivilegeEscalation in orborus container' Security Context",
                            "default": false
                        },
                        "capabilities": {
                            "type": "object",
                            "properties": {
                                "drop": {
                                    "type": "array",
                                    "description": "List of capabilities to be dropped in orborus container",
                                    "default": [
                                        "ALL"
                                    ],
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "seccompProfile": {
                            "type": "object",
                            "properties": {
                                "type": {
                                    "type": "string",
                                    "description": "Set seccomp profile in orborus container",
                                    "default": "RuntimeDefault"
                                }
                            }
                        }
                    }
                },
                "command": {
                    "type": "array",
                    "description": "Override default orborus container command (useful when using custom images)",
                    "default": [],
                    "items": {}
                },
                "args": {
                    "type": "array",
                    "description": "Override default orborus container args (useful when using custom images)",
                    "default": [],
                    "items": {}
                },
                "automountServiceAccountToken": {
                    "type": "boolean",
                    "description": "Mount Service Account token in orborus pods",
                    "default": true
                },
                "hostAliases": {
                    "type": "array",
                    "description": "orborus pods host aliases",
                    "default": [],
                    "items": {}
                },
                "daemonsetAnnotations": {
                    "type": "object",
                    "description": "Annotations for orborus daemonset",
                    "default": {}
                },
                "deploymentAnnotations": {
                    "type": "object",
                    "description": "Annotations for orborus deployment",
                    "default": {}
                },
                "statefulsetAnnotations": {
                    "type": "object",
                    "description": "Annotations for orborus statefulset",
                    "default": {}
                },
                "podLabels": {
                    "type": "object",
                    "description": "Extra labels for orborus pods",
                    "default": {}
                },
                "podAnnotations": {
                    "type": "object",
                    "description": "Annotations for orborus pods",
                    "default": {}
                },
                "podAffinityPreset": {
                    "type": "string",
                    "description": "Pod affinity preset. Ignored if `orborus.affinity` is set. Allowed values: `soft` or `hard`",
                    "default": ""
                },
                "podAntiAffinityPreset": {
                    "type": "string",
                    "description": "Pod anti-affinity preset. Ignored if `orborus.affinity` is set. Allowed values: `soft` or `hard`",
                    "default": "soft"
                },
                "nodeAffinityPreset": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "description": "Node affinity preset type. Ignored if `orborus.affinity` is set. Allowed values: `soft` or `hard`",
                            "default": ""
                        },
                        "key": {
                            "type": "string",
                            "description": "Node label key to match. Ignored if `orborus.affinity` is set",
                            "default": ""
                        },
                        "values": {
                            "type": "array",
                            "description": "Node label values to match. Ignored if `orborus.affinity` is set",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "affinity": {
                    "type": "object",
                    "description": "Affinity for orborus pods assignment",
                    "default": {}
                },
                "nodeSelector": {
                    "type": "object",
                    "description": "Node labels for orborus pods assignment",
                    "default": {}
                },
                "tolerations": {
                    "type": "array",
                    "description": "Tolerations for orborus pods assignment",
                    "default": [],
                    "items": {}
                },
                "updateStrategy": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "description": "orborus statefulset strategy type",
                            "default": "RollingUpdate"
                        }
                    }
                },
                "podManagementPolicy": {
                    "type": "string",
                    "description": "Pod management policy for orborus statefulset",
                    "default": "OrderedReady"
                },
                "priorityClassName": {
                    "type": "string",
                    "description": "orborus pods' priorityClassName",
                    "default": ""
                },
                "topologySpreadConstraints": {
                    "type": "array",
                    "description": "Topology Spread Constraints for orborus pod assignment spread across your cluster among failure-domains",
                    "default": [],
                    "items": {}
                },
                "schedulerName": {
                    "type": "string",
                    "description": "Name of the k8s scheduler (other than default) for orborus pods",
                    "default": ""
                },
                "terminationGracePeriodSeconds": {
                    "type": "string",
                    "description": "Seconds orborus pods need to terminate gracefully",
                    "default": ""
                },
                "lifecycleHooks": {
                    "type": "object",
                    "description": "for orborus containers to automate configuration before or after startup",
                    "default": {}
                },
                "extraEnvVars": {
                    "type": "array",
                    "description": "Array with extra environment variables to add to orborus containers",
                    "default": [],
                    "items": {}
                },
                "extraEnvVarsCM": {
                    "type": "string",
                    "description": "Name of existing ConfigMap containing extra env vars for orborus containers",
                    "default": ""
                },
                "extraEnvVarsSecret": {
                    "type": "string",
                    "description": "Name of existing Secret containing extra env vars for orborus containers",
                    "default": ""
                },
                "extraVolumes": {
                    "type": "array",
                    "description": "Optionally specify extra list of additional volumes for the orborus pods",
                    "default": [],
                    "items": {}
                },
                "extraVolumeMounts": {
                    "type": "array",
                    "description": "Optionally specify extra list of additional volumeMounts for the orborus containers",
                    "default": [],
                    "items": {}
                },
                "sidecars": {
                    "type": "array",
                    "description": "Add additional sidecar containers to the orborus pods",
                    "default": [],
                    "items": {}
                },
                "initContainers": {
                    "type": "array",
                    "description": "Add additional init containers to the orborus pods",
                    "default": [],
                    "items": {}
                },
                "pdb": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Enable/disable a Pod Disruption Budget creation",
                            "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 `orborus.pdb.minAvailable` and `orborus.pdb.maxUnavailable` are empty.",
                            "default": ""
                        }
                    }
                },
                "autoscaling": {
                    "type": "object",
                    "properties": {
                        "vpa": {
                            "type": "object",
                            "properties": {
                                "enabled": {
                                    "type": "boolean",
                                    "description": "Enable VPA for orborus pods",
                                    "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 orborus pods",
                                    "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": ""
                                }
                            }
                        }
                    }
                },
                "serviceAccount": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Specifies whether a ServiceAccount should be created",
                            "default": true
                        },
                        "name": {
                            "type": "string",
                            "description": "The name of the ServiceAccount to use.",
                            "default": ""
                        },
                        "annotations": {
                            "type": "object",
                            "description": "Additional Service Account annotations (evaluated as a template)",
                            "default": {}
                        },
                        "automountServiceAccountToken": {
                            "type": "boolean",
                            "description": "Automount service account token for the orborus service account",
                            "default": true
                        },
                        "imagePullSecrets": {
                            "type": "array",
                            "description": "Add image pull secrets to the orborus service account",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "rbac": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Specifies whether RBAC resources should be created",
                            "default": true
                        }
                    }
                },
                "networkPolicy": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Specifies whether a NetworkPolicy should be created",
                            "default": true
                        },
                        "allowExternal": {
                            "type": "boolean",
                            "description": "Don't require server label for connections",
                            "default": true
                        },
                        "allowExternalEgress": {
                            "type": "boolean",
                            "description": "Allow the pod to access any range of port and all destinations.",
                            "default": true
                        },
                        "extraIngress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy",
                            "default": [],
                            "items": {}
                        },
                        "extraEgress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)",
                            "default": [],
                            "items": {}
                        }
                    }
                }
            }
        },
        "worker": {
            "type": "object",
            "properties": {
                "image": {
                    "type": "object",
                    "properties": {
                        "registry": {
                            "type": "string",
                            "description": "worker image registry",
                            "default": "ghcr.io"
                        },
                        "repository": {
                            "type": "string",
                            "description": "worker image repository",
                            "default": "shuffle/shuffle-worker"
                        },
                        "digest": {
                            "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": ""
                        }
                    }
                },
                "serviceAccount": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Specifies whether a ServiceAccount should be created",
                            "default": true
                        },
                        "name": {
                            "type": "string",
                            "description": "The name of the ServiceAccount to use.",
                            "default": ""
                        },
                        "annotations": {
                            "type": "object",
                            "description": "Additional Service Account annotations (evaluated as a template)",
                            "default": {}
                        },
                        "automountServiceAccountToken": {
                            "type": "boolean",
                            "description": "Automount service account token for the worker service account",
                            "default": true
                        },
                        "imagePullSecrets": {
                            "type": "array",
                            "description": "Add image pull secrets to the worker service account",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "rbac": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Specifies whether RBAC resources should be created",
                            "default": true
                        }
                    }
                },
                "networkPolicy": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Specifies whether a NetworkPolicy should be created",
                            "default": true
                        },
                        "allowExternal": {
                            "type": "boolean",
                            "description": "Don't require server label for connections",
                            "default": true
                        },
                        "allowExternalEgress": {
                            "type": "boolean",
                            "description": "Allow the pod to access any range of port and all destinations.",
                            "default": true
                        },
                        "extraIngress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy",
                            "default": [],
                            "items": {}
                        },
                        "extraEgress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)",
                            "default": [],
                            "items": {}
                        }
                    }
                }
            }
        },
        "app": {
            "type": "object",
            "properties": {
                "serviceAccount": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Specifies whether a ServiceAccount should be created",
                            "default": true
                        },
                        "name": {
                            "type": "string",
                            "description": "The name of the ServiceAccount to use.",
                            "default": ""
                        },
                        "annotations": {
                            "type": "object",
                            "description": "Additional Service Account annotations (evaluated as a template)",
                            "default": {}
                        },
                        "automountServiceAccountToken": {
                            "type": "boolean",
                            "description": "Automount service account token for the app service account",
                            "default": true
                        },
                        "imagePullSecrets": {
                            "type": "array",
                            "description": "Add image pull secrets to the app service account",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "rbac": {
                    "type": "object",
                    "properties": {
                        "create": {
                            "type": "boolean",
                            "description": "Specifies whether RBAC resources should be created",
                            "default": true
                        }
                    }
                },
                "networkPolicy": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Specifies whether a NetworkPolicy should be created",
                            "default": true
                        },
                        "allowExternal": {
                            "type": "boolean",
                            "description": "Don't require server label for connections",
                            "default": true
                        },
                        "allowExternalEgress": {
                            "type": "boolean",
                            "description": "Allow the pod to access any range of port and all destinations.",
                            "default": true
                        },
                        "extraIngress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy",
                            "default": [],
                            "items": {}
                        },
                        "extraEgress": {
                            "type": "array",
                            "description": "Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)",
                            "default": [],
                            "items": {}
                        }
                    }
                }
            }
        },
        "ingress": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable ingress record generation for frontend and backend",
                    "default": false
                },
                "pathType": {
                    "type": "string",
                    "description": "Ingress path type for the frontend path",
                    "default": "Prefix"
                },
                "backendPathType": {
                    "type": "string",
                    "description": "Ingress path type for the backend path",
                    "default": "Prefix"
                },
                "apiVersion": {
                    "type": "string",
                    "description": "Force Ingress API version (automatically detected if not set)",
                    "default": ""
                },
                "hostname": {
                    "type": "string",
                    "description": "Default host for the ingress record",
                    "default": "shuffle.local"
                },
                "ingressClassName": {
                    "type": "string",
                    "description": "IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)",
                    "default": "nginx"
                },
                "path": {
                    "type": "string",
                    "description": "Ingress path for Shuffle frontend",
                    "default": "\"/\""
                },
                "backendPath": {
                    "type": "string",
                    "description": "Ingress path for Shuffle backend",
                    "default": "\"/api/\""
                },
                "annotations": {
                    "type": "object",
                    "description": "Additional annotations for the Ingress resource.",
                    "default": {}
                },
                "tls": {
                    "type": "boolean",
                    "description": "Enable TLS configuration for the host defined at `ingress.hostname` parameter",
                    "default": false
                },
                "selfSigned": {
                    "type": "boolean",
                    "description": "Create a TLS secret for this ingress record using self-signed certificates generated by Helm",
                    "default": false
                },
                "extraHosts": {
                    "type": "array",
                    "description": "An array with additional hostname(s) to be covered with the ingress record",
                    "default": [],
                    "items": {}
                },
                "extraPaths": {
                    "type": "array",
                    "description": "An array with additional arbitrary paths that may need to be added to the ingress under the main host",
                    "default": [],
                    "items": {}
                },
                "extraTls": {
                    "type": "array",
                    "description": "TLS configuration for additional hostname(s) to be covered with this ingress record",
                    "default": [],
                    "items": {}
                },
                "secrets": {
                    "type": "array",
                    "description": "Custom TLS certificates as secrets",
                    "default": [],
                    "items": {}
                },
                "extraRules": {
                    "type": "array",
                    "description": "Additional rules to be covered with this ingress record",
                    "default": [],
                    "items": {}
                }
            }
        },
        "istio": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable creation of an Istio Gateway and VirtualService for frontend and backend",
                    "default": false
                },
                "apiVersion": {
                    "type": "string",
                    "description": "The istio apiVersion to use for Gateway and VirtualService resources",
                    "default": "networking.istio.io/v1"
                },
                "hosts": {
                    "type": "array",
                    "description": "One or more hosts exposed by Istio",
                    "default": [],
                    "items": {}
                },
                "gateway": {
                    "type": "object",
                    "properties": {
                        "annotations": {
                            "type": "object",
                            "description": "Additional annotations for the Gateway resource",
                            "default": {}
                        },
                        "http": {
                            "type": "object",
                            "properties": {
                                "enabled": {
                                    "type": "boolean",
                                    "description": "Enable HTTP server port 80",
                                    "default": true
                                },
                                "httpsRedirect": {
                                    "type": "boolean",
                                    "description": "If set to true, a 301 redirect is send for all HTTP connections",
                                    "default": false
                                }
                            }
                        },
                        "https": {
                            "type": "object",
                            "properties": {
                                "enabled": {
                                    "type": "boolean",
                                    "description": "Enable HTTPS server on port 443",
                                    "default": false
                                },
                                "tlsCredentialName": {
                                    "type": "string",
                                    "description": "The name of the secret that holds the TLS certs including the CA certificates.",
                                    "default": ""
                                },
                                "tlsCipherSuites": {
                                    "type": "array",
                                    "description": "If specified, only support the specified cipher list.",
                                    "default": [],
                                    "items": {}
                                }
                            }
                        },
                        "extraServers": {
                            "type": "array",
                            "description": "Additional servers for the Gateway resource",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "virtualService": {
                    "type": "object",
                    "properties": {
                        "annotations": {
                            "type": "object",
                            "description": "Additional annotations for the VirtualService resource.",
                            "default": {}
                        },
                        "backendHeaders": {
                            "type": "object",
                            "description": "Header manipulation rules for backend traffic",
                            "default": {}
                        },
                        "frontendHeaders": {
                            "type": "object",
                            "description": "Header manipulation rules for frontend traffic",
                            "default": {}
                        }
                    }
                }
            }
        },
        "persistence": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable persistence using Persistent Volume Claims",
                    "default": true
                },
                "apps": {
                    "type": "object",
                    "properties": {
                        "existingClaim": {
                            "type": "string",
                            "description": "Name of an existing PVC to use",
                            "default": ""
                        },
                        "storageClass": {
                            "type": "string",
                            "description": "PVC Storage Class for shuffle-apps volume",
                            "default": ""
                        },
                        "subPath": {
                            "type": "string",
                            "description": "The sub path used in the volume",
                            "default": ""
                        },
                        "accessModes": {
                            "type": "array",
                            "description": "The access mode of the volume",
                            "default": [
                                "ReadWriteOnce"
                            ],
                            "items": {
                                "type": "string"
                            }
                        },
                        "size": {
                            "type": "string",
                            "description": "The size of the volume",
                            "default": "5Gi"
                        },
                        "annotations": {
                            "type": "object",
                            "description": "Annotations for the PVC",
                            "default": {}
                        },
                        "selector": {
                            "type": "object",
                            "description": "Selector to match an existing Persistent Volume",
                            "default": {}
                        }
                    }
                },
                "appBuilder": {
                    "type": "object",
                    "properties": {
                        "storageClass": {
                            "type": "string",
                            "description": "PVC Storage Class for backend-apps-claim volume",
                            "default": ""
                        },
                        "accessModes": {
                            "type": "array",
                            "description": "The access mode of the volume",
                            "default": [
                                "ReadWriteOnce"
                            ],
                            "items": {
                                "type": "string"
                            }
                        },
                        "size": {
                            "type": "string",
                            "description": "The size of the volume",
                            "default": "5Gi"
                        },
                        "annotations": {
                            "type": "object",
                            "description": "Annotations for the PVC",
                            "default": {}
                        },
                        "selector": {
                            "type": "object",
                            "description": "Selector to match an existing Persistent Volume",
                            "default": {}
                        }
                    }
                },
                "files": {
                    "type": "object",
                    "properties": {
                        "existingClaim": {
                            "type": "string",
                            "description": "Name of an existing PVC to use",
                            "default": ""
                        },
                        "storageClass": {
                            "type": "string",
                            "description": "PVC Storage Class for shuffle-files volume",
                            "default": ""
                        },
                        "subPath": {
                            "type": "string",
                            "description": "The sub path used in the volume",
                            "default": ""
                        },
                        "accessModes": {
                            "type": "array",
                            "description": "The access mode of the volume",
                            "default": [
                                "ReadWriteOnce"
                            ],
                            "items": {
                                "type": "string"
                            }
                        },
                        "size": {
                            "type": "string",
                            "description": "The size of the volume",
                            "default": "5Gi"
                        },
                        "annotations": {
                            "type": "object",
                            "description": "Annotations for the PVC",
                            "default": {}
                        },
                        "selector": {
                            "type": "object",
                            "description": "Selector to match an existing Persistent Volume",
                            "default": {}
                        }
                    }
                }
            }
        },
        "volumePermissions": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup`",
                    "default": false
                },
                "image": {
                    "type": "object",
                    "properties": {
                        "registry": {
                            "type": "string",
                            "description": "OS Shell + Utility image registry",
                            "default": "docker.io"
                        },
                        "repository": {
                            "type": "string",
                            "description": "OS Shell + Utility image repository",
                            "default": "bitnami/os-shell"
                        },
                        "pullPolicy": {
                            "type": "string",
                            "description": "OS Shell + Utility image pull policy",
                            "default": "IfNotPresent"
                        },
                        "pullSecrets": {
                            "type": "array",
                            "description": "OS Shell + Utility image pull secrets",
                            "default": [],
                            "items": {}
                        }
                    }
                },
                "resourcesPreset": {
                    "type": "string",
                    "description": "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).",
                    "default": "nano"
                },
                "resources": {
                    "type": "object",
                    "description": "Set init container requests and limits for different resources like CPU or memory (essential for production workloads)",
                    "default": {}
                },
                "containerSecurityContext": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enabled init container' Security Context",
                            "default": true
                        },
                        "runAsUser": {
                            "type": "number",
                            "description": "Set init container's Security Context runAsUser",
                            "default": 0
                        }
                    }
                }
            }
        },
        "opensearch": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Switch to enable or disable the opensearch helm chart",
                    "default": true
                }
            }
        },
        "vault": {
            "type": "object",
            "properties": {
                "role": {
                    "type": "string",
                    "description": "Specify the Vault role, which should be used to get the secret from Vault.",
                    "default": ""
                },
                "secrets": {
                    "type": "array",
                    "description": "A list of VaultSecrets to create",
                    "default": [],
                    "items": {}
                }
            }
        }
    }
}