1## Globally shared configuration
3 # -- Default priority class for all components
5 # -- Openshift compatibility options
8 adaptSecurityContext: auto
9## -- Image information for Redis HA
10## ref: http://kubernetes.io/docs/user-guide/compute-resources/
13 # -- Redis image repository
14 repository: chainreg.biz/chainguard-private/redis
16 tag: latest@sha256:d0d6164caed0c9963b87b59b072830e556a3d50d667ff1d67b17c144a7ccefb4
17 # -- Redis image pull policy
18 pullPolicy: IfNotPresent
19# -- Full name of the Redis HA Resources
21# -- Name override for Redis HA resources
23## Reference to one or more secrets to be used when pulling images
24## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
25## This imagePullSecrets is only for redis images
27# -- Reference to one or more secrets to be used when pulling redis images
29# - name: "image-pull-secret"
31# -- Number of redis master/slave
33## Customize the statefulset pod management policy:
34## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies
35# -- The statefulset pod management policy
36podManagementPolicy: OrderedReady
38## indexed slaves get never promoted to be master
39## index starts with 0 - which is master on init
40## i.e. "8,9" means 8th and 9th slave will be replica with replica-priority=0
41## see also: https://redis.io/topics/sentinel
42# -- Comma separated list of slaves which never get promoted to be master.
43# Count starts with 0. Allowed values 1-9. i.e. 3,4 - 3th and 4th redis slave never make it to be master, where master is index 0.
45# -- Kubernetes priorityClass name for the redis-ha-server pod
47# -- Custom labels for the redis pod
49# -- Custom labels for redis service
51## Custom labels for the redis configmap
53 # -- Custom labels for the redis configmap
55## ConfigMap Test Parameters
57 # -- Image for redis-ha-configmap-test hook
59 # -- Repository of the configmap shellcheck test image.
60 repository: chainreg.biz/chainguard-private/busybox
61 # -- Tag of the configmap shellcheck test image.
62 tag: latest@sha256:655f0f89892d3134b1c3dfa0eded3c451b1f2d39916d829753f28c889a547bd5
63 # -- Resources for the ConfigMap test pod
65## Pods Service Account
66## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
68 # -- Specifies whether a ServiceAccount should be created
70 # -- The name of the ServiceAccount to use.
71 # If not set and create is true, a name is generated using the redis-ha.fullname template
73 # -- opt in/out of automounting API credentials into container.
74 # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
76 # -- Annotations to be added to the service account for the redis statefulset
78## Enables a HA Proxy for better LoadBalancing / Sentinel Master support. Automatically proxies to Redis master.
79## Recommend for externally exposed Redis clusters.
80## ref: https://cbonte.github.io/haproxy-dconv/1.9/intro.html
82 # -- Enabled HAProxy LoadBalancing/Proxy
84 # -- Modify HAProxy service port
86 # -- Modify HAProxy deployment container port
88 # -- Enable TLS termination on HAproxy, This will create a volume mount
90 # -- If "true" this will enable TLS termination on haproxy
92 # -- Secret containing the .pem file
93 # Supports templates like "{{ .Release.Name }}-haproxy-tls"
97 # -- Path to mount the secret that contains the certificates. haproxy
99 # -- Enable read-only redis-slaves
101 # -- Enable if you want a dedicated port in haproxy for redis-slaves
103 # -- Port for the read-only redis-slaves
105 # -- Additional ports to expose on HAProxy service and deployment
106 # Each port should have a name, containerPort, and optionally servicePort (defaults to containerPort)
110 # - name: custom-port
111 # containerPort: 8080
113 # - name: another-port
114 # containerPort: 9090
115 # -- Number of HAProxy instances
117 # -- Deployment strategy for the haproxy deployment
122 # maxUnavailable: 25%
124 # -- HAProxy Image Repository
125 repository: chainreg.biz/chainguard-private/haproxy
126 # -- HAProxy Image Tag
127 tag: latest@sha256:bca6d5d8a4829789d8ff3d0116161e57dd7801dd7407d02093dba985895cd653
128 # -- HAProxy Image PullPolicy
129 pullPolicy: IfNotPresent
130 # -- Custom labels for the haproxy pod
132 # -- Reference to one or more secrets to be used when pulling images
133 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
135 # - name: "image-pull-secret"
137 # -- HAProxy template annotations
139 # -- HAProxy deployment annotations
140 deploymentAnnotations: {}
141 # -- Annotations to be added to the HAProxy deployment pods
143 # -- HAProxy resources
145 # -- Configuration of `emptyDir`
147 # -- Pod Disruption Budget
148 # ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
149 podDisruptionBudget: {}
150 # Use only one of the two
154 ## Enable sticky sessions to Redis nodes via HAProxy
155 ## Very useful for long-living connections as in case of Sentry for example
156 # -- HAProxy sticky load balancing to Redis nodes. Helps with connections shutdown.
157 stickyBalancing: false
158 # -- Kubernetes priorityClass name for the haproxy pod
159 priorityClassName: ""
160 ## Service for HAProxy
162 # -- HAProxy service type "ClusterIP", "LoadBalancer" or "NodePort"
164 # -- HAProxy service clusterIP. Set to "None" to create a headless service.
166 # -- (int) HAProxy service nodePort value (haproxy.service.type must be NodePort)
168 # -- HAProxy service loadbalancer IP
170 # -- (string) HAProxy service externalTrafficPolicy value (haproxy.service.type must be LoadBalancer)
171 externalTrafficPolicy: ~
172 # -- HAProxy external IPs
174 # -- HAProxy service labels
176 # -- HAProxy service annotations
178 # -- List of CIDR's allowed to connect to LoadBalancer
179 loadBalancerSourceRanges: []
180 # -- HAProxy service IP family policy for dual-stack clusters
182 # -- HAProxy service IP families (e.g. ["IPv4", "IPv6"] for dual-stack)
184 # -- HAProxy serviceAccountName
185 serviceAccountName: redis-sa
187 # -- Specifies whether a ServiceAccount should be created
190 ## Official HAProxy embedded prometheus metrics settings.
191 ## Ref: https://github.com/haproxy/haproxy/tree/master/contrib/prometheus-exporter
194 # -- HAProxy enable prometheus metric scraping
196 # -- HAProxy prometheus metrics scraping port
198 # -- HAProxy metrics scraping port name
199 portName: http-exporter-port
200 # -- HAProxy prometheus metrics scraping path
203 # -- When set true then use a ServiceMonitor to configure scraping
205 # -- Set the namespace the ServiceMonitor should be deployed
206 # @default -- `.Release.Namespace`
208 # -- Set how frequently Prometheus should scrape (default is 30s)
210 # -- Set path to redis-exporter telemtery-path (default is /metrics)
212 # -- Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
214 # -- Set timeout for scrape (default is 10s)
216 # -- Set additional properties for the ServiceMonitor endpoints such as relabeling, scrapeTimeout, tlsConfig, and more.
217 endpointAdditionalProperties: {}
218 # -- Disable API Check on ServiceMonitor
219 disableAPICheck: false
221 # -- Extra init resources
224 # -- haproxy.cfg `timeout connect` setting
226 # -- haproxy.cfg `timeout server` setting
228 # -- haproxy.cfg `timeout client` setting
230 # -- haproxy.cfg `timeout check` setting
232 # -- haproxy.cfg `timeout tunnel` setting
234 # -- haproxy.cfg `check inter` setting
236 # -- haproxy.cfg `check fall` setting
238 # -- Security context to be added to the HAProxy deployment.
243 # -- Security context to be added to the HAProxy containers.
244 containerSecurityContext:
246 allowPrivilegeEscalation: false
254 # -- Whether the haproxy pods should be forced to run on separate nodes.
255 hardAntiAffinity: true
256 # -- Additional affinities to add to the haproxy pods.
257 additionalAffinities: {}
258 # -- Override all other affinity settings for the haproxy pods with a string.
260 ## Custom config-haproxy.cfg files used to override default settings. If this file is
261 ## specified then the config-haproxy.cfg above will be ignored.
262 # -- (string) Allows for custom config-haproxy.cfg file to be applied. If this is used then default config will be overwriten
265 # Define configuration here
267 ## Place any additional configuration section to add to the default config-haproxy.cfg
268 # -- (string) Allows to place any additional configuration section to add to the default config-haproxy.cfg
271 # Define configuration here
273 # -- Container lifecycle hooks.
274 # Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
276 ## HAProxy test related options
278 # -- Pod resources for the tests against HAProxy.
280 ## Enable HAProxy parameters to bind and consume IPv6 addresses. Enabled by default.
282 # -- Enable HAProxy parameters to bind and consume IPv6 addresses. Enabled by default.
285 # -- whether NetworkPolicy for Haproxy should be created
287 # -- Annotations for Haproxy NetworkPolicy
289 # -- Labels for Haproxy NetworkPolicy
291 # -- user defined ingress rules that Haproxy should permit into.
292 # uses the format defined in https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
295 # - namespaceSelector:
297 # name: my-redis-client-namespace
300 # application: redis-client
301 ## if ports is not defined then it defaults to the ports defined for enabled services (redis, sentinel)
308 # -- user can define egress rules too, uses the same structure as ingressRules
311## Ref: https://kubernetes.io/docs/admin/authorization/rbac/
314 # -- Create and use RBAC resources
316# NOT RECOMMENDED: Additional container in which you can execute arbitrary commands to update sysctl parameters
317# You can now use securityContext.sysctls to leverage this capability
318# Ref: https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/
321 # -- Enable an init container to modify Kernel settings
323 # -- sysctlImage command to execute
325 # -- sysctlImage Init container registry
326 registry: chainreg.biz
327 # -- sysctlImage Init container name
328 repository: chainguard-private/busybox
329 # -- sysctlImage Init container tag
330 tag: latest@sha256:655f0f89892d3134b1c3dfa0eded3c451b1f2d39916d829753f28c889a547bd5
331 # -- sysctlImage Init container pull policy
333 # -- Mount the host `/sys` folder to `/host-sys`
335 # -- sysctlImage resources
337# -- Use an alternate scheduler, e.g. "stork".
338# ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
340## Redis specific configuration options
342 # -- Port to access the redis service
344 # -- Redis convention for naming the cluster group: must match `^[\\w-\\.]+$` and can be templated
345 masterGroupName: "mymaster" # must match ^[\\w-\\.]+$) and can be templated
346 # -- Allows overriding the redis container command
350 # -- Allows overriding the redis container arguments
352 # - "custom-startup.sh"
354 # -- Load environment variables from ConfigMap/Secret
357 # name: add-env-secret
359 # -- Configure the 'minReadySeconds' parameter to StatefulSet
360 # ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#minreadyseconds
362 ## Configures redis with tls-port parameter
363 # -- (int) TLS Port to access the redis service
367 # -- (bool) Configures redis with tls-replication parameter, if true sets "tls-replication yes" in redis.conf
369 # -- It is possible to disable client side certificates authentication when "authClients" is set to "no"
373 # -- Increase terminationGracePeriodSeconds to allow writing large RDB snapshots. (k8s default is 30s)
374 # ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination-forced
375 terminationGracePeriodSeconds: 60
376 # -- Liveness probe parameters for redis container
378 # -- Enable the Liveness Probe
380 # -- Initial delay in seconds for liveness probe
381 initialDelaySeconds: 30
382 # -- Period in seconds after which liveness probe will be repeated
384 # -- Timeout seconds for liveness probe
386 # -- Success threshold for liveness probe
388 # -- Failure threshold for liveness probe
390 # -- Readiness probe parameters for redis container
392 # -- Enable the Readiness Probe
394 # -- Initial delay in seconds for readiness probe
395 initialDelaySeconds: 30
396 # -- Period in seconds after which readiness probe will be repeated
398 # -- Timeout seconds for readiness probe
400 # -- Success threshold for readiness probe
402 # -- Failure threshold for readiness probe
404 # -- Startup probe parameters for redis container
406 # -- Enable Startup Probe
408 # -- Initial delay in seconds for startup probe
409 initialDelaySeconds: 30
410 # -- Period in seconds after which startup probe will be repeated
412 # -- Timeout seconds for startup probe
414 # -- Success threshold for startup probe
416 # -- Failure threshold for startup probe
418 # -- Array with commands to disable
422 # -- Any valid redis config options in this section will be applied to each server, For multi-value configs use list instead of string (for example loadmodule) (see below)
423 # @default -- see values.yaml
425 ## -- Additional redis conf options can be added below
426 ## -- For all available options see http://download.redis.io/redis-stable/redis.conf
427 min-replicas-to-write: 1
428 # -- Value in seconds
429 min-replicas-max-lag: 5
430 # -- Max memory to use for each redis instance. Default is unlimited.
432 # -- Max memory policy to use for each redis instance. Default is volatile-lru.
433 maxmemory-policy: "volatile-lru"
434 # -- Determines if scheduled RDB backups are created. Default is false.
435 # -- Please note that local (on-disk) RDBs will still be created when re-syncing with a new slave. The only way to prevent this is to enable diskless replication.
437 # -- When enabled, directly sends the RDB over the wire to slaves, without using the disk as intermediate storage. Default is false.
438 repl-diskless-sync: "yes"
439 rdbcompression: "yes"
441 # -- (string) Allows for custom redis.conf files to be applied. If this is used then `redis.config` is ignored
444 # Define configuration here
446 # -- CPU/Memory for master/slave nodes resource requests/limits
454 # -- Container Lifecycle Hooks for redis container
455 # Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
456 # @default -- see values.yaml
460 command: ["/bin/sh", "/readonly-config/trigger-failover-if-master.sh"]
461 # -- Annotations for the redis statefulset
463 # -- Annotations to be added to the redis statefulset pods
465 # -- Update strategy for Redis StatefulSet
466 ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
469 # -- additional volumeMounts for Redis container
470 extraVolumeMounts: []
473## Sentinel specific configuration options
475 # -- Port to access the sentinel service
477 ## Configure the 'bind' directive to bind to a list of network interfaces
481 ## Configures sentinel with tls-port parameter
482 # -- (int) TLS Port to access the sentinel service
486 # -- (bool) Configures sentinel with tls-replication parameter, if true sets "tls-replication yes" in sentinel.conf
488 # tlsReplication: true
490 # -- It is possible to disable client side certificates authentication when "authClients" is set to "no"
494 ## Configures sentinel with AUTH (requirepass params)
495 # -- Enables or disables sentinel AUTH (Requires `sentinel.password` to be set)
497 # -- (string) A password that configures a `requirepass` in the conf parameters (Requires `sentinel.auth: enabled`)
501 # -- (bool) Configures sentinel with resolve-hostnames parameter, if true sets "resolve-hostnames yes" in sentinel.conf
503 # resolveHostnames: true
505 # -- (bool) Configures sentinel with announce-hostnames parameter, if true sets "announce-hostnames yes" in sentinel.conf
507 # announceHostnames: true
509 # -- An existing secret containing a key defined by `sentinel.authKey` that configures `requirepass`
510 # in the conf parameters (Requires `sentinel.auth: enabled`, cannot be used in conjunction with `.Values.sentinel.password`)
511 # Supports templates like "{{ .Release.Name }}-sentinel-creds"
513 ## Defines the key holding the sentinel password in existing secret.
514 # -- The key holding the sentinel password in an existing secret.
515 authKey: sentinel-password
518 # liveness probe parameters for sentinel container
521 # -- Initial delay in seconds for liveness probe
522 initialDelaySeconds: 30
523 # -- Period in seconds after which liveness probe will be repeated
525 # -- Timeout seconds for liveness probe
527 # -- Success threshold for liveness probe
529 # -- Failure threshold for liveness probe
531 # readiness probe parameters for sentinel container
534 # -- Initial delay in seconds for readiness probe
535 initialDelaySeconds: 30
536 # -- Period in seconds after which readiness probe will be repeated
538 # -- Timeout seconds for readiness probe
540 # -- Success threshold for readiness probe
542 # -- Failure threshold for readiness probe
544 # -- Startup probe parameters for redis container
546 # -- Enable Startup Probe
548 # -- Initial delay in seconds for startup probe
549 initialDelaySeconds: 5
550 # -- Period in seconds after which startup probe will be repeated
552 # -- Timeout seconds for startup probe
554 # -- Success threshold for startup probe
556 # -- Failure threshold for startup probe
558 # -- Minimum number of nodes expected to be live.
560 # -- Valid sentinel config options in this section will be applied as config options to each sentinel (see below)
561 # @default -- see values.yaml
563 ## Additional sentinel conf options can be added below. Only options that
564 ## are expressed in the format simialar to 'sentinel xxx mymaster xxx' will
565 ## be properly templated expect maxclients option.
566 ## For available options see http://download.redis.io/redis-stable/sentinel.conf
567 down-after-milliseconds: 10000
568 ## Failover timeout value in milliseconds
569 failover-timeout: 180000
572 ## Custom sentinel.conf files used to override default settings. If this file is
573 ## specified then the sentinel.config above will be ignored.
574 # -- Allows for custom sentinel.conf files to be applied. If this is used then `sentinel.config` is ignored
577 # Define configuration here
579 # -- CPU/Memory for sentinel node resource requests/limits
587 # -- Container Lifecycle Hooks for sentinel container.
588 # Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
590 # -- additional volumeMounts for Sentinel container
591 extraVolumeMounts: []
594# -- Security context to be added to the Redis StatefulSet.
599 ## Assuming your kubelet allows it, you can the following instructions to configure
600 ## specific sysctl parameters
603 # - name: net.core.somaxconn
605# -- Security context to be added to the Redis containers.
606containerSecurityContext:
609 allowPrivilegeEscalation: false
615## Node labels, affinity, and tolerations for pod assignment
616## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
617## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature
618## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
619# -- Node labels for pod assignment
621## -- Tolerations for pod assignment
622## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
624# -- Whether the Redis server pods should be forced to run on separate nodes.
625## This is accomplished by setting their AntiAffinity with requiredDuringSchedulingIgnoredDuringExecution as opposed to preferred.
626## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity-beta-feature
627hardAntiAffinity: true
628# -- Additional affinities to add to the Redis server pods.
629## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
630additionalAffinities: {}
634## preferredDuringSchedulingIgnoredDuringExecution:
644# -- Override all other affinity settings for the Redis server pods with a string.
650## requiredDuringSchedulingIgnoredDuringExecution:
653## app: {{ template "redis-ha.name" . }}
654## release: {{ .Release.Name }}
655## topologyKey: kubernetes.io/hostname
656## preferredDuringSchedulingIgnoredDuringExecution:
661## app: {{ template "redis-ha.name" . }}
662## release: {{ .Release.Name }}
663## topologyKey: failure-domain.beta.kubernetes.io/zone
666## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
667topologySpreadConstraints:
668 # -- Enable topology spread constraints
670 # -- Max skew of pods tolerated
672 # -- Topology key for spread constraints
674 # -- Enforcement policy, hard or soft
675 whenUnsatisfiable: ""
676# Prometheus exporter specific configuration options
678 # -- If `true`, the prometheus exporter sidecar is enabled
681 image: chainreg.biz/chainguard-private/prometheus-redis-exporter
682 # -- Exporter image tag
683 tag: latest@sha256:0eed87a35e06556f10be368b28be5541fa0dd07b609a677f8fd79c1710a358bc
684 # -- Exporter image pullPolicy
685 pullPolicy: IfNotPresent
687 port: &exporter_port 9121
688 # -- Exporter port name
689 portName: exporter-port
690 # -- Exporter scrape path
691 scrapePath: &exporter_scrapePath /metrics
692 # -- Address/Host for Redis instance.
693 # Exists to circumvent issues with IPv6 dns resolution that occurs on certain environments
695 ## Set this to true if you want to connect to redis tls port
698 # -- cpu/memory resource limits/requests
700 # -- Additional args for redis exporter
702 # -- A custom custom Lua script that will be mounted to exporter for collection of custom metrics.
703 # Creates a ConfigMap and sets env var `REDIS_EXPORTER_SCRIPT`.
705 # Used to mount a LUA-Script via config map and use it for metrics-collection
707 # -- Example script copied from: https://github.com/oliver006/redis_exporter/blob/master/contrib/sample_collect_script.lua
708 # -- Example collect script for -script option
709 # -- This returns a Lua table with alternating keys and values.
710 # -- Both keys and values must be strings, similar to a HGETALL result.
711 # -- More info about Redis Lua scripting: https://redis.io/commands/eval
715 # -- Add all keys and values from some hash in db 5
716 # redis.call("SELECT", 5)
717 # local r = redis.call("HGETALL", "some-hash-with-stats")
719 # for _,v in ipairs(r) do
720 # table.insert(result, v) -- alternating keys and values
725 # table.insert(result, "foo")
726 # table.insert(result, "42") -- note the string, use tostring() if needed
731 # -- When set true then use a ServiceMonitor to configure scraping
733 # -- Set the namespace the ServiceMonitor should be deployed
734 # @default -- `.Release.Namespace`
736 # -- Set how frequently Prometheus should scrape (default is 30s)
738 # -- Set path to redis-exporter telemtery-path (default is /metrics)
740 # -- Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
742 # -- Set timeout for scrape (default is 10s)
744 # -- Set additional properties for the ServiceMonitor endpoints such as relabeling, scrapeTimeout, tlsConfig, and more.
745 endpointAdditionalProperties: {}
746 # -- Disable API Check on ServiceMonitor
747 disableAPICheck: false
748 # RelabelConfigs to apply to samples before scraping.
750 # - sourceLabels: [__meta_kubernetes_pod_node_name]
753 # targetLabel: nodename
757 # MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
758 metricRelabelings: []
760 # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
761 # sourceLabels: [__name__]
762 # prometheus exporter SCANS redis db which can take some time
763 # allow different probe settings to not let container crashloop
766 # -- Exporter liveness probe httpGet path
767 path: *exporter_scrapePath
768 # -- Exporter liveness probe httpGet port
770 # -- Initial delay in seconds for liveness probe of exporter
771 initialDelaySeconds: 15
772 # -- Timeout seconds for liveness probe of exporter
774 # -- Period in seconds after which liveness probe will be repeated
778 # -- Exporter readiness probe httpGet path
779 path: *exporter_scrapePath
780 # -- Exporter readiness probe httpGet port
782 # -- Initial delay in seconds for readiness probe of exporter
783 initialDelaySeconds: 15
784 # -- Timeout seconds for readiness probe of exporter
786 # -- Period in seconds after which readiness probe will be repeated
788 # -- Success threshold for readiness probe of exporter
790# -- Pod Disruption Budget rules
791podDisruptionBudget: {}
792# Use only one of the two
796# -- Configures redis with AUTH (requirepass & masterauth conf params)
798# -- (string) A password that configures a `requirepass` and `masterauth` in the conf parameters (Requires `auth: enabled`)
800# -- Annotations for auth secret
801authSecretAnnotations: {}
802## Use existing secret containing key `authKey` (ignores redisPassword)
803## Can also store AWS S3 or SSH secrets in this secret
804## Supports templates like "{{ .Release.Name }}-creds"
805# -- An existing secret containing a key defined by `authKey` that configures `requirepass` and `masterauth` in the conf
806# parameters (Requires `auth: enabled`, cannot be used in conjunction with `.Values.redisPassword`)
808# -- Defines the key holding the redis password in existing secret.
811 # -- Enable persistent volume
813 ## redis-ha data Persistent Volume Storage Class
814 ## If defined, storageClassName: <storageClass>
815 ## If set to "-", storageClassName: "", which disables dynamic provisioning
816 ## If undefined (the default) or set to null, no storageClassName spec is
817 ## set, choosing the default provisioner. (gp2 on AWS, standard on
818 ## GKE, AWS & OpenStack)
821 # -- redis-ha data Persistent Volume Storage Class
823 # -- Persistent volume access modes
826 # -- Persistent volume size
828 # -- Annotations for the volume
830 # -- Labels for the volume
833 # -- Extra init resources
835# To use a hostPath for data, set persistentVolume.enabled to false
836# and define hostPath.path.
837# Warning: this might overwrite existing folders on the host system!
839 # -- Use this path on the host for data storage.
840 # path is evaluated as template so placeholders are replaced
842 # path: "/data/{{ .Release.Name }}"
844 # -- if chown is true, an init-container with root permissions is launched to
845 # change the owner of the hostPath folder to the user defined in the
848# -- Configuration of `emptyDir`, used only if persistentVolume is disabled and no hostPath specified
851 ## Fill the name of secret if you want to use your own TLS certificates.
852 ## The secret should contains keys named by "tls.certFile" - the certificate, "tls.keyFile" - the private key, "tls.caCertFile" - the certificate of CA and "tls.dhParamsFile" - the dh parameter file
853 ## Supports templates like "{{ .Release.Name }}-tls"
854 ## This secret will be generated using files from certs folder if the secretName is not set and redis.tlsPort is set
855 # secretName: tls-secret
857 # -- Name of certificate file
859 # -- Name of key file
861 # -- (string) Name of Diffie-Hellman (DH) key exchange parameters file (Example: redis.dh)
863 # -- Name of CA certificate file
865# restore init container is executed if restore.[s3|ssh].source is not false
866# restore init container creates /data/dump.rdb_ from original if exists
867# restore init container overrides /data/dump.rdb
868# secrets are stored into environment of init container - stored encoded on k8s
869# REQUIRED for s3 restore: AWS 'access_key' and 'secret_key' or stored in existingSecret
870# EXAMPLE source for s3 restore: 's3://bucket/dump.rdb'
871# REQUIRED for ssh restore: 'key' should be in one line including CR i.e. '-----BEGIN RSA PRIVATE KEY-----\n...\n...\n...\n-----END RSA PRIVATE KEY-----'
872# EXAMPLE source for ssh restore: 'user@server:/path/dump.rdb'
873# REQUIRED for redis restore: 'source' should be in form of redis connection uri: 'redis://[username:password@]host:port[/db]'
874# EXAMPLE source for redis restore: 'redis://username:password@localhost:6379'
876 # -- Timeout for the restore
878 # -- Set existingSecret to true to use secret specified in existingSecret above
879 existingSecret: false
881 # -- Restore init container - AWS S3 location of dump - i.e. s3://bucket/dump.rdb or false
883 # If using existingSecret, that secret must contain:
884 # AWS_SECRET_ACCESS_KEY: <YOUR_ACCESS_KEY:>
885 # AWS_ACCESS_KEY_ID: <YOUR_KEY_ID>
886 # If not set the key and ID as strings below:
887 # -- Restore init container - AWS AWS_ACCESS_KEY_ID to access restore.s3.source
889 # -- Restore init container - AWS AWS_SECRET_ACCESS_KEY to access restore.s3.source
891 # -- Restore init container - AWS AWS_REGION to access restore.s3.source
894 # -- Restore init container - SSH scp location of dump - i.e. user@server:/path/dump.rdb or false
896 # -- Restore init container - SSH private key to scp restore.ssh.source to init container.
897 # Key should be in one line separated with \n.
898 # i.e. `-----BEGIN RSA PRIVATE KEY-----\n...\n...\n-----END RSA PRIVATE KEY-----`
902## Custom PrometheusRule to be defined
903## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart
904## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions
906 # -- If true, creates a Prometheus Operator PrometheusRule.
908 # -- Additional labels to be set in metadata.
910 # -- Namespace which Prometheus is running in.
912 # -- How often rules in the group are evaluated (falls back to `global.evaluation_interval` if not set).
914 # -- Rules spec template (see https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#rule).
917 # - alert: RedisPodDown
919 # redis_up{job="{{ include "redis-ha.fullname" . }}"} == 0
924 # description: Redis pod {{ "{{ $labels.pod }}" }} is down
925 # summary: Redis pod {{ "{{ $labels.pod }}" }} is down
926# -- Extra init containers to include in StatefulSet
927extraInitContainers: []
931# -- Extra containers to include in StatefulSet
936# -- Extra volumes to include in StatefulSet
941# -- Labels added here are applied to all created resources
944 # -- whether NetworkPolicy for Redis StatefulSets should be created.
945 # when enabled, inter-Redis connectivity is created
947 # -- Annotations for NetworkPolicy
949 # -- Labels for NetworkPolicy
951 # -- User defined ingress rules that Redis should permit into.
952 # Uses the format defined in https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
955 # - namespaceSelector:
957 # name: my-redis-client-namespace
960 # application: redis-client
961 ## if ports is not defined then it defaults to the ports defined for enabled services (redis, sentinel)
968 # -- user can define egress rules too, uses the same structure as ingressRules
971 # -- Allow all destinations for DNS traffic
972 - namespaceSelector: {}
974 # Cloud Provider often uses the local link local range to host managed DNS resolvers.
975 # We need to allow this range to ensure that the Redis pods can resolve DNS.
976 # Example architecture for GCP Cloud DNS: https://cloud.google.com/kubernetes-engine/docs/how-to/cloud-dns#architecture
984 # -- Interval between redis sentinel and server split brain checks (in seconds)
987 # -- splitBrainDetection resources
989 # liveness probe parameters for split brain container
991 # -- Initial delay in seconds for liveness probe
992 initialDelaySeconds: 30
993 # -- Period in seconds after which liveness probe will be repeated
995 # -- Timeout seconds for liveness probe
997 # -- Success threshold for liveness probe
999 # -- Failure threshold for liveness probe
1004 - /readonly-config/redis.conf
1005 # readiness probe parameters for split brain container
1007 # -- Initial delay in seconds for readiness probe
1008 initialDelaySeconds: 30
1009 # -- Period in seconds after which readiness probe will be repeated
1011 # -- Timeout seconds for readiness probe
1013 # -- Success threshold for readiness probe
1015 # -- Failure threshold for readiness probe