# Redis Standalone
The redis setup in standalone mode can be customized using custom configuration. If redis setup is done by Helm, in that case values.yaml
can be updated.
But if the setup is not done via Helm, in that scenario we may have to customize the CRD parameters.
In this configuration section, we have these configuration parameters:-
# Helm Parameters
Name | Value | Description |
---|---|---|
imagePullSecrets | [] | List of image pull secrets, in case redis image is getting pull from private registry |
redisStandalone.secretName | redis-secret | Name of the existing secret in Kubernetes |
redisStandalone.secretKey | password | Name of the existing secret key in Kubernetes |
redisStandalone.image | quay.io/opstree/redis | Name of the redis image |
redisStandalone.tag | v6.2 | Tag of the redis image |
redisStandalone.imagePullPolicy | IfNotPresent | Image Pull Policy of the redis image |
redisStandalone.resources | {} | Request and limits for redis statefulset |
externalService.enabled | false | If redis service needs to be exposed using LoadBalancer or NodePort |
externalService.annotations | {} | Kubernetes service related annotations |
externalService.serviceType | NodePort | Kubernetes service type for exposing service, values - ClusterIP, NodePort, and LoadBalancer |
externalService.port | 6379 | Port number on which redis external service should be exposed |
serviceMonitor.enabled | false | Servicemonitor to monitor redis with Prometheus |
serviceMonitor.interval | 30s | Interval at which metrics should be scraped. |
serviceMonitor.scrapeTimeout | 10s | Timeout after which the scrape is ended |
serviceMonitor.namespace | monitoring | Namespace in which Prometheus operator is running |
redisExporter.enabled | true | Redis exporter should be deployed or not |
redisExporter.image | quay.io/opstree/redis-exporter | Name of the redis exporter image |
redisExporter.tag | v6.2 | Tag of the redis exporter image |
redisExporter.imagePullPolicy | IfNotPresent | Image Pull Policy of the redis exporter image |
redisExporter.env | [] | Extra environment variables which needs to be added in redis exporter |
nodeSelector | {} | NodeSelector for redis statefulset |
priorityClassName | "" | Priority class name for the redis statefulset |
storageSpec | {} | Storage configuration for redis setup |
securityContext | {} | Security Context for redis pods for changing system or kernel level parameters |
affinity | {} | Affinity for node and pod for redis statefulset |
tolerations | [] | Tolerations for redis statefulset |
sidecars | [] | Sidecar for redis pods |
# CRD Parameters
These are the CRD Parameters which is currently supported by Redis Exporter for standalone CRD.
kubernetesConfig
In the kubernetesConfig
section, we define configuration related to Kubernetes.
spec:
kubernetesConfig:
image: quay.io/opstree/redis:v6.2
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 101m
memory: 128Mi
limits:
cpu: 101m
memory: 128Mi
redisSecret:
name: redis-secret
key: password
imagePullSecrets:
- name: regcred
redisExporter
redisExporter
configuration which enable the metrics for Redis Database to get monitored by Prometheus.
spec:
redisExporter:
enabled: true
image: quay.io/opstree/redis-exporter:1.0
imagePullPolicy: Always
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 100m
memory: 128Mi
env:
- name: REDIS_EXPORTER_INCL_SYSTEM_METRICS
value: "true"
- name: UI_PROPERTIES_FILE_NAME
valueFrom:
configMapKeyRef:
name: game-demo
key: ui_properties_file_name
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: username
storage
storage
configuration for Redis Statefulset pods.
spec:
storage:
volumeClaimTemplate:
spec:
storageClassName: standard
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi
priorityClassName
Name of the Kubernetes priority class which you want to associate with redis setup.
spec:
priorityClassName: priority-100
nodeSelector
Map of the labels which you want to use as nodeSelector.
spec:
nodeSelector:
kubernetes.io/hostname: minikube
securityContext
Kubernetes security context for redis pods.
spec:
securityContext:
runAsUser: 1000
affinity
Affinity for node and pod for redis setup.
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
tolerations
Tolerations for nodes and pods in Kubernetes.
spec:
tolerations:
- key: "key1"
operator: "Equal"
value: "value1"
effect: "NoSchedule"
sidecars
Sidecars for redis pods
spec:
sidecars:
- name: "sidecar1"
image: "image:1.0"
imagePullPolicy: Always
resources:
limits:
cpu: 50m
memory: 64Mi
requests:
cpu: 10m
memory: 32M
env:
- name: VAR_NAME
value: "value1"
pdb
PodDisruptionBugets for redis standalone pods
spec:
pdb:
enabled: true
maxUnavailable: 1
minAvailable: 1
probes
Probes for redis standalone pods
spec:
readinessProbe:
failureThreshold: 5
initialDelaySeconds: 15
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 5
livenessProbe:
failureThreshold: 5
initialDelaySeconds: 15
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 5
TLS
TLS configuration for redis standalone
spec:
TLS:
ca: ca.key
cert: tls.crt
key: tls.key
secret:
secretName: sample-cert