2019-01-30 21:23:17 +08:00
## Configure resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
image :
repository : redis
2020-05-28 21:06:43 +08:00
tag : 5.0 .6 -alpine
2019-01-30 21:23:17 +08:00
pullPolicy : IfNotPresent
2020-05-28 21:06:43 +08:00
## Reference to one or more secrets to be used when pulling images
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
## This imagePullSecrets is only for redis images
##
imagePullSecrets : [ ]
# - name: "image-pull-secret"
2019-01-30 21:23:17 +08:00
## replicas number for each component
replicas : 3
2020-05-28 21:06:43 +08:00
## Kubernetes priorityClass name for the redis-ha-server pod
# priorityClassName: ""
## Custom labels for the redis pod
labels : {}
## Pods Service Account
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
serviceAccount :
## Specifies whether a ServiceAccount should be created
##
create : true
## The name of the ServiceAccount to use.
## If not set and create is true, a name is generated using the redis-ha.fullname template
# name:
## Enables a HA Proxy for better LoadBalancing / Sentinel Master support. Automatically proxies to Redis master.
## Recommend for externally exposed Redis clusters.
## ref: https://cbonte.github.io/haproxy-dconv/1.9/intro.html
haproxy :
enabled : false
# Enable if you want a dedicated port in haproxy for redis-slaves
readOnly :
enabled : false
port : 6380
replicas : 3
image :
repository : haproxy
tag : 2.0 .4
pullPolicy : IfNotPresent
## Reference to one or more secrets to be used when pulling images
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
##
imagePullSecrets : [ ]
# - name: "image-pull-secret"
annotations : {}
resources : {}
emptyDir : {}
## Enable sticky sessions to Redis nodes via HAProxy
## Very useful for long-living connections as in case of Sentry for example
stickyBalancing : false
## Kubernetes priorityClass name for the haproxy pod
# priorityClassName: ""
## Service type for HAProxy
##
service :
type : ClusterIP
loadBalancerIP :
annotations : {}
serviceAccount :
create : true
## Official HAProxy embedded prometheus metrics settings.
## Ref: https://github.com/haproxy/haproxy/tree/master/contrib/prometheus-exporter
##
metrics :
enabled : false
# prometheus port & scrape path
port : 9101
portName : exporter-port
scrapePath : /metrics
serviceMonitor :
# When set true then use a ServiceMonitor to configure scraping
enabled : false
# Set the namespace the ServiceMonitor should be deployed
# namespace: monitoring
# Set how frequently Prometheus should scrape
# interval: 30s
# Set path to redis-exporter telemtery-path
# telemetryPath: /metrics
# Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
# labels: {}
# Set timeout for scrape
# timeout: 10s
init :
resources : {}
timeout :
connect : 4s
server : 30s
client : 30s
check : 2s
securityContext :
runAsUser : 1000
fsGroup : 1000
runAsNonRoot : true
## Whether the haproxy pods should be forced to run on separate nodes.
hardAntiAffinity : true
## Additional affinities to add to the haproxy pods.
additionalAffinities : {}
## Override all other affinity settings for the haproxy pods with a string.
affinity : |
## Custom config-haproxy.cfg files used to override default settings. If this file is
## specified then the config-haproxy.cfg above will be ignored.
# customConfig: |-
# Define configuration here
## Place any additional configuration section to add to the default config-haproxy.cfg
# extraConfig: |-
# Define configuration here
## Role Based Access
## Ref: https://kubernetes.io/docs/admin/authorization/rbac/
##
rbac :
create : true
sysctlImage :
enabled : false
command : [ ]
registry : docker.io
repository : busybox
tag : 1.31 .1
pullPolicy : Always
mountHostSys : false
resources : {}
## Use an alternate scheduler, e.g. "stork".
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
##
# schedulerName:
2019-01-30 21:23:17 +08:00
## Redis specific configuration options
redis :
port : 6379
2020-05-28 21:06:43 +08:00
masterGroupName : "mymaster" # must match ^[\\w-\\.]+$) and can be templated
2019-01-30 21:23:17 +08:00
config :
## Additional redis conf options can be added below
## For all available options see http://download.redis.io/redis-stable/redis.conf
2020-05-28 21:06:43 +08:00
min-replicas-to-write : 1
min-replicas-max-lag : 5 # Value in seconds
2019-01-30 21:23:17 +08:00
maxmemory : "0" # Max memory to use for each redis instance. Default is unlimited.
maxmemory-policy : "volatile-lru" # Max memory policy to use for each redis instance. Default is volatile-lru.
# Determines if scheduled RDB backups are created. Default is false.
# 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.
save : "900 1"
# When enabled, directly sends the RDB over the wire to slaves, without using the disk as intermediate storage. Default is false.
repl-diskless-sync : "yes"
rdbcompression : "yes"
rdbchecksum : "yes"
2020-05-28 21:06:43 +08:00
2019-01-30 21:23:17 +08:00
## Custom redis.conf files used to override default settings. If this file is
## specified then the redis.config above will be ignored.
# customConfig: |-
# Define configuration here
resources : {}
# requests:
# memory: 200Mi
# cpu: 100m
# limits:
# memory: 700Mi
## Sentinel specific configuration options
sentinel :
port : 26379
quorum : 2
config :
## Additional sentinel conf options can be added below. Only options that
## are expressed in the format simialar to 'sentinel xxx mymaster xxx' will
2020-05-28 21:06:43 +08:00
## be properly templated expect maxclients option.
2019-01-30 21:23:17 +08:00
## For available options see http://download.redis.io/redis-stable/sentinel.conf
down-after-milliseconds : 10000
## Failover timeout value in milliseconds
failover-timeout : 180000
parallel-syncs : 5
2020-05-28 21:06:43 +08:00
maxclients : 10000
2019-01-30 21:23:17 +08:00
## Custom sentinel.conf files used to override default settings. If this file is
## specified then the sentinel.config above will be ignored.
# customConfig: |-
# Define configuration here
resources : {}
# requests:
# memory: 200Mi
# cpu: 100m
# limits:
# memory: 200Mi
securityContext :
runAsUser : 1000
fsGroup : 1000
runAsNonRoot : true
## Node labels, affinity, 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
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
2020-05-28 21:06:43 +08:00
nodeSelector : {}
## Whether the Redis server pods should be forced to run on separate nodes.
## This is accomplished by setting their AntiAffinity with requiredDuringSchedulingIgnoredDuringExecution as opposed to preferred.
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity-beta-feature
##
hardAntiAffinity : true
## Additional affinities to add to the Redis server pods.
##
## Example:
## nodeAffinity:
## preferredDuringSchedulingIgnoredDuringExecution:
## - weight: 50
## preference:
## matchExpressions:
## - key: spot
## operator: NotIn
## values:
## - "true"
##
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
additionalAffinities : {}
## Override all other affinity settings for the Redis server pods with a string.
##
## Example:
## affinity: |
## podAntiAffinity:
## requiredDuringSchedulingIgnoredDuringExecution:
## - labelSelector:
## matchLabels:
## app: {{ template "redis-ha.name" . }}
## release: {{ .Release.Name }}
## topologyKey: kubernetes.io/hostname
## preferredDuringSchedulingIgnoredDuringExecution:
## - weight: 100
## podAffinityTerm:
## labelSelector:
## matchLabels:
## app: {{ template "redis-ha.name" . }}
## release: {{ .Release.Name }}
## topologyKey: failure-domain.beta.kubernetes.io/zone
##
2019-01-30 21:23:17 +08:00
affinity : |
2020-05-28 21:06:43 +08:00
# Prometheus exporter specific configuration options
exporter :
enabled : false
image : oliver006/redis_exporter
tag : v1.3.2
pullPolicy : IfNotPresent
# prometheus port & scrape path
port : 9121
scrapePath : /metrics
# cpu/memory resource limits/requests
resources : {}
# Additional args for redis exporter
extraArgs : {}
# Used to mount a LUA-Script via config map and use it for metrics-collection
# script: |
# -- Example script copied from: https://github.com/oliver006/redis_exporter/blob/master/contrib/sample_collect_script.lua
# -- Example collect script for -script option
# -- This returns a Lua table with alternating keys and values.
# -- Both keys and values must be strings, similar to a HGETALL result.
# -- More info about Redis Lua scripting: https://redis.io/commands/eval
#
# local result = {}
#
# -- Add all keys and values from some hash in db 5
# redis.call("SELECT", 5)
# local r = redis.call("HGETALL", "some-hash-with-stats")
# if r ~= nil then
# for _,v in ipairs(r) do
# table.insert(result, v) -- alternating keys and values
# end
# end
#
# -- Set foo to 42
# table.insert(result, "foo")
# table.insert(result, "42") -- note the string, use tostring() if needed
#
# return result
serviceMonitor :
# When set true then use a ServiceMonitor to configure scraping
enabled : false
# Set the namespace the ServiceMonitor should be deployed
# namespace: monitoring
# Set how frequently Prometheus should scrape
# interval: 30s
# Set path to redis-exporter telemtery-path
# telemetryPath: /metrics
# Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
# labels: {}
# Set timeout for scrape
# timeout: 10s
2019-01-30 21:23:17 +08:00
podDisruptionBudget : {}
# maxUnavailable: 1
# minAvailable: 1
## Configures redis with AUTH (requirepass & masterauth conf params)
auth : false
# redisPassword:
2020-05-28 21:06:43 +08:00
## Use existing secret containing key `authKey` (ignores redisPassword)
2019-01-30 21:23:17 +08:00
# existingSecret:
2020-05-28 21:06:43 +08:00
## Defines the key holding the redis password in existing secret.
authKey : auth
2019-01-30 21:23:17 +08:00
persistentVolume :
enabled : true
## redis-ha 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 : 10Gi
annotations : {}
2020-05-28 21:06:43 +08:00
# reclaimPolicy per https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reclaiming
reclaimPolicy : ""
2019-01-30 21:23:17 +08:00
init :
resources : {}
2020-05-28 21:06:43 +08:00
# To use a hostPath for data, set persistentVolume.enabled to false
# and define hostPath.path.
# Warning: this might overwrite existing folders on the host system!
hostPath :
## path is evaluated as template so placeholders are replaced
# path: "/data/{{ .Release.Name }}"
# if chown is true, an init-container with root permissions is launched to
# change the owner of the hostPath folder to the user defined in the
# security context
chown : true
emptyDir : {}