deploy-redis-cluster.yaml 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. ---
  2. apiVersion: v1
  3. kind: ConfigMap
  4. metadata:
  5. name: redis-cluster
  6. namespace: qa
  7. data:
  8. update.sh: |
  9. #!/bin/sh
  10. REDIS_NODES="/data/nodes.conf"
  11. 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}
  12. exec "$@"
  13. redis.conf: |+
  14. bind 0.0.0.0
  15. cluster-enabled yes
  16. cluster-require-full-coverage no
  17. cluster-node-timeout 30000
  18. cluster-config-file /data/nodes.conf
  19. cluster-migration-barrier 1
  20. appendonly yes
  21. protected-mode no
  22. ---
  23. apiVersion: apps.kruise.io/v1beta1
  24. # apiVersion: apps/v1
  25. kind: StatefulSet
  26. metadata:
  27. name: redis-cluster
  28. namespace: qa
  29. spec:
  30. serviceName: redis-cluster
  31. replicas: 6
  32. selector:
  33. matchLabels:
  34. app: redis-cluster
  35. template:
  36. metadata:
  37. labels:
  38. app: redis-cluster
  39. spec:
  40. containers:
  41. - name: redis
  42. image: redis:6.2.1-alpine
  43. ports:
  44. - containerPort: 6379
  45. name: client
  46. - containerPort: 16379
  47. name: gossip
  48. command: ["/conf/update.sh", "redis-server", "/conf/redis.conf"]
  49. env:
  50. - name: POD_IP
  51. valueFrom:
  52. fieldRef:
  53. fieldPath: status.podIP
  54. volumeMounts:
  55. - name: conf
  56. mountPath: /conf
  57. readOnly: false
  58. - name: data
  59. mountPath: /data
  60. readOnly: false
  61. volumes:
  62. - name: conf
  63. configMap:
  64. name: redis-cluster
  65. defaultMode: 0755
  66. volumeClaimTemplates:
  67. - metadata:
  68. name: data
  69. spec:
  70. accessModes: [ "ReadWriteOnce" ]
  71. resources:
  72. requests:
  73. storage: 100Gi
  74. storageClassName: rbd
  75. ---
  76. apiVersion: v1
  77. kind: Service
  78. metadata:
  79. name: redis-cluster
  80. namespace: qa
  81. spec:
  82. type: ClusterIP
  83. ports:
  84. - port: 6379
  85. targetPort: 6379
  86. name: client
  87. - port: 16379
  88. targetPort: 16379
  89. name: gossip
  90. selector:
  91. app: redis-cluster
  92. ---
  93. apiVersion: v1
  94. kind: Service
  95. metadata:
  96. name: redis-cluster-client
  97. namespace: qa
  98. spec:
  99. type: NodePort
  100. ports:
  101. - port: 6379
  102. targetPort: 6379
  103. name: client
  104. nodePort: 30379
  105. selector:
  106. app: redis-cluster