6.4.5-0.1.0 • Published 5 years ago

@helm-charts/bitnami-redis v6.4.5-0.1.0

Weekly downloads
29
License
MIT
Repository
-
Last release
5 years ago

@helm-charts/bitnami-redis

Open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

FieldValue
Repository Namebitnami
Chart Nameredis
Chart Version6.4.5
NPM Package Version0.1.0
## 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

## Bitnami Redis image version
## ref: https://hub.docker.com/r/bitnami/redis/tags/
##
image:
  registry: docker.io
  repository: bitnami/redis
  ## Bitnami Redis image tag
  ## ref: https://github.com/bitnami/bitnami-docker-redis#supported-tags-and-respective-dockerfile-links
  ##
  tag: 4.0.14
  ## 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: 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

## Cluster settings
cluster:
  enabled: true
  slaveCount: 1

networkPolicy:
  ## Specifies whether a NetworkPolicy should be created
  ##
  enabled: false

  ## 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

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: []

## Use password authentication
usePassword: true
## Redis password (both master and slave)
## 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:

## Mount secrets as files instead of environment variables
usePasswordFile: false

## Persist data to a persistent volume
persistence:
  {}
  ## A manually managed Persistent Volume and Claim
  ## Requires persistence.enabled: true
  ## If defined, PVC must be created manually before volume will be bound
  # existingClaim:

##
## Redis Master parameters
##
master:
  ## Redis port
  port: 6379
  ## Redis command arguments
  ##
  ## Can be used to specify command line arguments, for example:
  ##
  command: '/run.sh'
  ## Redis additional command line flags
  ##
  ## Can be used to specify command line flags, for example:
  ##
  ## extraFlags:
  ##  - "--maxmemory-policy volatile-ttl"
  ##  - "--repl-backlog-size 1024mb"
  extraFlags: []
  ## Comma-separated list of Redis commands to disable
  ##
  ## Can be used to disable Redis commands for security reasons.
  ## Commands will be completely disabled by renaming each to an empty string.
  ## ref: https://redis.io/topics/security#disabling-of-specific-commands
  ##
  disableCommands:
    - FLUSHDB
    - FLUSHALL

  ## Redis Master additional pod labels and annotations
  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  podLabels: {}
  podAnnotations: {}

  ## Redis Master 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 Master 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 Master 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"}
  # tolerations: []
  ## Redis Master pod/node affinity/anti-affinity
  ##
  affinity: {}

  ## Redis Master Service properties
  service:
    ##  Redis Master Service type
    type: ClusterIP
    port: 6379

    ## Specify the nodePort value for the LoadBalancer and NodePort service types.
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
    ##
    # nodePort:

    ## 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: {}
    loadBalancerIP:

  ## Redis Master Pod Security Context
  securityContext:
    enabled: true
    fsGroup: 1001
    runAsUser: 1001

  ## 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: /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: <storageClass>
    ## 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

  ## 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:

  ## Redis Master pod priorityClassName
  # priorityClassName: {}

##
## Redis Slave properties
## Note: service.type is a mandatory parameter
## The rest of the parameters are either optional or, if undefined, will inherit those declared in Redis Master
##
slave:
  ## Slave Service properties
  service:
    ## Redis Slave Service type
    type: ClusterIP
    ## Specify the nodePort value for the LoadBalancer and NodePort service types.
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
    ##
    # nodePort:

    ## 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: {}
    loadBalancerIP:

  ## Redis port
  # port: 6379
  ## Redis extra flags
  # extraFlags: []
  ## List of Redis commands to disable
  # disableCommands: []

  ## Redis Slave pod/node affinity/anti-affinity
  ##
  affinity: {}

  ## Configure extra options for Redis Slave liveness and readiness probes
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)
  ##
  # livenessProbe:
  #   enabled: true
  #   initialDelaySeconds: 30
  #   periodSeconds: 10
  #   timeoutSeconds: 5
  #   successThreshold: 1
  #   failureThreshold: 5
  # readinessProbe:
  #   enabled: true
  #   initialDelaySeconds: 5
  #   periodSeconds: 10
  #   timeoutSeconds: 10
  #   successThreshold: 1
  #   failureThreshold: 5
  ## Redis slave Resource
  # resources:
  #   requests:
  #     memory: 256Mi
  #     cpu: 100m
  ## Redis slave selectors and tolerations for pod assignment
  # nodeSelector: {"beta.kubernetes.io/arch": "amd64"}
  # tolerations: []
  ## Use an alternate scheduler, e.g. "stork".
  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
  ##
  # schedulerName:
  ## Redis slave pod Annotation and Labels
  # podLabels: {}
  # podAnnotations: {}
  ## Redis slave pod Security Context
  # securityContext:
  #   enabled: true
  #   fsGroup: 1001
  #   runAsUser: 1001
  ## Redis slave pod priorityClassName
  # priorityClassName: {}

## Prometheus Exporter / Metrics
##
metrics:
  enabled: false

  image:
    registry: docker.io
    repository: oliver006/redis_exporter
    tag: v0.31.0
    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

  service:
    type: ClusterIP
    ## Use serviceLoadBalancerIP to request a specific static IP,
    ## otherwise leave blank
    # loadBalancerIP:
    annotations:
      prometheus.io/scrape: 'true'
      prometheus.io/port: '9121'

  ## 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 labels and tolerations for pod assignment
  # nodeSelector: {"beta.kubernetes.io/arch": "amd64"}
  # tolerations: []

  ## Metrics exporter pod Annotation and Labels
  # podAnnotations: {}
  # podLabels: {}

  # Enable this if you're using https://github.com/coreos/prometheus-operator
  serviceMonitor:
    enabled: false
    ## Specify a namespace if needed
    # namespace: monitoring
    # fallback to the prometheus default unless specified
    # interval: 10s
    ## Defaults to what's used if you follow CoreOS [Prometheus Install Instructions](https://github.com/helm/charts/tree/master/stable/prometheus-operator#tldr)
    ## [Prometheus Selector Label](https://github.com/helm/charts/tree/master/stable/prometheus-operator#prometheus-operator-1)
    ## [Kube Prometheus Selector Label](https://github.com/helm/charts/tree/master/stable/prometheus-operator#exporters)
    selector:
      prometheus: kube-prometheus

  ## Metrics exporter pod priorityClassName
  # priorityClassName: {}

##
## 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: latest
    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
  resources: {}
  # resources:
  #   requests:
  #     memory: 128Mi
  #     cpu: 100m

## Redis config file
## ref: https://redis.io/topics/config
##
configmap: |-
  # maxmemory-policy volatile-lru

## 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: latest
  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

Redis

Redis is an advanced key-value cache and store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs.

TL;DR

# Testing configuration
$ helm install stable/redis
# Production configuration
$ helm install stable/redis --values values-production.yaml

Introduction

This chart bootstraps a Redis deployment on a Kubernetes cluster using the Helm package manager.

Bitnami charts can be used with Kubeapps for deployment and management of Helm Charts in clusters. This chart has been tested to work with NGINX Ingress, cert-manager, fluentd and Prometheus on top of the BKPR.

Prerequisites

  • Kubernetes 1.8+
  • PV provisioner support in the underlying infrastructure

Installing the Chart

To install the chart with the release name my-release:

$ helm install --name my-release stable/redis

The command deploys Redis on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall/delete the my-release deployment:

$ helm delete my-release

The command removes all the Kubernetes components associated with the chart and deletes the release.

Upgrading an existing Release to a new major version

A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions.

5.0.0

The default image in this release may be switched out for any image containing the redis-server and redis-cli binaries. If redis-server is not the default image ENTRYPOINT, master.command must be specified.

Breaking changes

  • master.args and slave.args are removed. Use master.command or slave.command instead in order to override the image entrypoint, or master.extraFlags to pass additional flags to redis-server.
  • disableCommands is now interpreted as an array of strings instead of a string of comma separated values.
  • master.persistence.path now defaults to /data.

4.0.0

This version removes the chart label from the spec.selector.matchLabels which is immutable since StatefulSet apps/v1beta2. It has been inadvertently added, causing any subsequent upgrade to fail. See https://github.com/helm/charts/issues/7726.

It also fixes https://github.com/helm/charts/issues/7726 where a deployment extensions/v1beta1 can not be upgraded if spec.selector is not explicitly set.

Finally, it fixes https://github.com/helm/charts/issues/7803 by removing mutable labels in spec.VolumeClaimTemplate.metadata.labels so that it is upgradable.

In order to upgrade, delete the Redis StatefulSet before upgrading:

$ kubectl delete statefulsets.apps --cascade=false my-release-redis-master

And edit the Redis slave (and metrics if enabled) deployment:

kubectl patch deployments my-release-redis-slave --type=json -p='[{"op": "remove", "path": "/spec/selector/matchLabels/chart"}]'
kubectl patch deployments my-release-redis-metrics --type=json -p='[{"op": "remove", "path": "/spec/selector/matchLabels/chart"}]'

Configuration

The following table lists the configurable parameters of the Redis chart and their default values.

ParameterDescriptionDefault
global.imageRegistryGlobal Docker image registrynil
global.imagePullSecretsGlobal Docker registry secret names as an array[] (does not add image pull secrets to deployed pods)
image.registryRedis Image registrydocker.io
image.repositoryRedis Image namebitnami/redis
image.tagRedis Image tag{VERSION}
image.pullPolicyImage pull policyAlways
image.pullSecretsSpecify docker-registry secret names as an arraynil
cluster.enabledUse master-slave topologytrue
cluster.slaveCountNumber of slaves1
existingSecretName of existing secret object (for password authentication)nil
usePasswordUse passwordtrue
usePasswordFileMount passwords as files instead of environment variablesfalse
passwordRedis password (ignored if existingSecret set)Randomly generated
configmapRedis configuration file to be usednil
networkPolicy.enabledEnable NetworkPolicyfalse
networkPolicy.allowExternalDon't require client label for connectionstrue
serviceAccount.createSpecifies whether a ServiceAccount should be createdfalse
serviceAccount.nameThe name of the ServiceAccount to createGenerated using the fullname template
rbac.createSpecifies whether RBAC resources should be createdfalse
rbac.role.rulesRules to create[]
metrics.enabledStart a side-car prometheus exporterfalse
metrics.image.registryRedis exporter image registrydocker.io
metrics.image.repositoryRedis exporter image nameoliver006/redis_exporter
metrics.image.tagRedis exporter image tagv0.31.0
metrics.image.pullPolicyImage pull policyIfNotPresent
metrics.image.pullSecretsSpecify docker-registry secret names as an arraynil
metrics.extraArgsExtra arguments for the binary; possible values here{}
metrics.podLabelsAdditional labels for Metrics exporter pod{}
metrics.podAnnotationsAdditional annotations for Metrics exporter pod{}
metrics.service.typeKubernetes Service type (redis metrics)ClusterIP
metrics.service.annotationsAnnotations for the services to monitor (redis master and redis slave service){}
metrics.service.loadBalancerIPloadBalancerIP if redis metrics service type is LoadBalancernil
metrics.resourcesExporter resource requests/limitMemory: 256Mi, CPU: 100m
metrics.serviceMonitor.enabledif true, creates a Prometheus Operator ServiceMonitor (also requires metrics.enabled to be true)false
metrics.serviceMonitor.namespaceOptional namespace which Prometheus is running innil
metrics.serviceMonitor.intervalHow frequently to scrape metrics (use by default, falling back to Prometheus' default)nil
metrics.serviceMonitor.selectorDefault to kube-prometheus install (CoreOS recommended), but should be set according to Prometheus install{ prometheus: kube-prometheus }
metrics.priorityClassNameMetrics exporter pod priorityClassName{}
persistence.existingClaimProvide an existing PersistentVolumeClaimnil
master.persistence.enabledUse a PVC to persist data (master node)true
master.persistence.pathPath to mount the volume at, to use other images/data
master.persistence.subPathSubdirectory of the volume to mount at""
master.persistence.storageClassStorage class of backing PVCgeneric
master.persistence.accessModesPersistent Volume Access Modes[ReadWriteOnce]
master.persistence.sizeSize of data volume8Gi
master.statefulset.updateStrategyUpdate strategy for StatefulSetonDelete
master.statefulset.rollingUpdatePartitionPartition update strategynil
master.podLabelsAdditional labels for Redis master pod{}
master.podAnnotationsAdditional annotations for Redis master pod{}
master.portRedis master port6379
master.commandRedis master entrypoint string. The command redis-server is executed if this is not provided./run.sh
master.disableCommandsArray of Redis commands to disable (master)["FLUSHDB", "FLUSHALL"]
master.extraFlagsRedis master additional command line flags[]
master.nodeSelectorRedis master Node labels for pod assignment{"beta.kubernetes.io/arch": "amd64"}
master.tolerationsToleration labels for Redis master pod assignment[]
master.affinityAffinity settings for Redis master pod assignment{}
master.schedulerNameName of an alternate schedulernil
master.service.typeKubernetes Service type (redis master)ClusterIP
master.service.portKubernetes Service port (redis master)6379
master.service.nodePortKubernetes Service nodePort (redis master)nil
master.service.annotationsannotations for redis master service{}
master.service.loadBalancerIPloadBalancerIP if redis master service type is LoadBalancernil
master.securityContext.enabledEnable security context (redis master pod)true
master.securityContext.fsGroupGroup ID for the container (redis master pod)1001
master.securityContext.runAsUserUser ID for the container (redis master pod)1001
master.resourcesRedis master CPU/Memory resource requests/limitsMemory: 256Mi, CPU: 100m
master.livenessProbe.enabledTurn on and off liveness probe (redis master pod)true
master.livenessProbe.initialDelaySecondsDelay before liveness probe is initiated (redis master pod)30
master.livenessProbe.periodSecondsHow often to perform the probe (redis master pod)30
master.livenessProbe.timeoutSecondsWhen the probe times out (redis master pod)5
master.livenessProbe.successThresholdMinimum consecutive successes for the probe to be considered successful after having failed (redis master pod)1
master.livenessProbe.failureThresholdMinimum consecutive failures for the probe to be considered failed after having succeeded.5
master.readinessProbe.enabledTurn on and off readiness probe (redis master pod)true
master.readinessProbe.initialDelaySecondsDelay before readiness probe is initiated (redis master pod)5
master.readinessProbe.periodSecondsHow often to perform the probe (redis master pod)10
master.readinessProbe.timeoutSecondsWhen the probe times out (redis master pod)1
master.readinessProbe.successThresholdMinimum consecutive successes for the probe to be considered successful after having failed (redis master pod)1
master.readinessProbe.failureThresholdMinimum consecutive failures for the probe to be considered failed after having succeeded.5
master.priorityClassNameRedis Master pod priorityClassName{}
volumePermissions.enabledEnable init container that changes volume permissions in the registry (for cases where the default k8s runAsUser and fsUser values do not work)false
volumePermissions.image.registryInit container volume-permissions image registrydocker.io
volumePermissions.image.repositoryInit container volume-permissions image namebitnami/minideb
volumePermissions.image.tagInit container volume-permissions image taglatest
volumePermissions.image.pullPolicyInit container volume-permissions image pull policyIfNotPresent
volumePermissions.resourcesInit container volume-permissions CPU/Memory resource requests/limits{}
slave.service.typeKubernetes Service type (redis slave)ClusterIP
slave.service.nodePortKubernetes Service nodePort (redis slave)nil
slave.service.annotationsannotations for redis slave service{}
slave.service.loadBalancerIPLoadBalancerIP if Redis slave service type is LoadBalancernil
slave.portRedis slave portmaster.port
slave.commandRedis slave entrypoint array. The docker image's ENTRYPOINT is used if this is not provided.master.command
slave.disableCommandsArray of Redis commands to disable (slave)master.disableCommands
slave.extraFlagsRedis slave additional command line flagsmaster.extraFlags
slave.livenessProbe.enabledTurn on and off liveness probe (redis slave pod)master.livenessProbe.enabled
slave.livenessProbe.initialDelaySecondsDelay before liveness probe is initiated (redis slave pod)master.livenessProbe.initialDelaySeconds
slave.livenessProbe.periodSecondsHow often to perform the probe (redis slave pod)master.livenessProbe.periodSeconds
slave.livenessProbe.timeoutSecondsWhen the probe times out (redis slave pod)master.livenessProbe.timeoutSeconds
slave.livenessProbe.successThresholdMinimum consecutive successes for the probe to be considered successful after having failed (redis slave pod)master.livenessProbe.successThreshold
slave.livenessProbe.failureThresholdMinimum consecutive failures for the probe to be considered failed after having succeeded.master.livenessProbe.failureThreshold
slave.readinessProbe.enabledTurn on and off slave.readiness probe (redis slave pod)master.readinessProbe.enabled
slave.readinessProbe.initialDelaySecondsDelay before slave.readiness probe is initiated (redis slave pod)master.readinessProbe.initialDelaySeconds
slave.readinessProbe.periodSecondsHow often to perform the probe (redis slave pod)master.readinessProbe.periodSeconds
slave.readinessProbe.timeoutSecondsWhen the probe times out (redis slave pod)master.readinessProbe.timeoutSeconds
slave.readinessProbe.successThresholdMinimum consecutive successes for the probe to be considered successful after having failed (redis slave pod)master.readinessProbe.successThreshold
slave.readinessProbe.failureThresholdMinimum consecutive failures for the probe to be considered failed after having succeeded. (redis slave pod)master.readinessProbe.failureThreshold
slave.podLabelsAdditional labels for Redis slave podmaster.podLabels
slave.podAnnotationsAdditional annotations for Redis slave podmaster.podAnnotations
slave.schedulerNameName of an alternate schedulernil
slave.securityContext.enabledEnable security context (redis slave pod)master.securityContext.enabled
slave.securityContext.fsGroupGroup ID for the container (redis slave pod)master.securityContext.fsGroup
slave.securityContext.runAsUserUser ID for the container (redis slave pod)master.securityContext.runAsUser
slave.resourcesRedis slave CPU/Memory resource requests/limitsmaster.resources
slave.affinityEnable node/pod affinity for slaves{}
slave.priorityClassNameRedis Slave pod priorityClassName{}
sysctlImage.enabledEnable an init container to modify Kernel settingsfalse
sysctlImage.commandsysctlImage command to execute[]
sysctlImage.registrysysctlImage Init container registrydocker.io
sysctlImage.repositorysysctlImage Init container namebitnami/minideb
sysctlImage.tagsysctlImage Init container taglatest
sysctlImage.pullPolicysysctlImage Init container pull policyAlways
sysctlImage.mountHostSysMount the host /sys folder to /host-sysfalse
sysctlImage.resourcessysctlImage Init container CPU/Memory resource requests/limits{}

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm install --name my-release \
  --set password=secretpassword \
    stable/redis

The above command sets the Redis server password to secretpassword.

Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,

$ helm install --name my-release -f values.yaml stable/redis

Tip: You can use the default values.yaml

Note for minikube users: Current versions of minikube (v0.24.1 at the time of writing) provision hostPath persistent volumes that are only writable by root. Using chart defaults cause pod failure for the Redis pod as it attempts to write to the /bitnami directory. Consider installing Redis with --set persistence.enabled=false. See minikube issue 1990 for more information.

NetworkPolicy

To enable network policy for Redis, install a networking plugin that implements the Kubernetes NetworkPolicy spec, and set networkPolicy.enabled to true.

For Kubernetes v1.5 & v1.6, you must also turn on NetworkPolicy by setting the DefaultDeny namespace annotation. Note: this will enforce policy for all pods in the namespace:

kubectl annotate namespace default "net.beta.kubernetes.io/network-policy={\"ingress\":{\"isolation\":\"DefaultDeny\"}}"

With NetworkPolicy enabled, only pods with the generated client label will be able to connect to Redis. This label will be displayed in the output after a successful install.

Persistence

By default, the chart mounts a Persistent Volume at the /data path. The volume is created using dynamic volume provisioning. If a Persistent Volume Claim already exists, specify it during installation.

Existing PersistentVolumeClaim

  1. Create the PersistentVolume
  2. Create the PersistentVolumeClaim
  3. Install the chart
$ helm install --set persistence.existingClaim=PVC_NAME stable/redis

Metrics

The chart optionally can start a metrics exporter for prometheus. The metrics endpoint (port 9121) is exposed in the service. Metrics can be scraped from within the cluster using something similar as the described in the example Prometheus scrape configuration. If metrics are to be scraped from outside the cluster, the Kubernetes API proxy can be utilized to access the endpoint.

Host Kernel Settings

Redis may require some changes in the kernel of the host machine to work as expected, in particular increasing the somaxconn value and disabling transparent huge pages. To do so, you can set up a privileged initContainer with the sysctlImage config values, for example:

sysctlImage:
  enabled: true
  mountHostSys: true
  command:
    - /bin/sh
    - -c
    - |-
      install_packages systemd
      sysctl -w net.core.somaxconn=10000
      echo never > /host-sys/kernel/mm/transparent_hugepage/enabled

Upgrade

To 6.0.0

Previous versions of the chart were using an init-container to change the permissions of the volumes. This was done in case the securityContext directive in the template was not enough for that (for example, with cephFS). In this new version of the chart, this container is disabled by default (which should not affect most of the deployments). If your installation still requires that init container, execute helm upgrade with the --set volumePermissions.enabled=true.

6.4.5-0.1.0

5 years ago

6.4.4-0.1.0

5 years ago

6.4.3-0.1.0

5 years ago

6.4.2-0.1.0

5 years ago

6.4.1-0.1.0

5 years ago

6.4.0-0.1.0

5 years ago

6.3.1-0.1.0

5 years ago

6.3.0-0.1.0

5 years ago

6.2.0-0.1.0

5 years ago

6.1.4-0.1.0

5 years ago

6.1.3-0.1.0

5 years ago

6.1.2-0.1.0

5 years ago

6.1.1-0.1.0

5 years ago

6.0.1-0.1.0

5 years ago

6.0.0-0.1.0

5 years ago

5.5.0-0.1.0

5 years ago

5.4.0-0.1.0

5 years ago

5.3.0-0.1.0

5 years ago

5.2.0-0.1.0

5 years ago

5.1.6-0.1.0

5 years ago

5.1.5-0.1.0

5 years ago

5.1.4-0.1.0

5 years ago

5.1.3-0.1.0

5 years ago

5.1.2-0.1.0

5 years ago

5.1.0-0.1.0

5 years ago

4.3.1-0.1.0

5 years ago

4.3.0-0.1.0

5 years ago

4.2.9-0.1.0

5 years ago

4.2.8-0.1.0

5 years ago

4.2.7-0.1.0

5 years ago

4.2.6-0.1.0

5 years ago

4.2.5-0.1.0

5 years ago

4.2.4-0.1.0

5 years ago

4.2.3-0.1.0

5 years ago

4.2.2-0.1.0

5 years ago

4.2.10-0.1.0

5 years ago

4.2.1-0.1.0

5 years ago

4.2.0-0.1.0

5 years ago

4.1.3-0.1.0

5 years ago

4.1.2-0.1.0

5 years ago

4.1.1-0.1.0

5 years ago

4.1.0-0.1.0

5 years ago

4.0.1-0.1.0

5 years ago

3.9.0-0.1.0

5 years ago

3.8.1-0.1.0

5 years ago

3.8.0-0.1.0

5 years ago

3.7.7-0.1.0

5 years ago

3.7.6-0.1.0

5 years ago

3.7.5-0.1.0

5 years ago

3.7.3-0.1.0

5 years ago

3.7.2-0.1.0

5 years ago

3.7.0-0.1.0

5 years ago

3.6.5-0.1.0

5 years ago

3.6.4-0.1.0

5 years ago

3.6.3-0.1.0

5 years ago

3.6.2-0.1.0

5 years ago

3.6.1-0.1.0

5 years ago

3.6.0-0.1.0

5 years ago

3.5.0-0.1.0

5 years ago

3.4.2-0.1.0

5 years ago

3.4.1-0.1.0

5 years ago

3.4.0-0.1.0

5 years ago

3.3.6-0.1.0

5 years ago

3.3.5-0.1.0

5 years ago

3.3.4-0.1.0

5 years ago

3.3.3-0.1.0

5 years ago

3.3.2-0.1.0

5 years ago

3.3.0-0.1.0

5 years ago

3.2.5-0.1.0

5 years ago

3.2.4-0.1.0

5 years ago

3.2.2-0.1.0

5 years ago

3.2.1-0.1.0

5 years ago

3.2.0-0.1.0

5 years ago

3.10.0-0.1.0

5 years ago

3.1.0-0.1.0

5 years ago

3.0.6-0.1.0

5 years ago

3.0.5-0.1.0

5 years ago

3.0.4-0.1.0

5 years ago

3.0.2-0.1.0

5 years ago

3.0.0-0.1.0

5 years ago

1.1.19-0.1.0

5 years ago

1.1.18-0.1.0

5 years ago

1.1.17-0.1.0

5 years ago

1.1.16-0.1.0

5 years ago

1.1.15-0.1.0

5 years ago

1.1.14-0.1.0

5 years ago

1.1.13-0.1.0

5 years ago

1.1.12-0.1.0

5 years ago