## Global Docker image parameters ## Please, note that this will override the image parameters, including dependencies, configured to use the global value ## Current available global Docker image parameters: imageRegistry and imagePullSecrets ## global: # imageRegistry: myRegistryName # imagePullSecrets: # - myRegistryKeySecretName # storageClass: myStorageClass redis: {} ## Bitnami Redis image version ## ref: https://hub.docker.com/r/bitnami/redis/tags/ ## image: registry: docker.io repository: bitnami/redis-cluster ## Bitnami Redis image tag ## ref: https://github.com/bitnami/bitnami-docker-redis#supported-tags-and-respective-dockerfile-links ## tag: 6.0.5-debian-10-r27 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images ## pullPolicy: IfNotPresent ## Optionally specify an array of imagePullSecrets. ## Secrets must be manually created in the namespace. ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ ## pullSecrets: # - myRegistryKeySecretName ## String to partially override redis.fullname template (will maintain the release name) ## nameOverride: ## String to fully override redis.fullname template ## fullnameOverride: ## Redis Cluster settings ## cluster: ## Enable the creation of a Job that will execute the proper command to create the Redis Cluster. ## init: true ## Number of Redis nodes to be deployed ## nodes: 6 ## Parameter to be passed as --cluster-replicas to the redis-cli --cluster create ## 1 means that we want a replica for every master created ## replicas: 1 ## Configuration to access the Redis Cluster from outside the Kubernetes cluster ## externalAccess: enabled: false service: ## Type of service for external access. At this moment only LoadBalancer is supported. ## type: LoadBalancer ## Port used when service type is LoadBalancer ## port: 6379 ## Array of load balancer IPs for each Redis node. Length must be the same as cluster.nodes ## loadBalancerIP: [] ## Service annotations done as key:value pairs ## annotations: {} ## This section allows to update the Redis cluster nodes. ## update: ## Setting this to true a hook will add nodes to the Redis cluster after the upgrade. ## currentNumberOfNodes is required ## addNodes: false ## Set to the number of nodes that are already deployed ## currentNumberOfNodes: 6 ## When using external access set the new externalIPs here as an array ## newExternalIPs: [] redis: ## Custom command to override image cmd ## command: [] ## Custom args for the custom command: ## args: [] # Whether to use AOF Persistence mode or not # It is strongly recommended to use this type when dealing with clusters # # ref: https://redis.io/topics/persistence#append-only-file # ref: https://redis.io/topics/cluster-tutorial#creating-and-using-a-redis-cluster useAOFPersistence: "yes" # Redis port port: 6379 ## lifecycleHooks for the container to automate configuration before or after startup. ## lifecycleHooks: ## Extra volumes to add to the deployment ## extraVolumes: [] ## Extra volume mounts to add to the container ## extraVolumeMounts: [] ## Custom Liveness probe ## customLivenessProbe: {} ## Custom Rediness probe ## customReadinessProbe: {} ## Extra init containers to add to the deployment ## initContainers: [] ## Extra sidecar containers to add to the deployment ## sidecars: [] ## Pod extra labels ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ ## podLabels: {} ## Priority class name ## priorityClassName: ## Additional Redis configuration for the nodes ## ref: https://redis.io/topics/config ## configmap: ## An array to add extra env vars ## For example: ## extraEnvVars: [] # - name: BEARER_AUTH # value: true ## ConfigMap with extra environment variables ## extraEnvVarsCM: ## Secret with extra environment variables ## extraEnvVarsSecret: ## Redis additional annotations ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ ## podAnnotations: {} ## Redis resource requests and limits ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ ## resources: # requests: # memory: 256Mi # cpu: 100m ## Use an alternate scheduler, e.g. "stork". ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ ## schedulerName: ## Configure extra options for Redis liveness and readiness probes ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) ## livenessProbe: enabled: true initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 readinessProbe: enabled: true initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 1 successThreshold: 1 failureThreshold: 5 ## Redis Node selectors and tolerations for pod assignment ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature ## # nodeSelector: {"beta.kubernetes.io/arch": "amd64"} nodeSelector: tolerations: [] ## Redis pod/node affinity/anti-affinity ## affinity: {} ## Pod topology spread constraints ## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ ## The value is evaluated as a template ## topologySpreadConstraints: [] ## The busPort should be obtained adding 10000 to the redisPort. By default: 10000 + 6379 = 16379 ## busPort: 16379 ## Cluster init job settings ## initJob: ## Number of seconds the Job to create the cluster will be waiting for the Nodes to be ready. ## activeDeadlineSeconds: 600 ## Container command (using container default if not set) ## command: ## Container args (using container default if ot set) ## args: ## Job annotations ## annotations: {} ## Pod annotations ## podAnnotations: {} ## An array to add extra env vars ## For example: ## extraEnvVars: [] # - name: BEARER_AUTH # value: true ## ConfigMap with extra environment variables ## extraEnvVarsCM: ## Secret with extra environment variables ## extraEnvVarsSecret: ## Extra volumes to add to the deployment ## extraVolumes: [] ## Extra volume mounts to add to the container ## extraVolumeMounts: [] ## Extra init containers to add to the deployment ## initContainers: [] ## Node labels for pod assignment. Evaluated as a template. ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ ## nodeSelector: {} ## Pod extra labels ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ ## podLabels: {} ## Tolerations for pod assignment. Evaluated as a template. ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ ## tolerations: [] ## Affinity for pod assignment. Evaluated as a template. ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity ## affinity: {} ## Container resource requests and limits ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ ## resources: ## We usually recommend not to specify default resources and to leave this as a conscious ## choice for the user. This also increases chances charts run on environments with little ## resources, such as Minikube. If you do want to specify resources, uncomment the following ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. ## limits: {} ## cpu: 500m ## memory: 1Gi ## requests: {} ## cpu: 250m ## memory: 256Mi ## ## Cluster init job settings ## updateJob: ## Number of seconds the Job to create the cluster will be waiting for the Nodes to be ready. ## activeDeadlineSeconds: 600 ## Container command (using container default if not set) ## command: ## Container args (using container default if ot set) ## args: ## Job annotations ## annotations: {} ## Pod annotations ## podAnnotations: {} ## Pod extra labels ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ ## podLabels: {} ## An array to add extra env vars ## For example: ## extraEnvVars: [] # - name: BEARER_AUTH # value: true ## ConfigMap with extra environment variables ## extraEnvVarsCM: ## Secret with extra environment variables ## extraEnvVarsSecret: ## Extra volumes to add to the deployment ## extraVolumes: [] ## Extra volume mounts to add to the container ## extraVolumeMounts: [] ## Extra init containers to add to the deployment ## initContainers: [] ## Node labels for pod assignment. Evaluated as a template. ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ ## nodeSelector: ## Tolerations for pod assignment. Evaluated as a template. ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ ## tolerations: [] ## Redis pod/node affinity/anti-affinity ## affinity: {} ## Container resource requests and limits ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ ## resources: ## We usually recommend not to specify default resources and to leave this as a conscious ## choice for the user. This also increases chances charts run on environments with little ## resources, such as Minikube. If you do want to specify resources, uncomment the following ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. ## limits: {} ## cpu: 500m ## memory: 1Gi ## requests: {} ## cpu: 250m ## memory: 256Mi ## networkPolicy: ## Specifies whether a NetworkPolicy should be created ## enabled: true ## The Policy model to apply. When set to false, only pods with the correct ## client label will have network access to the port Redis is listening ## on. When true, Redis will accept connections from any source ## (with the correct destination port). ## allowExternal: true ## Allow connections from other namespacess. Just set label for namespace and set label for pods (optional). ## ingressNSMatchLabels: {} ingressNSPodMatchLabels: {} serviceAccount: ## Specifies whether a ServiceAccount should be created ## create: false ## The name of the ServiceAccount to use. ## If not set and create is true, a name is generated using the fullname template ## name: rbac: ## Specifies whether RBAC resources should be created ## create: false role: ## Rules to create. It follows the role specification # rules: # - apiGroups: # - extensions # resources: # - podsecuritypolicies # verbs: # - use # resourceNames: # - gce.unprivileged rules: [] ## Redis pod Security Context ## podSecurityContext: enabled: true fsGroup: 1001 runAsUser: 1001 ## sysctl settings ## ## Uncomment the setting below to increase the net.core.somaxconn value ## sysctls: # - name: net.core.somaxconn # value: "10000" ## Limits the number of pods of the replicated application that are down simultaneously from voluntary disruptions ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions ## podDisruptionBudget: {} ## Min number of pods that must still be available after the eviction ## # minAvailable: 1 ## Max number of pods that can be unavailable after the eviction ## # maxUnavailable: 1 ## Containers Security Context ## containerSecurityContext: enabled: true runAsUser: 1001 ## sysctl settings ## ## Uncomment the setting below to increase the net.core.somaxconn value ## sysctls: # - name: net.core.somaxconn # value: "10000" ## Use password authentication ## usePassword: true ## Redis password ## Defaults to a random 10-character alphanumeric string if not set and usePassword is true ## ref: https://github.com/bitnami/bitnami-docker-redis#setting-the-server-password-on-first-run ## password: "" ## Use existing secret (ignores previous password) ## existingSecret: ## Password key to be retrieved from Redis secret ## existingSecretPasswordKey: ## Mount secrets as files instead of environment variables ## usePasswordFile: false ## ## TLS configuration ## tls: # Enable TLS traffic enabled: false # # Whether to require clients to authenticate or not. authClients: true # # Name of the Secret that contains the certificates certificatesSecret: # # Certificate filename certFilename: # # Certificate Key filename certKeyFilename: # # CA Certificate filename certCAFilename: # # File containing DH params (in order to support DH based ciphers) dhParamsFilename: ## Annotations for all the deployed objects ## commonAnnotations: ## Labels for all the deployed objects ## commonLabels: ## Redis Service properties for standalone mode. ## service: port: 6379 ## Provide any additional annotations which may be required. This can be used to ## set the LoadBalancer service type to internal only. ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer ## annotations: {} labels: {} ## Set the service type. ## Setting this to LoadBalancer may require corresponding service annotations for loadbalancer creation to succeed. ## Currently supported types are ClusterIP (default) and LoadBalancer ## type: ClusterIP ## If service.type is LoadBalancer, request a specific static IP address if supported by the cloud provider. ## otherwise leave blank # loadBalancerIP: ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ ## persistence: enabled: true ## The path the volume will be mounted at, useful when using different ## Redis images. ## path: /bitnami/redis/data ## The subdirectory of the volume to mount to, useful in dev environments ## and one PV for multiple services. ## subPath: "" ## Redis data Persistent Volume Storage Class ## If defined, storageClassName: ## If set to "-", storageClassName: "", which disables dynamic provisioning ## If undefined (the default) or set to null, no storageClassName spec is ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS & OpenStack) ## storageClass: accessModes: - ReadWriteOnce size: 8Gi ## Persistent Volume selectors ## https://kubernetes.io/docs/concepts/storage/persistent-volumes/#selector ## matchLabels: {} matchExpressions: {} ## Update strategy, can be set to RollingUpdate or onDelete by default. ## https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets ## statefulset: updateStrategy: RollingUpdate ## Partition update strategy ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions ## rollingUpdatePartition: ## Prometheus Exporter / Metrics ## metrics: enabled: true image: registry: docker.io repository: bitnami/redis-exporter tag: 1.8.0-debian-10-r13 pullPolicy: IfNotPresent ## Optionally specify an array of imagePullSecrets. ## Secrets must be manually created in the namespace. ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ ## pullSecrets: # - myRegistryKeySecretName ## Metrics exporter resource requests and limits ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} ## Extra arguments for Metrics exporter, for example: ## extraArgs: ## check-keys: myKey,myOtherKey ## extraArgs: {} ## Metrics exporter pod Annotation and Labels ## podAnnotations: prometheus.io/scrape: "true" prometheus.io/port: "9121" podLabels: {} # Enable this if you're using https://github.com/coreos/prometheus-operator serviceMonitor: enabled: false ## Specify a namespace if needed ## namespace: ## fallback to the prometheus default unless specified ## interval: ## Custom PrometheusRule to be defined ## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions ## prometheusRule: enabled: false additionalLabels: {} namespace: "" rules: [] ## These are just examples rules, please adapt them to your needs. ## Make sure to constraint the rules to the current postgresql service. # - alert: RedisDown # expr: redis_up{service="{{ template "common.names.fullname" . }}-metrics"} == 0 # for: 2m # labels: # severity: error # annotations: # summary: Redis instance {{ "{{ $instance }}" }} down # description: Redis instance {{ "{{ $instance }}" }} is down. # - alert: RedisMemoryHigh # expr: > # redis_memory_used_bytes{service="{{ template "common.names.fullname" . }}-metrics"} * 100 # / # redis_memory_max_bytes{service="{{ template "common.names.fullname" . }}-metrics"} # > 90 =< 100 # for: 2m # labels: # severity: error # annotations: # summary: Redis instance {{ "{{ $instance }}" }} is using too much memory # description: Redis instance {{ "{{ $instance }}" }} is using {{ "{{ $value }}" }}% of its available memory. # - alert: RedisKeyEviction # expr: increase(redis_evicted_keys_total{service="{{ template "common.names.fullname" . }}-metrics"}[5m]) > 0 # for: 1s # labels: # severity: error # annotations: # summary: Redis instance {{ "{{ $instance }}" }} has evicted keys # description: Redis instance {{ "{{ $instance }}" }} has evicted {{ "{{ $value }}" }} keys in the last 5 minutes. ## Metrics exporter pod priorityClassName # priorityClassName: {} service: type: ClusterIP ## Use serviceLoadBalancerIP to request a specific static IP, ## otherwise leave blank ## loadBalancerIP: annotations: {} labels: {} ## ## Init containers parameters: ## volumePermissions: Change the owner of the persist volume mountpoint to RunAsUser:fsGroup ## volumePermissions: enabled: false image: registry: docker.io repository: bitnami/minideb tag: buster pullPolicy: Always ## Optionally specify an array of imagePullSecrets. ## Secrets must be manually created in the namespace. ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ ## pullSecrets: # - myRegistryKeySecretName resources: {} # resources: # requests: # memory: 128Mi # cpu: 100m ## Sysctl InitContainer ## used to perform sysctl operation to modify Kernel settings (needed sometimes to avoid warnings) ## sysctlImage: enabled: false command: [] registry: docker.io repository: bitnami/minideb tag: buster pullPolicy: Always ## Optionally specify an array of imagePullSecrets. ## Secrets must be manually created in the namespace. ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ ## pullSecrets: # - myRegistryKeySecretName mountHostSys: false resources: {} # resources: # requests: # memory: 128Mi # cpu: 100m ## PodSecurityPolicy configuration ## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/ ## podSecurityPolicy: ## Specifies whether a PodSecurityPolicy should be created ## create: false ## Array with extra yaml to deploy with the chart. Evaluated as a template ## extraDeploy: []