--- apiVersion: v1 kind: ServiceAccount automountServiceAccountToken: true metadata: name: helm-redis namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus --- apiVersion: v1 kind: Secret metadata: name: helm-redis namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus type: Opaque data: redis-password: "TWNhY2hlQDQ1MjI=" --- apiVersion: v1 kind: ConfigMap metadata: name: helm-redis-configuration namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus data: redis.conf: |- # User-supplied common configuration: # Enable AOF https://redis.io/topics/persistence#append-only-file appendonly yes # Disable RDB persistence, AOF persistence already enabled. save "" # End of common configuration master.conf: |- dir /data # User-supplied master configuration: rename-command FLUSHDB "" rename-command FLUSHALL "" # End of master configuration replica.conf: |- dir /data slave-read-only yes # User-supplied replica configuration: rename-command FLUSHDB "" rename-command FLUSHALL "" # End of replica configuration --- # Source: outside-deploy/charts/redis-db/templates/health-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: helm-redis-health namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus data: ping_readiness_local.sh: |- #!/bin/bash [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD" response=$( timeout -s 3 $1 \ redis-cli \ -h localhost \ -p $REDIS_PORT \ ping ) if [ "$response" != "PONG" ]; then echo "$response" exit 1 fi ping_liveness_local.sh: |- #!/bin/bash [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD" response=$( timeout -s 3 $1 \ redis-cli \ -h localhost \ -p $REDIS_PORT \ ping ) if [ "$response" != "PONG" ] && [ "$response" != "LOADING Redis is loading the dataset in memory" ]; then echo "$response" exit 1 fi ping_readiness_master.sh: |- #!/bin/bash [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD" response=$( timeout -s 3 $1 \ redis-cli \ -h $REDIS_MASTER_HOST \ -p $REDIS_MASTER_PORT_NUMBER \ ping ) if [ "$response" != "PONG" ]; then echo "$response" exit 1 fi ping_liveness_master.sh: |- #!/bin/bash [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD" response=$( timeout -s 3 $1 \ redis-cli \ -h $REDIS_MASTER_HOST \ -p $REDIS_MASTER_PORT_NUMBER \ ping ) if [ "$response" != "PONG" ] && [ "$response" != "LOADING Redis is loading the dataset in memory" ]; then echo "$response" exit 1 fi ping_readiness_local_and_master.sh: |- script_dir="$(dirname "$0")" exit_status=0 "$script_dir/ping_readiness_local.sh" $1 || exit_status=$? "$script_dir/ping_readiness_master.sh" $1 || exit_status=$? exit $exit_status ping_liveness_local_and_master.sh: |- script_dir="$(dirname "$0")" exit_status=0 "$script_dir/ping_liveness_local.sh" $1 || exit_status=$? "$script_dir/ping_liveness_master.sh" $1 || exit_status=$? exit $exit_status --- # Source: outside-deploy/charts/redis-db/templates/scripts-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: helm-redis-scripts namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus data: start-master.sh: | #!/bin/bash [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" if [[ ! -f /opt/bitnami/redis/etc/master.conf ]];then cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf fi if [[ ! -f /opt/bitnami/redis/etc/redis.conf ]];then cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf fi ARGS=("--port" "${REDIS_PORT}") ARGS+=("--requirepass" "${REDIS_PASSWORD}") ARGS+=("--masterauth" "${REDIS_PASSWORD}") ARGS+=("--include" "/opt/bitnami/redis/etc/redis.conf") ARGS+=("--include" "/opt/bitnami/redis/etc/master.conf") exec redis-server "${ARGS[@]}" start-replica.sh: | #!/bin/bash get_port() { hostname="$1" type="$2" port_var=$(echo "${hostname^^}_SERVICE_PORT_$type" | sed "s/-/_/g") port=${!port_var} if [ -z "$port" ]; then case $type in "SENTINEL") echo 26379 ;; "REDIS") echo 6379 ;; esac else echo $port fi } get_full_hostname() { hostname="$1" echo "${hostname}.${HEADLESS_SERVICE}" } REDISPORT=$(get_port "$HOSTNAME" "REDIS") [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" if [[ ! -f /opt/bitnami/redis/etc/replica.conf ]];then cp /opt/bitnami/redis/mounted-etc/replica.conf /opt/bitnami/redis/etc/replica.conf fi if [[ ! -f /opt/bitnami/redis/etc/redis.conf ]];then cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf fi echo "" >> /opt/bitnami/redis/etc/replica.conf echo "replica-announce-port $REDISPORT" >> /opt/bitnami/redis/etc/replica.conf echo "replica-announce-ip $(get_full_hostname "$HOSTNAME")" >> /opt/bitnami/redis/etc/replica.conf ARGS=("--port" "${REDIS_PORT}") ARGS+=("--slaveof" "${REDIS_MASTER_HOST}" "${REDIS_MASTER_PORT_NUMBER}") ARGS+=("--requirepass" "${REDIS_PASSWORD}") ARGS+=("--masterauth" "${REDIS_MASTER_PASSWORD}") ARGS+=("--include" "/opt/bitnami/redis/etc/redis.conf") ARGS+=("--include" "/opt/bitnami/redis/etc/replica.conf") exec redis-server "${ARGS[@]}" --- # Source: outside-deploy/charts/redis-db/templates/headless-svc.yaml apiVersion: v1 kind: Service metadata: name: helm-redis-headless namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus spec: type: ClusterIP clusterIP: None ports: - name: tcp-redis port: 6379 targetPort: redis selector: app.kubernetes.io/name: redis-db app.kubernetes.io/release: zhhq --- # Source: outside-deploy/charts/redis-db/templates/master/service.yaml apiVersion: v1 kind: Service metadata: name: helm-redis-master namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus cmii.type: middleware cmii.app: redis app.kubernetes.io/component: master spec: type: ClusterIP ports: - name: tcp-redis port: 6379 targetPort: redis nodePort: null selector: app.kubernetes.io/name: redis-db app.kubernetes.io/release: zhhq cmii.type: middleware cmii.app: redis app.kubernetes.io/component: master --- # Source: outside-deploy/charts/redis-db/templates/replicas/service.yaml apiVersion: v1 kind: Service metadata: name: helm-redis-replicas namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus app.kubernetes.io/component: replica spec: type: ClusterIP ports: - name: tcp-redis port: 6379 targetPort: redis nodePort: null selector: app.kubernetes.io/name: redis-db app.kubernetes.io/release: zhhq app.kubernetes.io/component: replica --- # Source: outside-deploy/charts/redis-db/templates/master/statefulset.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: helm-redis-master namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus cmii.type: middleware cmii.app: redis app.kubernetes.io/component: master spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: redis-db app.kubernetes.io/release: zhhq cmii.type: middleware cmii.app: redis app.kubernetes.io/component: master serviceName: helm-redis-headless updateStrategy: rollingUpdate: { } type: RollingUpdate template: metadata: labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus cmii.type: middleware cmii.app: redis app.kubernetes.io/component: master annotations: checksum/configmap: b64aa5db67e6e63811f3c1095b9fce34d83c86a471fccdda0e48eedb53a179b0 checksum/health: 6e0a6330e5ac63e565ae92af1444527d72d8897f91266f333555b3d323570623 checksum/scripts: b88df93710b7c42a76006e20218f05c6e500e6cc2affd4bb1985832f03166e98 checksum/secret: 43f1b0e20f9cb2de936bd182bc3683b720fc3cf4f4e76cb23c06a52398a50e8d spec: affinity: { } securityContext: fsGroup: 1001 serviceAccountName: helm-redis imagePullSecrets: - name: harborsecret terminationGracePeriodSeconds: 30 containers: - name: redis image: 10.129.80.218:8033/cmii/redis:6.2.6-debian-10-r0 imagePullPolicy: "Always" securityContext: runAsUser: 1001 command: - /bin/bash args: - -c - /opt/bitnami/scripts/start-scripts/start-master.sh env: - name: BITNAMI_DEBUG value: "false" - name: REDIS_REPLICATION_MODE value: master - name: ALLOW_EMPTY_PASSWORD value: "no" - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: helm-redis key: redis-password - name: REDIS_TLS_ENABLED value: "no" - name: REDIS_PORT value: "6379" ports: - name: redis containerPort: 6379 livenessProbe: initialDelaySeconds: 20 periodSeconds: 5 # One second longer than command timeout should prevent generation of zombie processes. timeoutSeconds: 6 successThreshold: 1 failureThreshold: 5 exec: command: - sh - -c - /health/ping_liveness_local.sh 5 readinessProbe: initialDelaySeconds: 20 periodSeconds: 5 timeoutSeconds: 2 successThreshold: 1 failureThreshold: 5 exec: command: - sh - -c - /health/ping_readiness_local.sh 1 resources: limits: cpu: "2" memory: 8Gi requests: cpu: "2" memory: 8Gi volumeMounts: - name: start-scripts mountPath: /opt/bitnami/scripts/start-scripts - name: health mountPath: /health - name: redis-data mountPath: /data subPath: - name: config mountPath: /opt/bitnami/redis/mounted-etc - name: redis-tmp-conf mountPath: /opt/bitnami/redis/etc/ - name: tmp mountPath: /tmp volumes: - name: start-scripts configMap: name: helm-redis-scripts defaultMode: 0755 - name: health configMap: name: helm-redis-health defaultMode: 0755 - name: config configMap: name: helm-redis-configuration - name: redis-tmp-conf emptyDir: { } - name: tmp emptyDir: { } - name: redis-data emptyDir: { } --- # Source: outside-deploy/charts/redis-db/templates/replicas/statefulset.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: helm-redis-replicas namespace: zhhq labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus app.kubernetes.io/component: replica spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: redis-db app.kubernetes.io/release: zhhq app.kubernetes.io/component: replica serviceName: helm-redis-headless updateStrategy: rollingUpdate: { } type: RollingUpdate template: metadata: labels: app.kubernetes.io/name: redis-db octopus.control: redis-db-wdd app.kubernetes.io/release: zhhq app.kubernetes.io/managed-by: octopus app.kubernetes.io/component: replica annotations: checksum/configmap: b64aa5db67e6e63811f3c1095b9fce34d83c86a471fccdda0e48eedb53a179b0 checksum/health: 6e0a6330e5ac63e565ae92af1444527d72d8897f91266f333555b3d323570623 checksum/scripts: b88df93710b7c42a76006e20218f05c6e500e6cc2affd4bb1985832f03166e98 checksum/secret: 43f1b0e20f9cb2de936bd182bc3683b720fc3cf4f4e76cb23c06a52398a50e8d spec: imagePullSecrets: - name: harborsecret securityContext: fsGroup: 1001 serviceAccountName: helm-redis terminationGracePeriodSeconds: 30 containers: - name: redis image: 10.129.80.218:8033/cmii/redis:6.2.6-debian-10-r0 imagePullPolicy: "Always" securityContext: runAsUser: 1001 command: - /bin/bash args: - -c - /opt/bitnami/scripts/start-scripts/start-replica.sh env: - name: BITNAMI_DEBUG value: "false" - name: REDIS_REPLICATION_MODE value: slave - name: REDIS_MASTER_HOST value: helm-redis-master-0.helm-redis-headless.zhhq.svc.cluster.local - name: REDIS_MASTER_PORT_NUMBER value: "6379" - name: ALLOW_EMPTY_PASSWORD value: "no" - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: helm-redis key: redis-password - name: REDIS_MASTER_PASSWORD valueFrom: secretKeyRef: name: helm-redis key: redis-password - name: REDIS_TLS_ENABLED value: "no" - name: REDIS_PORT value: "6379" ports: - name: redis containerPort: 6379 livenessProbe: initialDelaySeconds: 20 periodSeconds: 5 timeoutSeconds: 6 successThreshold: 1 failureThreshold: 5 exec: command: - sh - -c - /health/ping_liveness_local_and_master.sh 5 readinessProbe: initialDelaySeconds: 20 periodSeconds: 5 timeoutSeconds: 2 successThreshold: 1 failureThreshold: 5 exec: command: - sh - -c - /health/ping_readiness_local_and_master.sh 1 resources: limits: cpu: "2" memory: 8Gi requests: cpu: "2" memory: 8Gi volumeMounts: - name: start-scripts mountPath: /opt/bitnami/scripts/start-scripts - name: health mountPath: /health - name: redis-data mountPath: /data subPath: - name: config mountPath: /opt/bitnami/redis/mounted-etc - name: redis-tmp-conf mountPath: /opt/bitnami/redis/etc volumes: - name: start-scripts configMap: name: helm-redis-scripts defaultMode: 0755 - name: health configMap: name: helm-redis-health defaultMode: 0755 - name: config configMap: name: helm-redis-configuration - name: redis-tmp-conf emptyDir: { } - name: redis-data emptyDir: { }