Helm Chart for Redis

Abstract

Helm Template documentation master file, created by sphinx-quickstart on Sun Apr 28 15:35:08 2024. You can adapt this file completely to your liking, but it should at least contain the root toctree directive.

Helm Chart for Redis#

Indices and tables#

Usage#

Adjust the behavior of the deployment using the values file, documented below.

Chart#

apiVersion

API Version


The Helm API version to use for this chart.

apiVersion: v2
appVersion

App Version


This is the version number of the application being deployed. This version number should be incremented each time you make changes to the application. Versions are not expected to follow Semantic Versioning.

They should reflect the version the application is using.

It is recommended to use it with quotes.

appVersion: "7.4.0"
description

Description


A brief description of the Chart.

description: A Helm chart that will deploy Redis to a Kubernetes cluster.
icon

Icon


A url or file path to an icon for the Chart’s application.

icon: https://edwardtheharris.github.io/helm-redis/_static/redis.png
name

Name


The name of the application or library provided by the chart.

name: redis
type

Type


A chart can be either an ‘application’ or a ‘library’ chart.

Application charts are a collection of templates that can be packaged into versioned archives to be deployed.

Library charts provide useful utilities or functions for the chart developer. They’re included as a dependency of application charts to inject those utilities and functions into the rendering pipeline. Library charts do not define any templates and therefore cannot be deployed.

type: application
version

Version


This is the chart version. This version number should be incremented each time you make changes to the chart and its templates, including the app version. Versions are expected to follow Semantic Versioning (https://semver.org/)

version: 0.0.4

Values#

affinity

Redis Chart Default Values


This values file provides reasonable defaults for a Redis deployment.

This is a YAML-formatted file.

Declare variables to be passed into your templates.

affinity example#
nodeAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
    nodeSelectorTerms:
    - matchExpressions:
      - key: kubernetes.io/os
        operator: In
        values:
        - linux
affinity: {}
fullnameOverride: "redis"
image:
  pullPolicy: IfNotPresent
  repository: redis
  # Overrides the image tag whose default is the chart appVersion.
  tag: "alpine"
imagePullSecrets: []
labels:
  app.kubernetes.io/component: datastore
  app.kubernetes.io/instance: redis
  app.kubernetes.io/name: redis
livenessProbe:
  exec:
    command:
    - redis-cli
    - ping
  # When to give up and restart the container
  failureThreshold: 3
  # Delay before the first probe is initiated
  initialDelaySeconds: 30
  # How often to perform the probe
  periodSeconds: 10
  # Minimum consecutive successes for the probe to be considered successful after having failed
  successThreshold: 1
  # When the probe times out
  timeoutSeconds: 5
nameOverride: ""
nodeSelector:
  kubernetes.io/hostname: k8s02.breeze-blocks.net
persistence:
  name: redis
  storageClass: csi-lvm-linear
podAnnotations: {}
podLabels:
  app.kubernetes.io/component: datastore
  app.kubernetes.io/instance: redis
  app.kubernetes.io/name: redis
podSecurityContext: {}
# fsGroup: 2000
readinessProbe:
  exec:
    command:
    - redis-cli
    - ping
  # When to give up, marking the Pod as Unready
  failureThreshold: 3
  # Delay before the first probe is initiated, can be shorter than liveness probe
  initialDelaySeconds: 5
  # How often to perform the probe
  periodSeconds: 5
  # Minimum consecutive successes for the probe to be considered successful
  successThreshold: 1
  timeoutSeconds: 1 # When the probe times out
replicaCount: 1
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:’.

resources example#
  limits:
    cpu: 100m
    memory: 128Mi
    storage: 50Gi
  requests:
    cpu: 100m
    memory: 128Mi
    storage: 5Gi
resources:
  limits:
    cpu: 1
    memory: 2048Mi
  requests:
    cpu: 500m
    memory: 512Mi
    storage: 5Gi
securityContext

Security and Service


Restrict capabilities and access for pods.

security context example#
capabilities:
  drop:
  - ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
securityContext: {}
service:
  name: redis
  port: 6379
  type: LoadBalancer
  loadBalancerIP: 192.168.5.5
  externalIPs:
  - 192.168.5.12
serviceAccount:
  # Annotations to add to the service account
  annotations:
    app.kubernetes.io/name: redis
    app.kubernetes.io/instance: redis
  # Automatically mount a ServiceAccount's API credentials?
  automount: true
  # Specifies whether a service account should be created
  create: true
  # The name of the service account to use.
  # If not set and create is true, a name is generated
  # using the fullname template
  name: redis
tolerations: []
type: StatefulSet
volumeMounts

Volume Mounts


Additional volumeMounts on the output Deployment definition.

volume mounts example#
- mountPath: "/data"
  name: redis
  readOnly: false
volumeMounts: []
volumes

Volumes


Additional volumes on the output Deployment definition.

volumes example#
- name: foo
  secret:
    secretName: mysecret
    optional: false
- mountPath: "/mnt/usb/redis"
  name: redis
  readOnly: false
volumes: []