{ "$schema": "http://json-schema.org/schema#", "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": "" }, "storageClass": { "type": "string", "description": "DEPRECATED: use global.defaultStorageClass instead", "default": "" }, "redis": { "type": "object", "properties": { "password": { "type": "string", "description": "Global Redis® password (overrides `auth.password`)", "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" } } } } } } }, "kubeVersion": { "type": "string", "description": "Override Kubernetes version", "default": "" }, "nameOverride": { "type": "string", "description": "String to partially override common.names.fullname", "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", "string"], "description": "Labels to add to all deployed objects", "default": {} }, "commonAnnotations": { "type": ["object", "string"], "description": "Annotations to add to all deployed objects", "default": {} }, "secretAnnotations": { "type": ["object", "string"], "description": "Annotations to add to secret", "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": {} }, "useHostnames": { "type": "boolean", "description": "Use hostnames internally when announcing replication. If false, the hostname will be resolved to an IP address", "default": true }, "nameResolutionThreshold": { "type": "number", "description": "Failure threshold for internal hostnames resolution", "default": 5 }, "nameResolutionTimeout": { "type": "number", "description": "Timeout seconds between probes for internal hostnames resolution", "default": 5 }, "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", "string"], "description": "Command to override all containers in the deployment", "default": [ "sleep" ], "items": { "type": "string" } }, "args": { "type": ["array", "string"], "description": "Args to override all containers in the deployment", "default": [ "infinity" ], "items": { "type": "string" } } } }, "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "Redis® image registry", "default": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "Redis® image repository", "default": "REPOSITORY_NAME/redis" }, "digest": { "type": "string", "description": "Redis® image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "pullPolicy": { "type": "string", "description": "Redis® image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "Redis® image pull secrets", "default": [], "items": {} }, "debug": { "type": "boolean", "description": "Enable image debug mode", "default": false } } }, "architecture": { "type": "string", "description": "Redis® architecture. Allowed values: `standalone` or `replication`", "default": "replication" }, "auth": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable password authentication", "default": true }, "sentinel": { "type": "boolean", "description": "Enable password authentication on sentinels too", "default": true }, "password": { "type": "string", "description": "Redis® password", "default": "" }, "existingSecret": { "type": "string", "description": "The name of an existing secret with Redis® credentials", "default": "" }, "existingSecretPasswordKey": { "type": "string", "description": "Password key to be retrieved from existing secret", "default": "" }, "usePasswordFiles": { "type": "boolean", "description": "Mount credentials as files instead of using an environment variable", "default": false }, "usePasswordFileFromSecret": { "type": "boolean", "description": "Mount password file from secret", "default": true }, "acl": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enables the support of the Redis ACL system", "default": false }, "users": { "type": "array", "description": "A list of the configured users in the Redis ACL system", "default": [], "items": {} } } } } }, "commonConfiguration": { "type": "string", "description": "Common configuration to be added into the ConfigMap", "default": "\"\"" }, "existingConfigmap": { "type": "string", "description": "The name of an existing ConfigMap with your custom configuration for Redis® nodes", "default": "" }, "master": { "type": "object", "properties": { "count": { "type": "number", "description": "Number of Redis® master instances to deploy (experimental, requires additional configuration)", "default": 1 }, "revisionHistoryLimit": { "type": "number", "description": "The number of old history to retain to allow rollback", "default": 10 }, "configuration": { "type": "string", "description": "Configuration for Redis® master nodes", "default": "" }, "disableCommands": { "type": "array", "description": "Array with Redis® commands to disable on master nodes", "default": [ "FLUSHDB", "FLUSHALL" ], "items": { "type": "string" } }, "command": { "type": ["array", "string"], "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": ["array", "string"], "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "enableServiceLinks": { "type": "boolean", "description": "Whether information about services should be injected into pod's environment variable", "default": true }, "preExecCmds": { "type": "array", "description": "Additional commands to run prior to starting Redis® master", "default": [], "items": {} }, "extraFlags": { "type": "array", "description": "Array with additional command line flags for Redis® master", "default": [], "items": {} }, "extraEnvVars": { "type": ["array", "string"], "description": "Array with extra environment variables to add to Redis® master nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for Redis® master nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for Redis® master nodes", "default": "" }, "containerPorts": { "type": "object", "properties": { "redis": { "type": "number", "description": "Container port to open on Redis® master nodes", "default": 6379 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Redis® master nodes", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 20 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 5 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Redis® master nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 20 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 5 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Redis® master nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 20 }, "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": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "customStartupProbe": { "type": ["object", "string"], "description": "Custom startupProbe that overrides the default one", "default": {} }, "customLivenessProbe": { "type": ["object", "string"], "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": ["object", "string"], "description": "Custom readinessProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if master.resources is set (master.resources is recommended for production).", "default": "nano" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Redis® master pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Redis® master pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Redis® master containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set Redis® master containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set Redis® master containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set Redis® master containers' Security Context runAsNonRoot", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Is it possible to escalate Redis® pod(s) privileges", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context read-only root filesystem", "default": true }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set Redis® master containers' Security Context seccompProfile", "default": "RuntimeDefault" } } }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "Set Redis® master containers' Security Context capabilities to drop", "default": [ "ALL" ], "items": { "type": "string" } } } } } }, "kind": { "type": "string", "description": "Use either Deployment, StatefulSet (default) or DaemonSet", "default": "StatefulSet" }, "schedulerName": { "type": "string", "description": "Alternate scheduler for Redis® master pods", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Redis® master statefulset strategy type", "default": "RollingUpdate" } } }, "minReadySeconds": { "type": "number", "description": "How many seconds a pod needs to be ready before killing the next, during update", "default": 0 }, "priorityClassName": { "type": "string", "description": "Redis® master pods' priorityClassName", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": ["array", "string"], "description": "Redis® master pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for Redis® master pods", "default": {} }, "podAnnotations": { "type": ["object", "string"], "description": "Annotations for Redis® master pods", "default": {} }, "shareProcessNamespace": { "type": "boolean", "description": "Share a single process namespace between all of the containers in Redis® master pods", "default": false }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `master.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `master.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": ["object", "string"], "description": "Affinity for Redis® master pods assignment", "default": {} }, "nodeSelector": { "type": ["object", "string"], "description": "Node labels for Redis® master pods assignment", "default": {} }, "tolerations": { "type": ["array", "string"], "description": "Tolerations for Redis® master pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": ["array", "string"], "description": "Spread Constraints for Redis® master pod assignment", "default": [], "items": {} }, "dnsPolicy": { "type": "string", "description": "DNS Policy for Redis® master pod", "default": "" }, "dnsConfig": { "type": ["object", "string"], "description": "DNS Configuration for Redis® master pod", "default": {} }, "lifecycleHooks": { "type": ["object", "string"], "description": "for the Redis® master container(s) to automate configuration before or after startup", "default": {} }, "extraVolumes": { "type": ["array", "string"], "description": "Optionally specify extra list of additional volumes for the Redis® master pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": ["array", "string"], "description": "Optionally specify extra list of additional volumeMounts for the Redis® master container(s)", "default": [], "items": {} }, "sidecars": { "type": ["array", "string"], "description": "Add additional sidecar containers to the Redis® master pod(s)", "default": [], "items": {} }, "initContainers": { "type": ["array", "string"], "description": "Add additional init containers to the Redis® master pod(s)", "default": [], "items": {} }, "persistence": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable persistence on Redis® master nodes using Persistent Volume Claims", "default": true }, "medium": { "type": "string", "description": "Provide a medium for `emptyDir` volumes.", "default": "" }, "sizeLimit": { "type": "string", "description": "Set this to enable a size limit for `emptyDir` volumes.", "default": "" }, "path": { "type": "string", "description": "The path the volume will be mounted at on Redis® master containers", "default": "/data" }, "subPath": { "type": "string", "description": "The subdirectory of the volume to mount on Redis® master containers", "default": "" }, "subPathExpr": { "type": "string", "description": "Used to construct the subPath subdirectory of the volume to mount on Redis® master containers", "default": "" }, "storageClass": { "type": "string", "description": "Persistent Volume storage class", "default": "" }, "accessModes": { "type": "array", "description": "Persistent Volume access modes", "default": [ "ReadWriteOnce" ], "items": { "type": "string" } }, "size": { "type": "string", "description": "Persistent Volume size", "default": "8Gi" }, "annotations": { "type": "object", "description": "Additional custom annotations for the PVC", "default": {} }, "labels": { "type": ["object", "string"], "description": "Additional custom labels for the PVC", "default": {} }, "selector": { "type": ["object", "string"], "description": "Additional labels to match for the PVC", "default": {} }, "dataSource": { "type": ["object", "string"], "description": "Custom PVC data source", "default": {} }, "existingClaim": { "type": "string", "description": "Use a existing PVC which must be created manually before bound", "default": "" } } }, "persistentVolumeClaimRetentionPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Controls if and how PVCs are deleted during the lifecycle of a StatefulSet", "default": false }, "whenScaled": { "type": "string", "description": "Volume retention behavior when the replica count of the StatefulSet is reduced", "default": "Retain" }, "whenDeleted": { "type": "string", "description": "Volume retention behavior that applies when the StatefulSet is deleted", "default": "Retain" } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Redis® master service type", "default": "ClusterIP" }, "portNames": { "type": "object", "properties": { "redis": { "type": "string", "description": "Redis® master service port name", "default": "tcp-redis" } } }, "ports": { "type": "object", "properties": { "redis": { "type": "number", "description": "Redis® master service port", "default": 6379 } } }, "nodePorts": { "type": "object", "properties": { "redis": { "type": "string", "description": "Node port for Redis® master", "default": "" } } }, "externalTrafficPolicy": { "type": "string", "description": "Redis® master service external traffic policy", "default": "Cluster" }, "extraPorts": { "type": ["array", "string"], "description": "Extra ports to expose (normally used with the `sidecar` value)", "default": [], "items": {} }, "internalTrafficPolicy": { "type": "string", "description": "Redis® master service internal traffic policy (requires Kubernetes v1.22 or greater to be usable)", "default": "Cluster" }, "clusterIP": { "type": "string", "description": "Redis® master service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Redis® master service Load Balancer IP", "default": "" }, "loadBalancerClass": { "type": "string", "description": "master service Load Balancer class if service type is `LoadBalancer` (optional, cloud specific)", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Redis® master service Load Balancer sources", "default": [], "items": {} }, "externalIPs": { "type": ["array", "string"], "description": "Redis® master service External IPs", "default": [], "items": {} }, "annotations": { "type": ["object", "string"], "description": "Additional custom annotations for Redis® master service", "default": {} }, "sessionAffinity": { "type": "string", "description": "Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"", "default": "None" }, "sessionAffinityConfig": { "type": ["object", "string"], "description": "Additional settings for the sessionAffinity", "default": {} } } }, "terminationGracePeriodSeconds": { "type": "number", "description": "Integer setting the termination grace period for the redis-master pods", "default": 30 }, "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": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Whether to auto mount the service account token", "default": false }, "annotations": { "type": ["object", "string"], "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } } } }, "replica": { "type": "object", "properties": { "kind": { "type": "string", "description": "Use either DaemonSet or StatefulSet (default)", "default": "StatefulSet" }, "replicaCount": { "type": "number", "description": "Number of Redis® replicas to deploy", "default": 3 }, "revisionHistoryLimit": { "type": "number", "description": "The number of old history to retain to allow rollback", "default": 10 }, "configuration": { "type": "string", "description": "Configuration for Redis® replicas nodes", "default": "" }, "disableCommands": { "type": "array", "description": "Array with Redis® commands to disable on replicas nodes", "default": [ "FLUSHDB", "FLUSHALL" ], "items": { "type": "string" } }, "command": { "type": ["array", "string"], "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": ["array", "string"], "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "enableServiceLinks": { "type": "boolean", "description": "Whether information about services should be injected into pod's environment variable", "default": true }, "preExecCmds": { "type": "array", "description": "Additional commands to run prior to starting Redis® replicas", "default": [], "items": {} }, "extraFlags": { "type": "array", "description": "Array with additional command line flags for Redis® replicas", "default": [], "items": {} }, "extraEnvVars": { "type": ["array", "string"], "description": "Array with extra environment variables to add to Redis® replicas nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for Redis® replicas nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for Redis® replicas nodes", "default": "" }, "externalMaster": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Use external master for bootstrapping", "default": false }, "host": { "type": "string", "description": "External master host to bootstrap from", "default": "" }, "port": { "type": "number", "description": "Port for Redis service external master host", "default": 6379 } } }, "containerPorts": { "type": "object", "properties": { "redis": { "type": "number", "description": "Container port to open on Redis® replicas nodes", "default": 6379 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Redis® replicas nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 10 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 22 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Redis® replicas nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 20 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 5 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Redis® replicas nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 20 }, "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": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "customStartupProbe": { "type": ["object", "string"], "description": "Custom startupProbe that overrides the default one", "default": {} }, "customLivenessProbe": { "type": ["object", "string"], "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": ["object", "string"], "description": "Custom readinessProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if replica.resources is set (replica.resources is recommended for production).", "default": "nano" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Redis® replicas pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Redis® replicas pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Redis® replicas containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set Redis® replicas containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set Redis® replicas containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set Redis® replicas containers' Security Context runAsNonRoot", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set Redis® replicas pod's Security Context allowPrivilegeEscalation", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context read-only root filesystem", "default": true }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set Redis® replicas containers' Security Context seccompProfile", "default": "RuntimeDefault" } } }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "Set Redis® replicas containers' Security Context capabilities to drop", "default": [ "ALL" ], "items": { "type": "string" } } } } } }, "schedulerName": { "type": "string", "description": "Alternate scheduler for Redis® replicas pods", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Redis® replicas statefulset strategy type", "default": "RollingUpdate" } } }, "minReadySeconds": { "type": "number", "description": "How many seconds a pod needs to be ready before killing the next, during update", "default": 0 }, "priorityClassName": { "type": "string", "description": "Redis® replicas pods' priorityClassName", "default": "" }, "podManagementPolicy": { "type": "string", "description": "podManagementPolicy to manage scaling operation of %%MAIN_CONTAINER_NAME%% pods", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": ["array", "string"], "description": "Redis® replicas pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for Redis® replicas pods", "default": {} }, "podAnnotations": { "type": ["object", "string"], "description": "Annotations for Redis® replicas pods", "default": {} }, "shareProcessNamespace": { "type": "boolean", "description": "Share a single process namespace between all of the containers in Redis® replicas pods", "default": false }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `replica.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `replica.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": ["object", "string"], "description": "Affinity for Redis® replicas pods assignment", "default": {} }, "nodeSelector": { "type": ["object", "string"], "description": "Node labels for Redis® replicas pods assignment", "default": {} }, "tolerations": { "type": ["array", "string"], "description": "Tolerations for Redis® replicas pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": ["array", "string"], "description": "Spread Constraints for Redis® replicas pod assignment", "default": [], "items": {} }, "dnsPolicy": { "type": "string", "description": "DNS Policy for Redis® replica pods", "default": "" }, "dnsConfig": { "type": ["object", "string"], "description": "DNS Configuration for Redis® replica pods", "default": {} }, "lifecycleHooks": { "type": ["object", "string"], "description": "for the Redis® replica container(s) to automate configuration before or after startup", "default": {} }, "extraVolumes": { "type": ["array", "string"], "description": "Optionally specify extra list of additional volumes for the Redis® replicas pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": ["array", "string"], "description": "Optionally specify extra list of additional volumeMounts for the Redis® replicas container(s)", "default": [], "items": {} }, "sidecars": { "type": ["array", "string"], "description": "Add additional sidecar containers to the Redis® replicas pod(s)", "default": [], "items": {} }, "initContainers": { "type": ["array", "string"], "description": "Add additional init containers to the Redis® replicas pod(s)", "default": [], "items": {} }, "persistence": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable persistence on Redis® replicas nodes using Persistent Volume Claims", "default": true }, "medium": { "type": "string", "description": "Provide a medium for `emptyDir` volumes.", "default": "" }, "sizeLimit": { "type": "string", "description": "Set this to enable a size limit for `emptyDir` volumes.", "default": "" }, "path": { "type": "string", "description": "The path the volume will be mounted at on Redis® replicas containers", "default": "/data" }, "subPath": { "type": "string", "description": "The subdirectory of the volume to mount on Redis® replicas containers", "default": "" }, "subPathExpr": { "type": "string", "description": "Used to construct the subPath subdirectory of the volume to mount on Redis® replicas containers", "default": "" }, "storageClass": { "type": "string", "description": "Persistent Volume storage class", "default": "" }, "accessModes": { "type": "array", "description": "Persistent Volume access modes", "default": [ "ReadWriteOnce" ], "items": { "type": "string" } }, "size": { "type": "string", "description": "Persistent Volume size", "default": "8Gi" }, "annotations": { "type": "object", "description": "Additional custom annotations for the PVC", "default": {} }, "labels": { "type": ["object", "string"], "description": "Additional custom labels for the PVC", "default": {} }, "selector": { "type": ["object", "string"], "description": "Additional labels to match for the PVC", "default": {} }, "dataSource": { "type": ["object", "string"], "description": "Custom PVC data source", "default": {} }, "existingClaim": { "type": "string", "description": "Use a existing PVC which must be created manually before bound", "default": "" } } }, "persistentVolumeClaimRetentionPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Controls if and how PVCs are deleted during the lifecycle of a StatefulSet", "default": false }, "whenScaled": { "type": "string", "description": "Volume retention behavior when the replica count of the StatefulSet is reduced", "default": "Retain" }, "whenDeleted": { "type": "string", "description": "Volume retention behavior that applies when the StatefulSet is deleted", "default": "Retain" } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Redis® replicas service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "redis": { "type": "number", "description": "Redis® replicas service port", "default": 6379 } } }, "nodePorts": { "type": "object", "properties": { "redis": { "type": "string", "description": "Node port for Redis® replicas", "default": "" } } }, "externalTrafficPolicy": { "type": "string", "description": "Redis® replicas service external traffic policy", "default": "Cluster" }, "internalTrafficPolicy": { "type": "string", "description": "Redis® replicas service internal traffic policy (requires Kubernetes v1.22 or greater to be usable)", "default": "Cluster" }, "extraPorts": { "type": ["array", "string"], "description": "Extra ports to expose (normally used with the `sidecar` value)", "default": [], "items": {} }, "clusterIP": { "type": "string", "description": "Redis® replicas service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Redis® replicas service Load Balancer IP", "default": "" }, "loadBalancerClass": { "type": "string", "description": "replicas service Load Balancer class if service type is `LoadBalancer` (optional, cloud specific)", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Redis® replicas service Load Balancer sources", "default": [], "items": {} }, "annotations": { "type": ["object", "string"], "description": "Additional custom annotations for Redis® replicas service", "default": {} }, "sessionAffinity": { "type": "string", "description": "Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"", "default": "None" }, "sessionAffinityConfig": { "type": ["object", "string"], "description": "Additional settings for the sessionAffinity", "default": {} } } }, "terminationGracePeriodSeconds": { "type": "number", "description": "Integer setting the termination grace period for the redis-replicas pods", "default": 30 }, "autoscaling": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable replica autoscaling settings", "default": false }, "minReplicas": { "type": "number", "description": "Minimum replicas for the pod autoscaling", "default": 1 }, "maxReplicas": { "type": "number", "description": "Maximum replicas for the pod autoscaling", "default": 11 }, "targetCPU": { "type": "string", "description": "Percentage of CPU to consider when autoscaling", "default": "" }, "targetMemory": { "type": "string", "description": "Percentage of Memory to consider when autoscaling", "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": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Whether to auto mount the service account token", "default": false }, "annotations": { "type": ["object", "string"], "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } } } }, "sentinel": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Use Redis® Sentinel on Redis® pods.", "default": false }, "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "Redis® Sentinel image registry", "default": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "Redis® Sentinel image repository", "default": "REPOSITORY_NAME/redis-sentinel" }, "digest": { "type": "string", "description": "Redis® Sentinel image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "pullPolicy": { "type": "string", "description": "Redis® Sentinel image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "Redis® Sentinel image pull secrets", "default": [], "items": {} }, "debug": { "type": "boolean", "description": "Enable image debug mode", "default": false } } }, "annotations": { "type": ["object", "string"], "description": "Additional custom annotations for Redis® Sentinel resource", "default": {} }, "masterSet": { "type": "string", "description": "Master set name", "default": "mymaster" }, "quorum": { "type": "number", "description": "Sentinel Quorum", "default": 2 }, "getMasterTimeout": { "type": "number", "description": "Amount of time to allow before get_sentinel_master_info() times out.", "default": 90 }, "automateClusterRecovery": { "type": "boolean", "description": "Automate cluster recovery in cases where the last replica is not considered a good replica and Sentinel won't automatically failover to it.", "default": false }, "redisShutdownWaitFailover": { "type": "boolean", "description": "Whether the Redis® master container waits for the failover at shutdown (in addition to the Redis® Sentinel container).", "default": true }, "downAfterMilliseconds": { "type": "number", "description": "Timeout for detecting a Redis® node is down", "default": 60000 }, "failoverTimeout": { "type": "number", "description": "Timeout for performing a election failover", "default": 180000 }, "parallelSyncs": { "type": "number", "description": "Number of replicas that can be reconfigured in parallel to use the new master after a failover", "default": 1 }, "configuration": { "type": "string", "description": "Configuration for Redis® Sentinel nodes", "default": "" }, "command": { "type": ["array", "string"], "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": ["array", "string"], "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "enableServiceLinks": { "type": "boolean", "description": "Whether information about services should be injected into pod's environment variable", "default": true }, "preExecCmds": { "type": "array", "description": "Additional commands to run prior to starting Redis® Sentinel", "default": [], "items": {} }, "extraEnvVars": { "type": ["array", "string"], "description": "Array with extra environment variables to add to Redis® Sentinel nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for Redis® Sentinel nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for Redis® Sentinel nodes", "default": "" }, "externalMaster": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Use external master for bootstrapping", "default": false }, "host": { "type": "string", "description": "External master host to bootstrap from", "default": "" }, "port": { "type": "number", "description": "Port for Redis service external master host", "default": 6379 } } }, "containerPorts": { "type": "object", "properties": { "sentinel": { "type": "number", "description": "Container port to open on Redis® Sentinel nodes", "default": 26379 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Redis® Sentinel nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 10 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 22 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Redis® Sentinel nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 20 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 6 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Redis® Sentinel nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 20 }, "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": 6 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "customStartupProbe": { "type": ["object", "string"], "description": "Custom startupProbe that overrides the default one", "default": {} }, "customLivenessProbe": { "type": ["object", "string"], "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": ["object", "string"], "description": "Custom readinessProbe that overrides the default one", "default": {} }, "persistence": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable persistence on Redis® sentinel nodes using Persistent Volume Claims (Experimental)", "default": false }, "storageClass": { "type": "string", "description": "Persistent Volume storage class", "default": "" }, "accessModes": { "type": "array", "description": "Persistent Volume access modes", "default": [ "ReadWriteOnce" ], "items": { "type": "string" } }, "size": { "type": "string", "description": "Persistent Volume size", "default": "100Mi" }, "annotations": { "type": "object", "description": "Additional custom annotations for the PVC", "default": {} }, "labels": { "type": ["object", "string"], "description": "Additional custom labels for the PVC", "default": {} }, "selector": { "type": ["object", "string"], "description": "Additional labels to match for the PVC", "default": {} }, "dataSource": { "type": ["object", "string"], "description": "Custom PVC data source", "default": {} }, "medium": { "type": "string", "description": "Provide a medium for `emptyDir` volumes.", "default": "" }, "sizeLimit": { "type": "string", "description": "Set this to enable a size limit for `emptyDir` volumes.", "default": "" } } }, "persistentVolumeClaimRetentionPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Controls if and how PVCs are deleted during the lifecycle of a StatefulSet", "default": false }, "whenScaled": { "type": "string", "description": "Volume retention behavior when the replica count of the StatefulSet is reduced", "default": "Retain" }, "whenDeleted": { "type": "string", "description": "Volume retention behavior that applies when the StatefulSet is deleted", "default": "Retain" } } }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if sentinel.resources is set (sentinel.resources is recommended for production).", "default": "nano" }, "resources": { "type": "object", "description": "Set 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 Redis® Sentinel containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set Redis® Sentinel containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set Redis® Sentinel containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set Redis® Sentinel containers' Security Context runAsNonRoot", "default": true }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context read-only root filesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set Redis® Sentinel containers' Security Context allowPrivilegeEscalation", "default": false }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set Redis® Sentinel containers' Security Context seccompProfile", "default": "RuntimeDefault" } } }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "Set Redis® Sentinel containers' Security Context capabilities to drop", "default": [ "ALL" ], "items": { "type": "string" } } } } } }, "lifecycleHooks": { "type": ["object", "string"], "description": "for the Redis® sentinel container(s) to automate configuration before or after startup", "default": {} }, "extraVolumes": { "type": ["array", "string"], "description": "Optionally specify extra list of additional volumes for the Redis® Sentinel", "default": [], "items": {} }, "extraVolumeMounts": { "type": ["array", "string"], "description": "Optionally specify extra list of additional volumeMounts for the Redis® Sentinel container(s)", "default": [], "items": {} }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Redis® Sentinel service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "redis": { "type": "number", "description": "Redis® service port for Redis®", "default": 6379 }, "sentinel": { "type": "number", "description": "Redis® service port for Redis® Sentinel", "default": 26379 } } }, "nodePorts": { "type": "object", "properties": { "redis": { "type": "string", "description": "Node port for Redis®", "default": "" }, "sentinel": { "type": "string", "description": "Node port for Sentinel", "default": "" } } }, "externalTrafficPolicy": { "type": "string", "description": "Redis® Sentinel service external traffic policy", "default": "Cluster" }, "extraPorts": { "type": ["array", "string"], "description": "Extra ports to expose (normally used with the `sidecar` value)", "default": [], "items": {} }, "clusterIP": { "type": "string", "description": "Redis® Sentinel service Cluster IP", "default": "" }, "createMaster": { "type": "boolean", "description": "Enable master service pointing to the current master (experimental)", "default": false }, "loadBalancerIP": { "type": "string", "description": "Redis® Sentinel service Load Balancer IP", "default": "" }, "loadBalancerClass": { "type": "string", "description": "sentinel service Load Balancer class if service type is `LoadBalancer` (optional, cloud specific)", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Redis® Sentinel service Load Balancer sources", "default": [], "items": {} }, "annotations": { "type": ["object", "string"], "description": "Additional custom annotations for Redis® Sentinel service", "default": {} }, "sessionAffinity": { "type": "string", "description": "Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"", "default": "None" }, "sessionAffinityConfig": { "type": ["object", "string"], "description": "Additional settings for the sessionAffinity", "default": {} }, "headless": { "type": "object", "properties": { "annotations": { "type": ["object", "string"], "description": "Annotations for the headless service.", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose for the headless service", "default": [], "items": {} } } } } }, "masterService": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable master service pointing to the current master (experimental)", "default": false }, "type": { "type": "string", "description": "Redis® Sentinel master service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "redis": { "type": "number", "description": "Redis® service port for Redis®", "default": 6379 } } }, "nodePorts": { "type": "object", "properties": { "redis": { "type": "string", "description": "Node port for Redis®", "default": "" } } }, "externalTrafficPolicy": { "type": "string", "description": "Redis® master service external traffic policy", "default": "" }, "extraPorts": { "type": ["array", "string"], "description": "Extra ports to expose (normally used with the `sidecar` value)", "default": [], "items": {} }, "clusterIP": { "type": "string", "description": "Redis® master service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Redis® master service Load Balancer IP", "default": "" }, "loadBalancerClass": { "type": "string", "description": "master service Load Balancer class if service type is `LoadBalancer` (optional, cloud specific)", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Redis® master service Load Balancer sources", "default": [], "items": {} }, "annotations": { "type": "object", "description": "Additional custom annotations for Redis® master service", "default": {} }, "sessionAffinity": { "type": "string", "description": "Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"", "default": "None" }, "sessionAffinityConfig": { "type": ["object", "string"], "description": "Additional settings for the sessionAffinity", "default": {} } } }, "terminationGracePeriodSeconds": { "type": "number", "description": "Integer setting the termination grace period for the redis-node pods", "default": 30 } } }, "serviceBindings": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create secret for service binding (Experimental)", "default": false } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "Don't require client 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", "string"], "description": "Add extra ingress rules to the NetworkPolicy", "default": [], "items": {} }, "extraEgress": { "type": ["array", "string"], "description": "Add extra egress rules to the NetworkPolicy", "default": [], "items": {} }, "ingressNSMatchLabels": { "type": "object", "description": "Labels to match to allow traffic from other namespaces", "default": {} }, "ingressNSPodMatchLabels": { "type": "object", "description": "Pod labels to match to allow traffic from other namespaces", "default": {} }, "metrics": { "type": "object", "properties": { "allowExternal": { "type": "boolean", "description": "Don't require client label for connections for metrics endpoint", "default": true }, "ingressNSMatchLabels": { "type": "object", "description": "Labels to match to allow traffic from other namespaces to metrics endpoint", "default": {} }, "ingressNSPodMatchLabels": { "type": "object", "description": "Pod labels to match to allow traffic from other namespaces to metrics endpoint", "default": {} } } } } }, "podSecurityPolicy": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later", "default": false }, "enabled": { "type": "boolean", "description": "Enable PodSecurityPolicy's RBAC rules", "default": false } } }, "rbac": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Specifies whether RBAC resources should be created", "default": false }, "rules": { "type": ["array", "string"], "description": "Custom RBAC rules to set", "default": [], "items": {} } } }, "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": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Whether to auto mount the service account token", "default": false }, "annotations": { "type": ["object", "string"], "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "description": "DEPRECATED Please use `master.pdb` and `replica.pdb` values instead", "default": {} }, "tls": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable TLS traffic", "default": false }, "authClients": { "type": "boolean", "description": "Require clients to authenticate", "default": true }, "autoGenerated": { "type": "boolean", "description": "Enable autogenerated certificates", "default": false }, "existingSecret": { "type": "string", "description": "The name of the existing secret that contains the TLS certificates", "default": "" }, "certificatesSecret": { "type": "string", "description": "DEPRECATED. Use existingSecret instead.", "default": "" }, "certFilename": { "type": "string", "description": "Certificate filename", "default": "" }, "certKeyFilename": { "type": "string", "description": "Certificate Key filename", "default": "" }, "certCAFilename": { "type": "string", "description": "CA Certificate filename", "default": "" }, "dhParamsFilename": { "type": "string", "description": "File containing DH params (in order to support DH based ciphers)", "default": "" } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Start a sidecar prometheus exporter to expose Redis® metrics", "default": false }, "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "Redis® Exporter image registry", "default": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "Redis® Exporter image repository", "default": "REPOSITORY_NAME/redis-exporter" }, "digest": { "type": "string", "description": "Redis® Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "pullPolicy": { "type": "string", "description": "Redis® Exporter image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "Redis® Exporter image pull secrets", "default": [], "items": {} } } }, "containerPorts": { "type": "object", "properties": { "http": { "type": "number", "description": "Metrics HTTP container port", "default": 9121 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Redis® replicas nodes", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 10 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Redis® replicas nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 10 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Redis® replicas nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "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 } } }, "customStartupProbe": { "type": ["object", "string"], "description": "Custom startupProbe that overrides the default one", "default": {} }, "customLivenessProbe": { "type": ["object", "string"], "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": ["object", "string"], "description": "Custom readinessProbe that overrides the default one", "default": {} }, "command": { "type": ["array", "string"], "description": "Override default metrics container init command (useful when using custom images)", "default": [], "items": {} }, "redisTargetHost": { "type": "string", "description": "A way to specify an alternative Redis® hostname", "default": "localhost" }, "extraArgs": { "type": "object", "description": "Extra arguments for Redis® exporter, for example:", "default": {} }, "extraEnvVars": { "type": ["array", "string"], "description": "Array with extra environment variables to add to Redis® exporter", "default": [], "items": {} }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Redis® exporter containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set Redis® exporter containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set Redis® exporter containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set Redis® exporter containers' Security Context runAsNonRoot", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set Redis® exporter containers' Security Context allowPrivilegeEscalation", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context read-only root filesystem", "default": true }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set Redis® exporter containers' Security Context seccompProfile", "default": "RuntimeDefault" } } }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "Set Redis® exporter containers' Security Context capabilities to drop", "default": [ "ALL" ], "items": { "type": "string" } } } } } }, "extraVolumes": { "type": ["array", "string"], "description": "Optionally specify extra list of additional volumes for the Redis® metrics sidecar", "default": [], "items": {} }, "extraVolumeMounts": { "type": ["array", "string"], "description": "Optionally specify extra list of additional volumeMounts for the Redis® metrics sidecar", "default": [], "items": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production).", "default": "nano" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podLabels": { "type": "object", "description": "Extra labels for Redis® exporter pods", "default": {} }, "service": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create Service resource(s) for scraping metrics using PrometheusOperator ServiceMonitor, can be disabled when using a PodMonitor", "default": true }, "type": { "type": "string", "description": "Redis® exporter service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "http": { "type": "number", "description": "Redis® exporter service port", "default": 9121 } } }, "externalTrafficPolicy": { "type": "string", "description": "Redis® exporter service external traffic policy", "default": "Cluster" }, "extraPorts": { "type": ["array", "string"], "description": "Extra ports to expose (normally used with the `sidecar` value)", "default": [], "items": {} }, "loadBalancerIP": { "type": "string", "description": "Redis® exporter service Load Balancer IP", "default": "" }, "loadBalancerClass": { "type": "string", "description": "exporter service Load Balancer class if service type is `LoadBalancer` (optional, cloud specific)", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Redis® exporter service Load Balancer sources", "default": [], "items": {} }, "annotations": { "type": ["object", "string"], "description": "Additional custom annotations for Redis® exporter service", "default": {} }, "clusterIP": { "type": "string", "description": "Redis® exporter service Cluster IP", "default": "" } } }, "serviceMonitor": { "type": "object", "properties": { "port": { "type": "string", "description": "the service port to scrape metrics from", "default": "http-metrics" }, "enabled": { "type": "boolean", "description": "Create ServiceMonitor resource(s) for scraping metrics using PrometheusOperator", "default": false }, "namespace": { "type": "string", "description": "The namespace in which the ServiceMonitor will be created", "default": "" }, "interval": { "type": "string", "description": "The interval at which metrics should be scraped", "default": "30s" }, "scrapeTimeout": { "type": "string", "description": "The timeout after which the scrape is ended", "default": "" }, "relabelings": { "type": "array", "description": "Metrics RelabelConfigs to apply to samples before scraping.", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "Metrics RelabelConfigs to apply to samples before ingestion.", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "additionalLabels": { "type": ["object", "string"], "description": "Additional labels that can be used so ServiceMonitor resource(s) can be discovered by Prometheus", "default": {} }, "podTargetLabels": { "type": "array", "description": "Labels from the Kubernetes pod to be transferred to the created metrics", "default": [], "items": {} }, "sampleLimit": { "type": "boolean", "description": "Limit of how many samples should be scraped from every Pod", "default": false }, "targetLimit": { "type": "boolean", "description": "Limit of how many targets should be scraped", "default": false }, "additionalEndpoints": { "type": "array", "description": "Additional endpoints to scrape (e.g sentinel)", "default": [], "items": {} } } }, "podMonitor": { "type": "object", "properties": { "port": { "type": "string", "description": "the pod port to scrape metrics from", "default": "metrics" }, "enabled": { "type": "boolean", "description": "Create PodMonitor resource(s) for scraping metrics using PrometheusOperator", "default": false }, "namespace": { "type": "string", "description": "The namespace in which the PodMonitor will be created", "default": "" }, "interval": { "type": "string", "description": "The interval at which metrics should be scraped", "default": "30s" }, "scrapeTimeout": { "type": "string", "description": "The timeout after which the scrape is ended", "default": "" }, "relabelings": { "type": "array", "description": "Metrics RelabelConfigs to apply to samples before scraping.", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "Metrics RelabelConfigs to apply to samples before ingestion.", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "additionalLabels": { "type": ["object", "string"], "description": "Additional labels that can be used so PodMonitor resource(s) can be discovered by Prometheus", "default": {} }, "podTargetLabels": { "type": "array", "description": "Labels from the Kubernetes pod to be transferred to the created metrics", "default": [], "items": {} }, "sampleLimit": { "type": "boolean", "description": "Limit of how many samples should be scraped from every Pod", "default": false }, "targetLimit": { "type": "boolean", "description": "Limit of how many targets should be scraped", "default": false }, "additionalEndpoints": { "type": "array", "description": "Additional endpoints to scrape (e.g sentinel)", "default": [], "items": {} } } }, "prometheusRule": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create a custom prometheusRule Resource for scraping metrics using PrometheusOperator", "default": false }, "namespace": { "type": "string", "description": "The namespace in which the prometheusRule will be created", "default": "" }, "additionalLabels": { "type": ["object", "string"], "description": "Additional labels for the prometheusRule", "default": {} }, "rules": { "type": ["array", "string"], "description": "Custom Prometheus rules", "default": [], "items": {} } } } } }, "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": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "OS Shell + Utility image repository", "default": "REPOSITORY_NAME/os-shell" }, "digest": { "type": "string", "description": "OS Shell + Utility image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "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 container resources according to one common preset (allowed values: none, nano, micro, 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 container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "containerSecurityContext": { "type": "object", "properties": { "runAsUser": { "type": "number", "description": "Set init container's Security Context runAsUser", "default": 0 } } } } }, "kubectl": { "type": "object", "properties": { "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "Kubectl image registry", "default": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "Kubectl image repository", "default": "REPOSITORY_NAME/kubectl" }, "digest": { "type": "string", "description": "Kubectl image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "pullPolicy": { "type": "string", "description": "Kubectl image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "Kubectl pull secrets", "default": [], "items": {} } } }, "command": { "type": "array", "description": "kubectl command to execute", "default": [ "/opt/bitnami/scripts/kubectl-scripts/update-master-label.sh" ], "items": { "type": "string" } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled kubectl containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set kubectl containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set kubectl containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set kubectl containers' Security Context runAsNonRoot", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set kubectl containers' Security Context allowPrivilegeEscalation", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context read-only root filesystem", "default": true }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set kubectl containers' Security Context seccompProfile", "default": "RuntimeDefault" } } }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "Set kubectl containers' Security Context capabilities to drop", "default": [ "ALL" ], "items": { "type": "string" } } } } } }, "resources": { "type": "object", "properties": { "limits": { "type": "object", "description": "The resources limits for the kubectl containers", "default": {} }, "requests": { "type": "object", "description": "The requested resources for the kubectl containers", "default": {} } } } } }, "sysctl": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable init container to modify Kernel settings", "default": false }, "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "OS Shell + Utility image registry", "default": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "OS Shell + Utility image repository", "default": "REPOSITORY_NAME/os-shell" }, "digest": { "type": "string", "description": "OS Shell + Utility image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "pullPolicy": { "type": "string", "description": "OS Shell + Utility image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "OS Shell + Utility image pull secrets", "default": [], "items": {} } } }, "command": { "type": ["array", "string"], "description": "Override default init-sysctl container command (useful when using custom images)", "default": [], "items": {} }, "mountHostSys": { "type": "boolean", "description": "Mount the host `/sys` folder to `/host-sys`", "default": false }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if sysctl.resources is set (sysctl.resources is recommended for production).", "default": "nano" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} } } }, "useExternalDNS": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable various syntax that would enable external-dns to work. Note this requires a working installation of `external-dns` to be usable.", "default": false }, "additionalAnnotations": { "type": "object", "description": "Extra annotations to be utilized when `external-dns` is enabled.", "default": {} }, "annotationKey": { "type": "string", "description": "The annotation key utilized when `external-dns` is enabled. Setting this to `false` will disable annotations.", "default": "external-dns.alpha.kubernetes.io/" }, "suffix": { "type": "string", "description": "The DNS suffix utilized when `external-dns` is enabled. Note that we prepend the suffix with the full name of the release.", "default": "" } } } } }