All tools / Kubernetes examples
Redis on Kubernetes
Redis as a StatefulSet with a password, append-only persistence on a volume, and health checks.
Customize names, versions and passwords →
redis.yaml
apiVersion: v1
kind: Secret
metadata:
name: redis
namespace: default
type: Opaque
stringData:
REDIS_PASSWORD: "change-me"
---
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: default
spec:
clusterIP: None
selector:
app: redis
ports:
- name: redis
port: 6379
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
namespace: default
spec:
serviceName: redis
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
securityContext:
fsGroup: 999
containers:
- name: redis
image: redis:7.4
args: ["redis-server", "--appendonly", "yes", "--requirepass", "$(REDIS_PASSWORD)"]
ports:
- name: redis
containerPort: 6379
envFrom:
- secretRef:
name: redis
readinessProbe:
exec:
command: ["sh", "-c", "redis-cli --no-auth-warning -a \"$REDIS_PASSWORD\" ping | grep PONG"]
periodSeconds: 10
livenessProbe:
tcpSocket:
port: redis
initialDelaySeconds: 15
periodSeconds: 20
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
memory: 512Mi
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
Passwords here are placeholders (change-me). The generator creates random ones for you.
How to use it
Commands
kubectl apply -f redis.yaml kubectl -n default get pods -w
- Apps connect to redis://:<password>@redis.default.svc.cluster.local:6379.
Prefer Docker Compose? See the Redis Docker Compose version.