|
@@ -0,0 +1,106 @@
|
|
|
+---
|
|
|
+apiVersion: v1
|
|
|
+kind: ConfigMap
|
|
|
+metadata:
|
|
|
+ name: redis-cluster
|
|
|
+ namespace: qa
|
|
|
+data:
|
|
|
+ update.sh: |
|
|
|
+ #!/bin/sh
|
|
|
+ REDIS_NODES="/data/nodes.conf"
|
|
|
+ sed -i -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${REDIS_NODES}
|
|
|
+ exec "$@"
|
|
|
+ redis.conf: |+
|
|
|
+ bind 0.0.0.0
|
|
|
+ cluster-enabled yes
|
|
|
+ cluster-require-full-coverage no
|
|
|
+ cluster-node-timeout 30000
|
|
|
+ cluster-config-file /data/nodes.conf
|
|
|
+ cluster-migration-barrier 1
|
|
|
+ appendonly yes
|
|
|
+ protected-mode no
|
|
|
+---
|
|
|
+apiVersion: apps.kruise.io/v1beta1
|
|
|
+# apiVersion: apps/v1
|
|
|
+kind: StatefulSet
|
|
|
+metadata:
|
|
|
+ name: redis-cluster
|
|
|
+ namespace: qa
|
|
|
+spec:
|
|
|
+ serviceName: redis-cluster
|
|
|
+ replicas: 6
|
|
|
+ selector:
|
|
|
+ matchLabels:
|
|
|
+ app: redis-cluster
|
|
|
+ template:
|
|
|
+ metadata:
|
|
|
+ labels:
|
|
|
+ app: redis-cluster
|
|
|
+ spec:
|
|
|
+ containers:
|
|
|
+ - name: redis
|
|
|
+ image: redis:6.2.1-alpine
|
|
|
+ ports:
|
|
|
+ - containerPort: 6379
|
|
|
+ name: client
|
|
|
+ - containerPort: 16379
|
|
|
+ name: gossip
|
|
|
+ command: ["/conf/update.sh", "redis-server", "/conf/redis.conf"]
|
|
|
+ env:
|
|
|
+ - name: POD_IP
|
|
|
+ valueFrom:
|
|
|
+ fieldRef:
|
|
|
+ fieldPath: status.podIP
|
|
|
+ volumeMounts:
|
|
|
+ - name: conf
|
|
|
+ mountPath: /conf
|
|
|
+ readOnly: false
|
|
|
+ - name: data
|
|
|
+ mountPath: /data
|
|
|
+ readOnly: false
|
|
|
+ volumes:
|
|
|
+ - name: conf
|
|
|
+ configMap:
|
|
|
+ name: redis-cluster
|
|
|
+ defaultMode: 0755
|
|
|
+ volumeClaimTemplates:
|
|
|
+ - metadata:
|
|
|
+ name: data
|
|
|
+ spec:
|
|
|
+ accessModes: [ "ReadWriteOnce" ]
|
|
|
+ resources:
|
|
|
+ requests:
|
|
|
+ storage: 100Gi
|
|
|
+ storageClassName: rbd
|
|
|
+---
|
|
|
+apiVersion: v1
|
|
|
+kind: Service
|
|
|
+metadata:
|
|
|
+ name: redis-cluster
|
|
|
+ namespace: qa
|
|
|
+spec:
|
|
|
+ type: ClusterIP
|
|
|
+ ports:
|
|
|
+ - port: 6379
|
|
|
+ targetPort: 6379
|
|
|
+ name: client
|
|
|
+ - port: 16379
|
|
|
+ targetPort: 16379
|
|
|
+ name: gossip
|
|
|
+ selector:
|
|
|
+ app: redis-cluster
|
|
|
+---
|
|
|
+apiVersion: v1
|
|
|
+kind: Service
|
|
|
+metadata:
|
|
|
+ name: redis-cluster-client
|
|
|
+ namespace: qa
|
|
|
+spec:
|
|
|
+ type: NodePort
|
|
|
+ ports:
|
|
|
+ - port: 6379
|
|
|
+ targetPort: 6379
|
|
|
+ name: client
|
|
|
+ nodePort: 30379
|
|
|
+ selector:
|
|
|
+ app: redis-cluster
|