mirror of
https://github.com/marcel-dempers/docker-development-youtube-series.git
synced 2025-06-06 17:01:30 +00:00
90 lines
2.4 KiB
YAML
90 lines
2.4 KiB
YAML
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: sentinel
|
|
spec:
|
|
serviceName: sentinel
|
|
replicas: 3
|
|
selector:
|
|
matchLabels:
|
|
app: sentinel
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: sentinel
|
|
spec:
|
|
initContainers:
|
|
- name: config
|
|
image: redis:7.0.10-alpine
|
|
command: [ "sh", "-c" ]
|
|
args:
|
|
- |
|
|
REDIS_PASSWORD=a-very-complex-password-here
|
|
nodes=redis-0.redis,redis-1.redis,redis-2.redis
|
|
loop=$(echo $nodes | sed -e "s/,/\n/g")
|
|
|
|
for i in $loop
|
|
do
|
|
echo "finding master at $i"
|
|
MASTER=$(redis-cli --no-auth-warning --raw -h $i -a $REDIS_PASSWORD info replication | awk '{print $1}' | grep master_host: | cut -d ":" -f2)
|
|
if [ "$MASTER" = "" ]; then
|
|
echo "no master found"
|
|
MASTER=
|
|
else
|
|
echo "found $MASTER"
|
|
break
|
|
fi
|
|
done
|
|
echo "sentinel monitor mymaster $MASTER 6379 2" >> /tmp/master
|
|
echo "port 5000
|
|
sentinel resolve-hostnames yes
|
|
sentinel announce-hostnames yes
|
|
$(cat /tmp/master)
|
|
sentinel down-after-milliseconds mymaster 5000
|
|
sentinel failover-timeout mymaster 60000
|
|
sentinel parallel-syncs mymaster 1
|
|
sentinel auth-pass mymaster $REDIS_PASSWORD
|
|
" > /etc/redis/sentinel.conf
|
|
cat /etc/redis/sentinel.conf
|
|
volumeMounts:
|
|
- name: redis-config
|
|
mountPath: /etc/redis/
|
|
containers:
|
|
- name: sentinel
|
|
image: redis:7.0.10-alpine
|
|
command: ["redis-sentinel"]
|
|
args: ["/etc/redis/sentinel.conf"]
|
|
ports:
|
|
- containerPort: 5000
|
|
name: sentinel
|
|
volumeMounts:
|
|
- name: redis-config
|
|
mountPath: /etc/redis/
|
|
- name: data
|
|
mountPath: /data
|
|
volumes:
|
|
- name: redis-config
|
|
emptyDir: {}
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: data
|
|
spec:
|
|
accessModes: [ "ReadWriteOnce" ]
|
|
storageClassName: "standard"
|
|
resources:
|
|
requests:
|
|
storage: 64Mi
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: sentinel
|
|
spec:
|
|
clusterIP: None
|
|
ports:
|
|
- port: 5000
|
|
targetPort: 5000
|
|
name: sentinel
|
|
selector:
|
|
app: sentinel
|