image:
  repository: tccr.io/truecharts/redis
  pullPolicy: IfNotPresent
  tag: 7.0.11@sha256:4653f0bff0f593ae2fd5782fbca41c15e0fbc631ab339ee74fb0e82ef37ed90a

workload:
  main:
    replicas: 1
    type: StatefulSet
    strategy: RollingUpdate
    podSpec:
      containers:
        main:
          env:
            REDIS_REPLICATION_MODE: master
            ALLOW_EMPTY_PASSWORD: "yes"
            REDIS_PORT: "{{ .Values.service.main.ports.main.targetPort }}"
            REDIS_PASSWORD:
              secretKeyRef:
                expandObjectName: "{{ if .Values.redisPassword }}true{{ else }}false{{ end }}"
                name: '{{ if .Values.redisPassword }}credentials{{ else if .Values.existingSecret }}{{ .Values.existingSecret }}{{ else }}{{ printf "%s-%s" .Release.Name "rediscreds" }}{{ end }}'
                key: "redis-password"
          probes:
            liveness:
              enabled: true
              type: exec
              command:
                - sh
                - -c
                - /health/ping_liveness_local.sh 2
            readiness:
              enabled: true
              type: exec
              command:
                - sh
                - -c
                - /health/ping_readiness_local.sh 2
            # -- Startup probe configuration
            # @default -- See below
            startup:
              # -- Enable the startup probe
              enabled: true
              type: exec
              command:
                - sh
                - -c
                - /health/ping_readiness_local.sh 2

securityContext:
  container:
    readOnlyRootFilesystem: false
    runAsGroup: 0

configmap:
  health:
    enabled: true
    data:
      ping_readiness_local.sh: |-
        #!/bin/bash
        [[ -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 "failed to connect using password: $REDIS_PASSWORD response: $response"
          exit 1
        fi
      ping_liveness_local.sh: |-
        #!/bin/bash
        [[ -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
        [[ -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
        [[ -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

secret:
  credentials:
    enabled: true
    data:
      redis-password: '{{ ( .Values.redisPassword | default "nothing" ) }}'

# -- Secret or password
# One of these options is required, unless used as a dependency for another TrueCharts chart.
redisPassword: ""
existingSecret: ""

service:
  main:
    ports:
      main:
        port: 6379
        targetPort: 6379

volumeClaimTemplates:
  data:
    enabled: true
    mountPath: "/bitnami/redis"

persistence:
  redis-health:
    enabled: true
    type: configmap
    objectName: health
    mountPath: "/health"
    defaultMode: "0755"
    items:
      - key: ping_readiness_local.sh
        path: ping_readiness_local.sh
      - key: ping_liveness_local.sh
        path: ping_liveness_local.sh
      - key: ping_readiness_master.sh
        path: ping_readiness_master.sh
      - key: ping_liveness_master.sh
        path: ping_liveness_master.sh
      - key: ping_liveness_local_and_master.sh
        path: ping_liveness_local_and_master.sh
      - key: ping_readiness_local_and_master.sh
        path: ping_readiness_local_and_master.sh

portal:
  open:
    enabled: false

manifestManager:
  enabled: false
