## Hazelcast image version
## ref: https://hub.docker.com/r/hazelcast/hazelcast-kubernetes/tags/
##
image:
  # repository is the Hazelcast image name
  repository: "hazelcast/hazelcast"
  # tag is the Hazelcast image tag
  tag: "4.0.1"
  # pullPolicy is the Docker image pull policy
  # It's recommended to change this to 'Always' if the image tag is 'latest'
  # ref: http://kubernetes.io/docs/user-guide/images/#updating-images
  #
  pullPolicy: IfNotPresent
  # pullSecrets is an array of docker-registry secret names
  # Secrets must be manually created in the namespace.
  # ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
  # pullSecrets:
  # - myRegistryKeySecretName

# Cluster settings
cluster:
  # memberCount is the number Hazelcast members
  memberCount: 3

# Hazelcast properties
hazelcast:
  # javaOpts are additional JAVA_OPTS properties for Hazelcast member
  javaOpts:
  # loggingLevel is the level of Hazelcast logs (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, and FINEST)
  # Note that changing this value requires setting securityContext.runAsUser to 0 and securityContext.readOnlyRootFilesystem to false
  # loggingLevel:
  # existingConfigMap defines a ConfigMap which contains Hazelcast configuration file(s) that are used instead of hazelcast.yaml configuration below
  # existingConfigMap:
  # yaml is the Hazelcast YAML configuration file
  yaml:
    hazelcast:
      network:
        join:
          multicast:
            enabled: false
          kubernetes:
            enabled: true
            service-name: ${serviceName}
            namespace: ${namespace}
            resolve-not-ready-addresses: true
        rest-api:
          enabled: true
          endpoint-groups:
            HEALTH_CHECK:
              enabled: true
  # configurationFiles are any additional Hazelcast configuration files
  # configurationFiles:

# affinity specifies the affinity/anti-affinity of different pods. The commented out
# example below shows how you could ensure your hazelcast pods are scheduled on
# different Kubernetes nodes
affinity:
#  podAntiAffinity:
#    requiredDuringSchedulingIgnoredDuringExecution:
#    - labelSelector:
#        matchExpressions:
#        - key: app.kubernetes.io/name
#          operator: In
#          values:
#          - hazelcast
#        - key: role
#          operator: In
#          values:
#          - hazelcast
#      topologyKey: kubernetes.io/hostname

# tolerations enable Hazelcast PODs to be able to run on nodes with taints
# tolerations:

# nodeSelector is an array of Hazelcast Node labels for POD assignments
# ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
nodeSelector: {}

# hostPort is a port under which Hazelcast PODs are exposed on the host machines
# hostPort:

gracefulShutdown:
  enabled: true
  maxWaitSeconds: 600

# Hazelcast Liveness probe
livenessProbe:
  # enabled is a flag to used to enable liveness probe
  enabled: true
  # initialDelaySeconds is a delay before liveness probe is initiated
  initialDelaySeconds: 30
  # periodSeconds decides how often to perform the probe
  periodSeconds: 10
  # timeoutSeconds decides when the probe times out
  timeoutSeconds: 10
  # successThreshold is the minimum consecutive successes for the probe to be considered successful after having failed
  successThreshold: 1
  # failureThreshold is the minimum consecutive failures for the probe to be considered failed after having succeeded
  failureThreshold: 10
  # url path that will be called to check liveness
  path: /hazelcast/health/node-state
  # port that will be used in liveness probe calls
  # port:

# Hazelcast Readiness probe
readinessProbe:
  # enabled is a flag to used to enable readiness probe
  enabled: true
  # initialDelaySeconds is a delay before readiness probe is initiated
  initialDelaySeconds: 30
  # periodSeconds decides how often to perform the probe
  periodSeconds: 10
  # timeoutSeconds decides when the probe times out
  timeoutSeconds: 10
  # successThreshold is the minimum consecutive successes for the probe to be considered successful after having failed
  successThreshold: 1
  # failureThreshold is the minimum consecutive failures for the probe to be considered failed after having succeeded
  failureThreshold: 10
  # url path that will be called to check readiness
  path: /hazelcast/health/ready
  # port that will be used in readiness probe calls
  # port:

# Configure resource requests and limits
# ref: http://kubernetes.io/docs/user-guide/compute-resources/
#
# resources:
#   requests:
#     memory: 256Mi
#     cpu: 100m
#   limits:
#     memory: 1024Mi
#     cpu: 200m

# Hazelcast Service properties
service:
  # Specifies whether a Service should be created
  create: true
  # The name of the Service to use.
  # The name is used for service discovery by Hazelcast K8S discovery plugin.
  # If not set and create is true, a name is generated using the fullname template
  # name:
  # type defines the Kubernetes service type ('ClusterIP', 'LoadBalancer', or 'NodePort')
  type: ClusterIP
  # port is the Kubernetes service port
  port: 5701
  # clusterIP set to None makes the service headless
  # It is required if DNS Lookup is used (https://github.com/hazelcast/hazelcast-kubernetes#dns-lookup)
  clusterIP: "None"


# Role-based Access Control
rbac:
  # Specifies whether RBAC resources should be created
  # It is not required if DNS Lookup is used (https://github.com/hazelcast/hazelcast-kubernetes#dns-lookup)
  create: true

serviceAccount:
  # Specifies whether a ServiceAccount should be created
  create: true
  # The name of the ServiceAccount to use.
  # If not set and create is true, a name is generated using the fullname template
  name:

# Security Context properties
securityContext:
  # enabled is a flag to enable Security Context
  enabled: true
  # runAsUser is the user ID used to run the container
  runAsUser: 65534
  # runAsGroup is the primary group ID used to run all processes within any container of the pod
  runAsGroup: 65534
  # fsGroup is the group ID associated with the container
  fsGroup: 65534
  # readOnlyRootFilesystem is a flag to enable readOnlyRootFilesystem for the Hazelcast security context
  readOnlyRootFilesystem: true

# Allows to enable a Prometheus to scrape pods, implemented for Hazelcast version >= 3.12 (or 'latest')
metrics:
  enabled: false
  service:
    type: ClusterIP
    port: 8080
    annotations:
      prometheus.io/scrape: "true"
      prometheus.io/path: "/metrics"
      prometheus.io/port: "8080"

# customVolume is the configuration for any volume mounted as '/data/custom/' (e.g. to mount a volume with custom JARs)
# customVolume:

# Hazelcast Management Center application properties
mancenter:
  # enabled is a flag to enable Management Center application
  enabled: true
  ## Hazelcast Management Center image version
  ## ref: https://hub.docker.com/r/hazelcast/management-center/tags/
  ##
  image:
    # repository is the Hazelcast Management Center image name
    repository: "hazelcast/management-center"
    # tag is the Hazelcast Management Center image tag
    tag: "4.0.2"
    # pullPolicy is the Docker image pull policy
    # It's recommended to change this to 'Always' if the image tag is 'latest'
    # ref: http://kubernetes.io/docs/user-guide/images/#updating-images
    #
    pullPolicy: IfNotPresent
    # pullSecrets is an array of docker-registry secret names
    # Secrets must be manually created in the namespace.
    # ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
    # pullSecrets:
    # - myRegistryKeySecretName

  # ingress configuration for mancenter
  ingress:
    enabled: false
    annotations: {}
    # hosts:
    # - hazelcast-mancenter.cluster.domain
    # tls:
    # - secretName: hazelcast-ingress-tls
    #   hosts:
    #   - hazelcast-mancenter.cluster.domain

  # ssl is a flag to enable SSL for Management Center
  ssl: false
  # javaOpts are additional JAVA_OPTS properties for Hazelcast Management Center
  javaOpts:

  # contextPath is the value for the MC_CONTEXT_PATH environment variable, thus overriding the default context path for Hazelcast Management Center
  # ref: https://hub.docker.com/r/hazelcast/management-center/
  contextPath:

  # licenseKey is the license key for Hazelcast Management Center
  # if not provided, it can be filled in the Management Center web interface
  licenseKey:
  # licenseKeySecretName is the name of the secret where the Hazelcast Management Center License Key is stored (can be used instead of licenseKey)
  # licenseKeySecretName:

  # existingConfigMap defines a ConfigMap which contains Hazelcast Client configuration file(s) that are used instead of hazelcast-client.yaml configuration below
  # existingConfigMap:
  # yaml is the Hazelcast Client YAML configuration file
  yaml:
    hazelcast-client:
      network:
        cluster-members:
          - ${serviceName}

  # affinity specifies the Management Center affinity/anti-affinity of different pods
  # affinity:

  # tolerations enable Management Center POD to be able to run on nodes with taints
  # tolerations:

  # nodeSelector is an array of Hazelcast Management Center Node labels for POD assignments
  # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  nodeSelector: {}

  # Configure resource requests and limits
  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
  #
  # resources:
  #   requests:
  #     memory: 256Mi
  #     cpu: 100m
  #   limits:
  #     memory: 1024Mi
  #     cpu: 200m

  # Management Center persistence properties
  persistence:
    # enabled is a flag to enable persistence for Management Center
    enabled: true
    # existingClaim is a name of the existing Persistence Volume Claim that will be used for persistence
    # if not defined, a new Persistent Value Claim is created with the default name
    # existingClaim:
    # accessModes defines the access modes for the created Persistent Volume Claim
    accessModes:
    - ReadWriteOnce
    # size is the size of Persistent Volume Claim
    size: 8Gi

  # Hazelcast Management Center Service properties
  service:
    # type defines the Kubernetes service type ('ClusterIP', 'LoadBalancer', or 'NodePort')
    type: LoadBalancer
    # port is the Kubernetes service port
    port: 8080
    # service https port
    httpsPort: 443
    # service annotations for management center
    annotations: {}

  # Hazelcast Management Center Liveness probe
  livenessProbe:
    # enabled is a flag to used to enable liveness probe
    enabled: true
    # initialDelaySeconds is a delay before liveness probe is initiated
    initialDelaySeconds: 30
    # periodSeconds decides how often to perform the probe
    periodSeconds: 10
    # timeoutSeconds decides when the probe times out
    timeoutSeconds: 5
    # successThreshold is the minimum consecutive successes for the probe to be considered successful after having failed
    successThreshold: 1
    # failureThreshold is the minimum consecutive failures for the probe to be considered failed after having succeeded
    failureThreshold: 3
  # Hazelcast Management Center Readiness probe
  readinessProbe:
    # enabled is a flag to used to enable readiness probe
    enabled: true
    # initialDelaySeconds is a delay before readiness probe is initiated
    initialDelaySeconds: 30
    # periodSeconds decides how often to perform the probe
    periodSeconds: 10
    # timeoutSeconds decides when the probe times out
    timeoutSeconds: 1
    # successThreshold is the minimum consecutive successes for the probe to be considered successful after having failed
    successThreshold: 1
    # failureThreshold is the minimum consecutive failures for the probe to be considered failed after having succeeded
    failureThreshold: 3

  # secretsMountName is the secret name that is mounted as '/data/secrets/' (e.g. with keystore/trustore files)
  # secretsMountName:
