diff --git a/.vib/cassandra/ginkgo/cassandra_suite_test.go b/.vib/cassandra/ginkgo/cassandra_suite_test.go
index f4a6834bcf21bb..344ac6aff1f7bd 100644
--- a/.vib/cassandra/ginkgo/cassandra_suite_test.go
+++ b/.vib/cassandra/ginkgo/cassandra_suite_test.go
@@ -31,7 +31,7 @@ func init() {
flag.StringVar(&namespace, "namespace", "", "namespace where the application is running")
flag.StringVar(&username, "username", "", "database user")
flag.StringVar(&password, "password", "", "database password for username")
- flag.IntVar(&timeoutSeconds, "timeout", 300, "timeout in seconds")
+ flag.IntVar(&timeoutSeconds, "timeout", 600, "timeout in seconds")
timeout = time.Duration(timeoutSeconds) * time.Second
}
diff --git a/.vib/zipkin/cypress/cypress.config.js b/.vib/zipkin/cypress/cypress.config.js
new file mode 100644
index 00000000000000..1210fe2bc89fb2
--- /dev/null
+++ b/.vib/zipkin/cypress/cypress.config.js
@@ -0,0 +1,7 @@
+module.exports = {
+ defaultCommandTimeout: 90000,
+ e2e: {
+ setupNodeEvents(on, config) {},
+ baseUrl: 'http://35.196.250.6',
+ },
+}
diff --git a/.vib/zipkin/cypress/cypress/e2e/zipkin.cy.js b/.vib/zipkin/cypress/cypress/e2e/zipkin.cy.js
new file mode 100644
index 00000000000000..7007f11d7f60fd
--- /dev/null
+++ b/.vib/zipkin/cypress/cypress/e2e/zipkin.cy.js
@@ -0,0 +1,18 @@
+/*
+ * Copyright Broadcom, Inc. All Rights Reserved.
+ * SPDX-License-Identifier: APACHE-2.0
+ */
+
+///
+
+// We check the pushed trace in the Job
+it('should find pushed trace', () => {
+ cy.visit('/')
+ cy.contains('a', 'Dependencies').click();
+ cy.fixture('services').then((service) => {
+ cy.contains('div[class*="root"]', 'Start Time').get('input').eq(2).clear().type(service.checkTime);
+ cy.contains('button', 'Run Query').click();
+ cy.get('[role="combobox"]').click();
+ cy.contains(service.name);
+ });
+})
diff --git a/.vib/zipkin/cypress/cypress/fixtures/services.json b/.vib/zipkin/cypress/cypress/fixtures/services.json
new file mode 100644
index 00000000000000..0f9ce9515107fa
--- /dev/null
+++ b/.vib/zipkin/cypress/cypress/fixtures/services.json
@@ -0,0 +1,4 @@
+{
+ "name": "yelp-main",
+ "checkTime": "09/03/2014 10:55:26"
+}
diff --git a/.vib/zipkin/cypress/cypress/support/e2e.js b/.vib/zipkin/cypress/cypress/support/e2e.js
new file mode 100644
index 00000000000000..ff9907666e61ae
--- /dev/null
+++ b/.vib/zipkin/cypress/cypress/support/e2e.js
@@ -0,0 +1,25 @@
+/*
+ * Copyright Broadcom, Inc. All Rights Reserved.
+ * SPDX-License-Identifier: APACHE-2.0
+ */
+
+// ***********************************************************
+// This example support/index.js is processed and
+// loaded automatically before your test files.
+//
+// This is a great place to put global configuration and
+// behavior that modifies Cypress.
+//
+// You can change the location of this file or turn off
+// automatically serving support files with the
+// 'supportFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/configuration
+// ***********************************************************
+
+// Import commands.js using ES2015 syntax:
+// import './commands';
+
+// Alternatively you can use CommonJS syntax:
+// require('./commands')
diff --git a/.vib/zipkin/goss/goss.yaml b/.vib/zipkin/goss/goss.yaml
new file mode 100644
index 00000000000000..e0e5c08cbc770b
--- /dev/null
+++ b/.vib/zipkin/goss/goss.yaml
@@ -0,0 +1,48 @@
+# Copyright Broadcom, Inc. All Rights Reserved.
+# SPDX-License-Identifier: APACHE-2.0
+
+http:
+ http://127.0.0.1:{{ .Vars.containerPorts.http }}/api/v2/services:
+ status: 200
+ body:
+ - /yelp-main/
+ http://zipkin:{{ .Vars.service.server.ports.http }}/api/v2/services:
+ status: 200
+ body:
+ - /yelp-main/
+ http://127.0.0.1:{{ .Vars.containerPorts.http }}/prometheus:
+ status: 200
+ body:
+ - /armeria_server/
+ http://zipkin:{{ .Vars.service.server.ports.http }}/prometheus:
+ status: 200
+ body:
+ - /armeria_server/
+
+command:
+ {{- $uid := .Vars.containerSecurityContext.runAsUser }}
+ {{- $gid := .Vars.podSecurityContext.fsGroup }}
+ check-user-info:
+ # The UID and GID should always be either the one specified as vars (always a bigger number that the default)
+ # or the one randomly defined by openshift (larger values). Otherwise, the chart is still using the default value.
+ exec: if [ $(id -u) -lt {{ $uid }} ] || [ $(id -G | awk '{print $2}') -lt {{ $gid }} ]; then exit 1; fi
+ exit-status: 0
+ check-configured-env-vars:
+ exec: env
+ exit-status: 0
+ stdout:
+ - /AUTOCOMPLETE_TTL.*{{ .Vars.configOverrides.AUTOCOMPLETE_TTL }}/
+ {{- if not .Vars.usePasswordFile }}
+ # The secret configuration should be set via env
+ - /QUERY_NAMES_MAX_AGE.*{{ .Vars.secretConfigOverrides.QUERY_NAMES_MAX_AGE }}/
+ {{- end }}
+
+{{- if .Vars.usePasswordFile }}
+# The secret configuration should be mounted as a file
+file:
+ /bitnami/zipkin/secrets/configuration/QUERY_NAMES_MAX_AGE:
+ exists: true
+ filetype: symlink
+ contents:
+ - /{{ .Vars.secretConfigOverrides.QUERY_NAMES_MAX_AGE }}/
+{{- end }}
diff --git a/.vib/zipkin/runtime-parameters.yaml b/.vib/zipkin/runtime-parameters.yaml
new file mode 100644
index 00000000000000..aaa252044b0afd
--- /dev/null
+++ b/.vib/zipkin/runtime-parameters.yaml
@@ -0,0 +1,460 @@
+podSecurityContext:
+ fsGroup: 1002
+containerSecurityContext:
+ runAsUser: 1002
+containerPorts:
+ http: 6555
+usePasswordFile: true
+configOverrides:
+ AUTOCOMPLETE_TTL: 1000000
+secretConfigOverrides:
+ QUERY_NAMES_MAX_AGE: 280
+replicaCount: 1
+service:
+ type: LoadBalancer
+ ports:
+ http: 80
+metrics:
+ enabled: true
+extraDeploy:
+ # Job to push some data to the Zipkin instance
+ - |
+ apiVersion: batch/v1
+ kind: Job
+ metadata:
+ name: zipkin-add-data
+ spec:
+ template:
+ spec:
+ restartPolicy: OnFailure
+ containers:
+ - name: zipkin-job
+ image: docker.io/bitnami/os-shell:latest
+ command:
+ - /bin/bash
+ args:
+ - -ec
+ - |
+ #!/bin/bash
+
+ set -o errexit
+ set -o nounset
+ set -o pipefail
+
+ # Set the endpoint URL
+ host=zipkin
+ port={{ .Values.service.ports.http }}
+
+ retry_while() {
+ local -r cmd="${1:?cmd is missing}"
+ local -r retries="${2:-12}"
+ local -r sleep_time="${3:-5}"
+ local return_value=1
+
+ read -r -a command <<< "$cmd"
+ for ((i = 1 ; i <= retries ; i+=1 )); do
+ "${command[@]}" && return_value=0 && break
+ sleep "$sleep_time"
+ done
+ return $return_value
+ }
+
+ zipkin_ready() {
+ # Test the TCP connection with a timeout
+ if timeout 5 bash -c "",
+ "http.route": "/*path",
+ "http.uri": "/location/update/v4",
+ "http.uri.qs": "/location/update/v4",
+ "locale": "en_US",
+ "logged_in": "False",
+ "natural": "False",
+ "owner_email": "",
+ "paasta": "True",
+ "region": "uswest1-prod",
+ "request_budget": "10003",
+ "request_budget_soft": "5003",
+ "response_status_code": "200",
+ "servlet": "proxy",
+ "servlet_action": "proxy",
+ "site": "api",
+ "version_SHA": "5e83958d2c"
+ },
+ "shared": true
+ },
+ {
+ "traceId": "a03ee8fff1dcd9b9",
+ "parentId": "2e8cfb154b59a41f",
+ "id": "668ed78ad94b35a1",
+ "kind": "CLIENT",
+ "name": "post",
+ "timestamp": 1571896375239000,
+ "duration": 125000,
+ "localEndpoint": {
+ "serviceName": "unknown"
+ },
+ "remoteEndpoint": {
+ "serviceName": "yelp-main.mobile_api",
+ "port": 31523
+ },
+ "tags": {
+ "client_status_code": "200",
+ "http.uri.client": "/location/update/v4",
+ "request_budget": "10003",
+ "tracer": "syslog2scribe.envoy"
+ }
+ },
+ {
+ "traceId": "a03ee8fff1dcd9b9",
+ "id": "2e8cfb154b59a41f",
+ "kind": "SERVER",
+ "name": "post /location/update/v4",
+ "timestamp": 1571896375237354,
+ "duration": 131848,
+ "localEndpoint": {
+ "serviceName": "routing"
+ },
+ "tags": {
+ "ecosystem": "prod",
+ "habitat": "uswest1aprod",
+ "http.uri.client": "/location/update/v4",
+ "region": "uswest1-prod",
+ "response_status_code": "200"
+ },
+ "shared": true
+ }
+ ]
diff --git a/.vib/zipkin/vib-publish.json b/.vib/zipkin/vib-publish.json
new file mode 100644
index 00000000000000..34aba8e27d95f9
--- /dev/null
+++ b/.vib/zipkin/vib-publish.json
@@ -0,0 +1,38 @@
+{
+ "phases": {
+ "package": {
+ "context": {
+ "resources": {
+ "url": "{SHA_ARCHIVE}",
+ "path": "/bitnami/zipkin"
+ }
+ },
+ "actions": [
+ {
+ "action_id": "helm-package"
+ },
+ {
+ "action_id": "helm-lint"
+ }
+ ]
+ },
+ "publish": {
+ "actions": [
+ {
+ "action_id": "helm-publish",
+ "params": {
+ "repository": {
+ "kind": "S3",
+ "url": "{VIB_ENV_S3_URL}",
+ "authn": {
+ "access_key_id": "{VIB_ENV_S3_ACCESS_KEY_ID}",
+ "secret_access_key": "{VIB_ENV_S3_SECRET_ACCESS_KEY}",
+ "role": "{VIB_ENV_S3_ROLE_ARN}"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/.vib/zipkin/vib-verify.json b/.vib/zipkin/vib-verify.json
new file mode 100644
index 00000000000000..9da4c5eaa41426
--- /dev/null
+++ b/.vib/zipkin/vib-verify.json
@@ -0,0 +1,67 @@
+{
+ "phases": {
+ "package": {
+ "context": {
+ "resources": {
+ "url": "{SHA_ARCHIVE}",
+ "path": "/bitnami/zipkin"
+ }
+ },
+ "actions": [
+ {
+ "action_id": "helm-package"
+ },
+ {
+ "action_id": "helm-lint"
+ }
+ ]
+ },
+ "verify": {
+ "context": {
+ "resources": {
+ "url": "{SHA_ARCHIVE}",
+ "path": "/bitnami/zipkin"
+ },
+ "target_platform": {
+ "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}",
+ "size": {
+ "name": "M4"
+ }
+ }
+ },
+ "actions": [
+ {
+ "action_id": "goss",
+ "params": {
+ "resources": {
+ "path": "/.vib"
+ },
+ "tests_file": "zipkin/goss/goss.yaml",
+ "vars_file": "zipkin/runtime-parameters.yaml",
+ "remote": {
+ "pod": {
+ "workload": "deploy-zipkin"
+ }
+ }
+ }
+ },
+ {
+ "action_id": "cypress",
+ "params": {
+ "resources": {
+ "path": "/.vib/zipkin/cypress"
+ },
+ "endpoint": "lb-zipkin-http",
+ "app_protocol": "HTTP"
+ }
+ },
+ {
+ "action_id": "kubescape",
+ "params": {
+ "threshold": {VIB_ENV_KUBESCAPE_SCORE_THRESHOLD}
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/bitnami/cassandra/Chart.yaml b/bitnami/cassandra/Chart.yaml
index 01586b80b3d636..004167dd0b2e65 100644
--- a/bitnami/cassandra/Chart.yaml
+++ b/bitnami/cassandra/Chart.yaml
@@ -32,4 +32,4 @@ maintainers:
name: cassandra
sources:
- https://github.com/bitnami/charts/tree/main/bitnami/cassandra
-version: 11.5.0
+version: 11.5.0
\ No newline at end of file
diff --git a/bitnami/ghost/CHANGELOG.md b/bitnami/ghost/CHANGELOG.md
index f0bce662647c0d..f8a00c39cc33f5 100644
--- a/bitnami/ghost/CHANGELOG.md
+++ b/bitnami/ghost/CHANGELOG.md
@@ -1,8 +1,12 @@
# Changelog
-## 21.1.30 (2024-08-30)
+## 21.1.31 (2024-09-04)
-* [bitnami/ghost] Release 21.1.30 ([#29138](https://github.com/bitnami/charts/pull/29138))
+* [bitnami/ghost] Release 21.1.31 ([#29186](https://github.com/bitnami/charts/pull/29186))
+
+## 21.1.30 (2024-08-30)
+
+* [bitnami/ghost] Release 21.1.30 (#29138) ([1bd6cef](https://github.com/bitnami/charts/commit/1bd6cef162213017869f6b7ebeec54f7d3394347)), closes [#29138](https://github.com/bitnami/charts/issues/29138)
## 21.1.29 (2024-08-29)
diff --git a/bitnami/ghost/Chart.lock b/bitnami/ghost/Chart.lock
index 69b88ffdae5793..890ba4bad0ca00 100644
--- a/bitnami/ghost/Chart.lock
+++ b/bitnami/ghost/Chart.lock
@@ -1,9 +1,9 @@
dependencies:
- name: mysql
repository: oci://registry-1.docker.io/bitnamicharts
- version: 11.1.15
+ version: 11.1.16
- name: common
repository: oci://registry-1.docker.io/bitnamicharts
version: 2.22.0
-digest: sha256:b01ecb553b6a32685de16d2ee99053954ec97a224571f4b85b411864af31eef1
-generated: "2024-08-28T07:39:20.824135171Z"
+digest: sha256:23d8e45539815aa768989334002115ddb778fa511256edc95a787b117ff7476c
+generated: "2024-09-04T06:00:57.628846401Z"
diff --git a/bitnami/ghost/Chart.yaml b/bitnami/ghost/Chart.yaml
index dbadb5692e5721..c27d21682f385f 100644
--- a/bitnami/ghost/Chart.yaml
+++ b/bitnami/ghost/Chart.yaml
@@ -6,11 +6,11 @@ annotations:
licenses: Apache-2.0
images: |
- name: ghost
- image: docker.io/bitnami/ghost:5.91.0-debian-12-r0
+ image: docker.io/bitnami/ghost:5.93.0-debian-12-r0
- name: os-shell
- image: docker.io/bitnami/os-shell:12-debian-12-r28
+ image: docker.io/bitnami/os-shell:12-debian-12-r29
apiVersion: v2
-appVersion: 5.91.0
+appVersion: 5.93.0
dependencies:
- condition: mysql.enabled
name: mysql
@@ -40,4 +40,4 @@ maintainers:
name: ghost
sources:
- https://github.com/bitnami/charts/tree/main/bitnami/ghost
-version: 21.1.30
+version: 21.1.31
diff --git a/bitnami/ghost/values.yaml b/bitnami/ghost/values.yaml
index 0e149b68cdd677..a743aa9738dcc3 100644
--- a/bitnami/ghost/values.yaml
+++ b/bitnami/ghost/values.yaml
@@ -81,7 +81,7 @@ diagnosticMode:
image:
registry: docker.io
repository: bitnami/ghost
- tag: 5.91.0-debian-12-r0
+ tag: 5.93.0-debian-12-r0
digest: ""
## Specify a imagePullPolicy
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
@@ -640,7 +640,7 @@ volumePermissions:
image:
registry: docker.io
repository: bitnami/os-shell
- tag: 12-debian-12-r28
+ tag: 12-debian-12-r29
digest: ""
pullPolicy: IfNotPresent
## Optionally specify an array of imagePullSecrets.
diff --git a/bitnami/redis/CHANGELOG.md b/bitnami/redis/CHANGELOG.md
index e2dc6590107ee5..e7e9a8f63f4dc5 100644
--- a/bitnami/redis/CHANGELOG.md
+++ b/bitnami/redis/CHANGELOG.md
@@ -1,8 +1,12 @@
# Changelog
-## 20.0.3 (2024-08-20)
+## 20.0.4 (2024-08-29)
-* [bitnami/redis] Release 20.0.3 ([#28941](https://github.com/bitnami/charts/pull/28941))
+* [bitnami/redis] update values.schema.json ([#29106](https://github.com/bitnami/charts/pull/29106))
+
+## 20.0.3 (2024-08-20)
+
+* [bitnami/redis] Release 20.0.3 (#28941) ([d2a1abb](https://github.com/bitnami/charts/commit/d2a1abbba3a6125260c2df569ef060e165be88fa)), closes [#28941](https://github.com/bitnami/charts/issues/28941)
## 20.0.2 (2024-08-14)
diff --git a/bitnami/redis/Chart.yaml b/bitnami/redis/Chart.yaml
index 2dbf094934b9a7..d8d726d6eb5535 100644
--- a/bitnami/redis/Chart.yaml
+++ b/bitnami/redis/Chart.yaml
@@ -36,4 +36,4 @@ maintainers:
name: redis
sources:
- https://github.com/bitnami/charts/tree/main/bitnami/redis
-version: 20.0.3
+version: 20.0.4
diff --git a/bitnami/redis/values.schema.json b/bitnami/redis/values.schema.json
index e9feba6adc2903..f872c957494c98 100644
--- a/bitnami/redis/values.schema.json
+++ b/bitnami/redis/values.schema.json
@@ -1,163 +1,3275 @@
{
- "$schema": "http://json-schema.org/schema#",
- "type": "object",
- "properties": {
- "architecture": {
- "type": "string",
- "title": "Redis architecture",
- "form": true,
- "description": "Allowed values: `standalone` or `replication`",
- "enum": ["standalone", "replication"]
- },
- "auth": {
- "type": "object",
- "title": "Authentication configuration",
- "form": true,
- "properties": {
- "enabled": {
- "type": "boolean",
- "form": true,
- "title": "Use password authentication"
- },
- "password": {
- "type": "string",
- "title": "Redis password",
- "form": true,
- "description": "Defaults to a random 10-character alphanumeric string if not set",
- "hidden": {
- "value": false,
- "path": "auth/enabled"
- }
- }
- }
- },
- "master": {
- "type": "object",
- "title": "Master replicas settings",
- "form": true,
- "properties": {
- "kind": {
- "type": "string",
- "title": "Workload Kind",
- "form": true,
- "description": "Allowed values: `Deployment`, `StatefulSet` or `DaemonSet`",
- "enum": ["Deployment", "StatefulSet", "DaemonSet"]
- },
- "persistence": {
- "type": "object",
- "title": "Persistence for master replicas",
- "form": true,
- "properties": {
- "enabled": {
- "type": "boolean",
- "form": true,
- "title": "Enable persistence",
- "description": "Enable persistence using Persistent Volume Claims"
- },
- "size": {
- "type": "string",
- "title": "Persistent Volume Size",
- "form": true,
- "render": "slider",
- "sliderMin": 1,
- "sliderMax": 100,
- "sliderUnit": "Gi",
- "hidden": {
- "value": false,
- "path": "master/persistence/enabled"
- }
- }
- }
- }
- }
- },
- "replica": {
- "type": "object",
- "title": "Redis replicas settings",
- "form": true,
- "hidden": {
- "value": "standalone",
- "path": "architecture"
- },
- "properties": {
- "kind": {
- "type": "string",
- "title": "Workload Kind",
- "form": true,
- "description": "Allowed values: `DaemonSet` or `StatefulSet`",
- "enum": ["DaemonSet", "StatefulSet"]
- },
- "replicaCount": {
- "type": "integer",
- "form": true,
- "title": "Number of Redis replicas"
- },
- "persistence": {
- "type": "object",
- "title": "Persistence for Redis replicas",
- "form": true,
- "properties": {
- "enabled": {
- "type": "boolean",
- "form": true,
- "title": "Enable persistence",
- "description": "Enable persistence using Persistent Volume Claims"
- },
- "size": {
- "type": "string",
- "title": "Persistent Volume Size",
- "form": true,
- "render": "slider",
- "sliderMin": 1,
- "sliderMax": 100,
- "sliderUnit": "Gi",
- "hidden": {
- "value": false,
- "path": "replica/persistence/enabled"
- }
- }
- }
- }
- }
- },
- "volumePermissions": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "form": true,
- "title": "Enable Init Containers",
- "description": "Use an init container to set required folder permissions on the data volume before mounting it in the final destination"
- }
- }
- },
- "metrics": {
- "type": "object",
- "form": true,
- "title": "Prometheus metrics details",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Create Prometheus metrics exporter",
- "description": "Create a side-car container to expose Prometheus metrics",
- "form": true
- },
- "serviceMonitor": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Create Prometheus Operator ServiceMonitor",
- "description": "Create a ServiceMonitor to track metrics using Prometheus Operator",
- "form": true,
- "hidden": {
- "value": false,
- "path": "metrics/enabled"
- }
- }
- }
+ "$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",
+ "description": "Labels to add to all deployed objects",
+ "default": {}
+ },
+ "commonAnnotations": {
+ "type": "object",
+ "description": "Annotations to add to all deployed objects",
+ "default": {}
+ },
+ "secretAnnotations": {
+ "type": "object",
+ "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",
+ "description": "Command to override all containers in the deployment",
+ "default": [
+ "sleep"
+ ],
+ "items": {
+ "type": "string"
+ }
+ },
+ "args": {
+ "type": "array",
+ "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
+ }
+ }
+ },
+ "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",
+ "description": "Override default container command (useful when using custom images)",
+ "default": [],
+ "items": {}
+ },
+ "args": {
+ "type": "array",
+ "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",
+ "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",
+ "description": "Custom startupProbe that overrides the default one",
+ "default": {}
+ },
+ "customLivenessProbe": {
+ "type": "object",
+ "description": "Custom livenessProbe that overrides the default one",
+ "default": {}
+ },
+ "customReadinessProbe": {
+ "type": "object",
+ "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",
+ "description": "Redis® master pods host aliases",
+ "default": [],
+ "items": {}
+ },
+ "podLabels": {
+ "type": "object",
+ "description": "Extra labels for Redis® master pods",
+ "default": {}
+ },
+ "podAnnotations": {
+ "type": "object",
+ "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",
+ "description": "Affinity for Redis® master pods assignment",
+ "default": {}
+ },
+ "nodeSelector": {
+ "type": "object",
+ "description": "Node labels for Redis® master pods assignment",
+ "default": {}
+ },
+ "tolerations": {
+ "type": "array",
+ "description": "Tolerations for Redis® master pods assignment",
+ "default": [],
+ "items": {}
+ },
+ "topologySpreadConstraints": {
+ "type": "array",
+ "description": "Spread Constraints for Redis® master pod assignment",
+ "default": [],
+ "items": {}
+ },
+ "dnsPolicy": {
+ "type": "string",
+ "description": "DNS Policy for Redis® master pod",
+ "default": ""
+ },
+ "dnsConfig": {
+ "type": "object",
+ "description": "DNS Configuration for Redis® master pod",
+ "default": {}
+ },
+ "lifecycleHooks": {
+ "type": "object",
+ "description": "for the Redis® master container(s) to automate configuration before or after startup",
+ "default": {}
+ },
+ "extraVolumes": {
+ "type": "array",
+ "description": "Optionally specify extra list of additional volumes for the Redis® master pod(s)",
+ "default": [],
+ "items": {}
+ },
+ "extraVolumeMounts": {
+ "type": "array",
+ "description": "Optionally specify extra list of additional volumeMounts for the Redis® master container(s)",
+ "default": [],
+ "items": {}
+ },
+ "sidecars": {
+ "type": "array",
+ "description": "Add additional sidecar containers to the Redis® master pod(s)",
+ "default": [],
+ "items": {}
+ },
+ "initContainers": {
+ "type": "array",
+ "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",
+ "description": "Additional custom labels for the PVC",
+ "default": {}
+ },
+ "selector": {
+ "type": "object",
+ "description": "Additional labels to match for the PVC",
+ "default": {}
+ },
+ "dataSource": {
+ "type": "object",
+ "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",
+ "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",
+ "description": "Redis® master service External IPs",
+ "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",
+ "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",
+ "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",
+ "description": "Override default container command (useful when using custom images)",
+ "default": [],
+ "items": {}
+ },
+ "args": {
+ "type": "array",
+ "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",
+ "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",
+ "description": "Custom startupProbe that overrides the default one",
+ "default": {}
+ },
+ "customLivenessProbe": {
+ "type": "object",
+ "description": "Custom livenessProbe that overrides the default one",
+ "default": {}
+ },
+ "customReadinessProbe": {
+ "type": "object",
+ "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",
+ "description": "Redis® replicas pods host aliases",
+ "default": [],
+ "items": {}
+ },
+ "podLabels": {
+ "type": "object",
+ "description": "Extra labels for Redis® replicas pods",
+ "default": {}
+ },
+ "podAnnotations": {
+ "type": "object",
+ "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",
+ "description": "Affinity for Redis® replicas pods assignment",
+ "default": {}
+ },
+ "nodeSelector": {
+ "type": "object",
+ "description": "Node labels for Redis® replicas pods assignment",
+ "default": {}
+ },
+ "tolerations": {
+ "type": "array",
+ "description": "Tolerations for Redis® replicas pods assignment",
+ "default": [],
+ "items": {}
+ },
+ "topologySpreadConstraints": {
+ "type": "array",
+ "description": "Spread Constraints for Redis® replicas pod assignment",
+ "default": [],
+ "items": {}
+ },
+ "dnsPolicy": {
+ "type": "string",
+ "description": "DNS Policy for Redis® replica pods",
+ "default": ""
+ },
+ "dnsConfig": {
+ "type": "object",
+ "description": "DNS Configuration for Redis® replica pods",
+ "default": {}
+ },
+ "lifecycleHooks": {
+ "type": "object",
+ "description": "for the Redis® replica container(s) to automate configuration before or after startup",
+ "default": {}
+ },
+ "extraVolumes": {
+ "type": "array",
+ "description": "Optionally specify extra list of additional volumes for the Redis® replicas pod(s)",
+ "default": [],
+ "items": {}
+ },
+ "extraVolumeMounts": {
+ "type": "array",
+ "description": "Optionally specify extra list of additional volumeMounts for the Redis® replicas container(s)",
+ "default": [],
+ "items": {}
+ },
+ "sidecars": {
+ "type": "array",
+ "description": "Add additional sidecar containers to the Redis® replicas pod(s)",
+ "default": [],
+ "items": {}
+ },
+ "initContainers": {
+ "type": "array",
+ "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",
+ "description": "Additional custom labels for the PVC",
+ "default": {}
+ },
+ "selector": {
+ "type": "object",
+ "description": "Additional labels to match for the PVC",
+ "default": {}
+ },
+ "dataSource": {
+ "type": "object",
+ "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",
+ "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",
+ "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",
+ "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",
+ "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",
+ "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",
+ "description": "Override default container command (useful when using custom images)",
+ "default": [],
+ "items": {}
+ },
+ "args": {
+ "type": "array",
+ "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",
+ "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",
+ "description": "Custom startupProbe that overrides the default one",
+ "default": {}
+ },
+ "customLivenessProbe": {
+ "type": "object",
+ "description": "Custom livenessProbe that overrides the default one",
+ "default": {}
+ },
+ "customReadinessProbe": {
+ "type": "object",
+ "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",
+ "description": "Additional custom labels for the PVC",
+ "default": {}
+ },
+ "selector": {
+ "type": "object",
+ "description": "Additional labels to match for the PVC",
+ "default": {}
+ },
+ "dataSource": {
+ "type": "object",
+ "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",
+ "description": "for the Redis® sentinel container(s) to automate configuration before or after startup",
+ "default": {}
+ },
+ "extraVolumes": {
+ "type": "array",
+ "description": "Optionally specify extra list of additional volumes for the Redis® Sentinel",
+ "default": [],
+ "items": {}
+ },
+ "extraVolumeMounts": {
+ "type": "array",
+ "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",
+ "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",
+ "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",
+ "description": "Additional settings for the sessionAffinity",
+ "default": {}
+ },
+ "headless": {
+ "type": "object",
+ "properties": {
+ "annotations": {
+ "type": "object",
+ "description": "Annotations for the headless service.",
+ "default": {}
+ }
+ }
+ }
+ }
+ },
+ "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",
+ "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",
+ "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",
+ "description": "Add extra ingress rules to the NetworkPolicy",
+ "default": [],
+ "items": {}
+ },
+ "extraEgress": {
+ "type": "array",
+ "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",
+ "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",
+ "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",
+ "description": "Custom startupProbe that overrides the default one",
+ "default": {}
+ },
+ "customLivenessProbe": {
+ "type": "object",
+ "description": "Custom livenessProbe that overrides the default one",
+ "default": {}
+ },
+ "customReadinessProbe": {
+ "type": "object",
+ "description": "Custom readinessProbe that overrides the default one",
+ "default": {}
+ },
+ "command": {
+ "type": "array",
+ "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",
+ "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",
+ "description": "Optionally specify extra list of additional volumes for the Redis® metrics sidecar",
+ "default": [],
+ "items": {}
+ },
+ "extraVolumeMounts": {
+ "type": "array",
+ "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",
+ "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",
+ "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",
+ "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",
+ "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",
+ "description": "Additional labels for the prometheusRule",
+ "default": {}
+ },
+ "rules": {
+ "type": "array",
+ "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",
+ "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": ""
+ }
+ }
}
- }
}
- }
-}
+}
\ No newline at end of file