Sample values.yaml File

Prev Next

As a best practice, we recommend using the file values-custom.yaml for setting the relevant parameter values.

Additional parameters/configuration can be added from the following values.yaml to the values-custom.yaml as needed.

# Default values for plainid-paa.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

# Client settings
# These settings can be found under the tenant settings section on the management UI.
tenantId: "ENTER_TENANT_ID" # Tenant Id (can be found under the Hybrid Agent Keys tab)
agentSecretKey: "ENTER_AGENT_SECRET_KEY" # Agent Secret key (can be found under the Hybrid Agent Keys tab)
paaId: "ENTER_PAA_ID" #  Policy Authorization Agent Id (can be found under the Policy Authorization Agents tab)

# PlainID hybrid URL.
# Possible values (XXXXX): us1,eu1,ca1
# For example: remoteApi: "wss://remote.us1.plainid.io/wstunnel"
remoteApi: "wss://remote.XXXXX.plainid.io/wstunnel"

# For using https tunneling instead WebSockets, you could set this remoteApi:
# remoteApi: “https://remote.us1.plainid.io/httptunnel”

## Reference to one or more secrets to be used when pulling images
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
##
imagePullSecrets: []
# - name: "image-pull-secret"

#nameOverride: "plainid-paa"
#fullnameOverride: "plainid-paa"

# -- Override the Kubernetes version, which is used to evaluate certain manifests
kubeVersionOverride: ""

## @param clusterDomain Kubernetes cluster domain name
##
clusterDomain: cluster.local

serviceAccount:
  # Specifies whether a service account should be created
  create: true
  # Annotations to add to the service account
  annotations: {}
  # The name of the service account to use.
  # If not set and create is true, a name is generated using the fullname template
  name: ""
  automountServiceAccountToken: "true"

## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
podSecurityContext: {}
# fsGroup: 2000

## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
securityContext: {}
  # capabilities:
  #   drop:
  #   - ALL
  # readOnlyRootFilesystem: true
  # runAsNonRoot: true
  # runAsUser: 1000

tolerations: []

global:
  # -- Additional labels to add to all resources
  additionalLabels: {}
  # app: plainid-paa

agent:
  fullnameOverride: agent-client
  enabled: true
  name: agent
  replicaCount: 1
  image:
    repository: plainid/agent
    ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
    ##
    pullPolicy: Always
    tag: "5.2514.1"
  # If serviceAccount.create is false, these values are used for existing external service account
  serviceAccountName: ""
  serviceAccount:
    annotations: {}
  # runtime.resources -- Specify resources on the PlainID Runtime container.
  ## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
  resources: {}
  #  requests:
  #    memory: "2000Mi"
  #    cpu: "50m"
  #  limits:
  #    memory: "4000Mi"
  #    cpu: "2000m"
  # Override agent start command
  command: []
  #    - /bin/sh
  #    - -ec
  #    - |
  #      keytool -import -alias redis-cert -file /app/conf/cert.pem -storepass changeit -keystore /usr/lib/jvm/default-jvm/lib/security/cacerts -noprompt && \
  #      /app/launch.sh "${JVM_OPTS}  -Djava.net.preferIPv4Stack=true" -jar "$JAR_NAME"
  # Allows you to add any config files to /app/conf
  # such as config.json
  plainIDConfig: {}
  #  config.json: |
  #    {}
  autoscaling:
    enabled: false
    minReplicas: 3
    maxReplicas: 6
    targetCPUUtilizationPercentage: 80
    targetMemoryUtilizationPercentage: 80
    annotations: { }
    behavior: { }
      # scaleDown:
      #   stabilizationWindowSeconds: 300
      #  policies:
      #   - type: Pods
      #     value: 1
      #     periodSeconds: 180
      # scaleUp:
    #   stabilizationWindowSeconds: 300
    #   policies:
    #   - type: Pods
    #     value: 2
    #     periodSeconds: 60
  autoscalingTemplate: []
    # Custom or additional autoscaling metrics
    # ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-custom-metrics
    # - type: Pods
    #   pods:
    #     metric:
    #       name: nginx_ingress_controller_nginx_process_requests_total
    #     target:
    #       type: AverageValue
  #       averageValue: 10000m
  # Enable vertical pod autoscaler support
  # ref: https://github.com/kubernetes/autoscaler/blob/master/vertical-pod-autoscaler/FAQ.md
  verticalPodAutoscaler:
    enabled: false
    # Defaults to chart name
    containerName: ""
    # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
    controlledResources: []

    # Define the max allowed resources for the pod
    maxAllowed: {}
    # cpu: 200m
    # memory: 100Mi
    # Define the min allowed resources for the pod
    minAllowed: {}
    # cpu: 200m
    # memory: 100Mi

    # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
    # are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
    updatePolicy: {}
    # updateMode: "Auto"
  strategy: # For deployment
    rollingUpdate:
      maxSurge: 30%
      maxUnavailable: 30%
  # -- Labels to add to the pod container metadata
  podLabels: {}
  #  key: value
  annotations: {}
  podAnnotations: {}
  ## Sensible environment variables that will be rendered as new secret object
  ## This can be useful for auth tokens, etc
  extraEnvSecrets: {}
  # When it's set, the secret environment variables is ignored
  existingEnvSecret: ""
  # -- Environment variables to pass to the agent
  extraEnv: {}
  #  KEY: "VALUE"
  # -- PlainID agent log format: Either `text` or `json`
  logFormat: text
  #    KEY: "VALUE"
  # -- Set the logging level. (One of: `debug`, `info`, `warn`, `error`)
  logLevel: info
  # -- Set the message level. (One of: `debug`, `info`, `warn`, `error`, `off`)
  # The messagesLevel parameter defines which message types, if any, are sent to the PlainID Platform for troubleshooting.
  # To disable messages, set to `off`
  messagesLevel: error
  terminationGracePeriodSeconds: 25
  debug:
    enabled: false
    port: 5005
  ## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
  lifecycle:
    preStop:
      exec:
        command: [ "/bin/bash", "-c", "kill -SIGTERM `pgrep -f redisync` && sleep 20" ]
  ## Configure extra options for probes
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
  ##
  livenessProbe:
    enabled: true
    initialDelaySeconds: "300"
    periodSeconds: "15"
    timeoutSeconds: "8"
    failureThreshold: "12"
    successThreshold: "1"
  readinessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "4"
    timeoutSeconds: "3"
    failureThreshold: "5"
    successThreshold: "1"
  startupProbe:
    enabled: false
    initialDelaySeconds: "90"
    periodSeconds: "5"
    timeoutSeconds: "2"
    failureThreshold: "300"
    successThreshold: "1"
  service:
    type: ClusterIP
    port: 8080
    nodePort:
    name: http
    annotations: {}
    management:
      name: http-management
      port: 8081
  metrics:
    enabled: false
    port: 8081
    serviceMonitor:
      # When set true then use a ServiceMonitor to configure scraping
      enabled: false
      path: /actuator/prometheus
      # Set the namespace the ServiceMonitor should be deployed
      # namespace: monitoring
      # Set how frequently Prometheus should scrape
      # interval: 30s
      # Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
      # labels: {}
      # Set timeout for scrape
      # timeout: 10s
    annotations: {}
  #    prometheus.io/port: '9090'
  #    prometheus.io/scrape: 'true'
  #    prometheus.io/path: '/actuator/prometheus'
  # Init containers to add to deployment's pod spec. At least one plugin provider image is required.
  # If the value is a string then it is evaluated as a template.
  initContainers:
  #    - name: wait-for
  #      image: plainid/wait-for:0.0.9
  #      securityContext:
  #        runAsNonRoot: true
  #        runAsUser: 1000
  #        readOnlyRootFilesystem: true
  #      command:
  #        - /bin/sh
  #        - -c
  #        - |
  #          /wait-for plainid-paa-redis-master:6379 --timeout=600
  ## Configure PodDisruptionBudget
  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
  #
  podDisruptionBudget:
    # -- Labels to be added
    labels: {}
    # -- Annotations to be added
    annotations: {}

    # -- Deploy a Poddisruptionbudget
    enabled: false
    # minAvailable: 1
    # maxUnavailable: 0
  forceRedeploy: false
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
  affinity: {}
  #    podAntiAffinity:
  #      requiredDuringSchedulingIgnoredDuringExecution:
  #        - labelSelector:
  #            matchExpressions:
  #              - key: app.kubernetes.io/component
  #                operator: In
  #                values:
  #                  - agent
  #          topologyKey: "kubernetes.io/hostname"
  nodeSelector: {}
  # JVM options are configuration parameters and settings that are used to control the behavior of the Java Virtual Machine (JVM). The JVM is the underlying engine that executes Java bytecode, and these options allow you to fine-tune various aspects of its performance, behavior, and debugging capabilities.
  jvmOpts: "-Xms2000m -Xmx2000m"
  # Example
  # -- `-XX:InitialRAMPercentage=70.0`: This option sets the initial size of the heap as a percentage of the total RAM available to the system. In this case, it is set to 50%, meaning that the heap will be initialized to occupy half of the system's available RAM.
  # -- `-XX:MaxRAMPercentage=70.0`: This option sets the maximum heap size as a percentage of the total RAM available to the system. Again, it is set to 50%, meaning that the maximum heap size will be limited to half of the available RAM. The JVM will not allocate more heap space than this, even if there is more free memory available on the system.
  # -- `-XX:+ExitOnOutOfMemoryError`: This option tells the JVM to exit immediately if it encounters an out-of-memory error (`OutOfMemoryError`). By default, the JVM may simply throw an `OutOfMemoryError` and continue to run, but with this option enabled, it will shut down. This can be useful in environments where automatic recovery is set up, and you want the system to restart the JVM if it runs out of memory.
  #jvmOpts: "-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+ExitOnOutOfMemoryError"
  numberOfConnections: "1"
  redisync:
    # JVM options are configuration parameters and settings that are used to control the behavior of the Java Virtual Machine (JVM). The JVM is the underlying engine that executes Java bytecode, and these options allow you to fine-tune various aspects of its performance, behavior, and debugging capabilities.
    jvmOpts: "-Xms1500m -Xmx1500m"
    # Example
    # -- `-XX:InitialRAMPercentage=70.0`: This option sets the initial size of the heap as a percentage of the total RAM available to the system. In this case, it is set to 50%, meaning that the heap will be initialized to occupy half of the system's available RAM.
    # -- `-XX:MaxRAMPercentage=70.0`: This option sets the maximum heap size as a percentage of the total RAM available to the system. Again, it is set to 50%, meaning that the maximum heap size will be limited to half of the available RAM. The JVM will not allocate more heap space than this, even if there is more free memory available on the system.
    # -- `-XX:+ExitOnOutOfMemoryError`: This option tells the JVM to exit immediately if it encounters an out-of-memory error (`OutOfMemoryError`). By default, the JVM may simply throw an `OutOfMemoryError` and continue to run, but with this option enabled, it will shut down. This can be useful in environments where automatic recovery is set up, and you want the system to restart the JVM if it runs out of memory.
    #jvmOpts: "-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+ExitOnOutOfMemoryError"
    enabled: true

pipOperator:
  enabled: true
  name: pip-operator
  replicaCount: "1"
  image:
    repository: plainid/pip-operator
    ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
    ##
    pullPolicy: Always
    tag: "5.2514.1"
  # If serviceAccount.create is false, these values are used for existing external service account
  serviceAccountName: ""
  serviceAccount:
    annotations: {}
  # runtime.resources -- Specify resources on the PlainID Pip Operator container.
  ## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
  resources: {}
  #  requests:
  #    memory: "2000Mi"
  #    cpu: "50m"
  #  limits:
  #    memory: "4000Mi"
  #    cpu: "2000m"
  # Override PIP-Operator start command in case you need to use external DB drivers (e.g. MySQL, MS SQL, Oracle, etc.)
  # Uncomment the following section and add the curl commands to retrieve/download the relevant libraries
  # Please note - the folder for the libraries must be under /app/lib
  command: []
  #    - /bin/sh
  #    - -ec
  #    - |
  #      curl -o /app/lib/sample.jar https://www.example.com/sample.jar && \
  #      keytool -import -alias redis-cert -file /app/conf/cert.pem -storepass changeit -keystore /usr/lib/jvm/default-jvm/lib/security/cacerts -noprompt && \
  #      java ${JVM_OPTS} -cp $JAR_NAME -Dorg.apache.cxf.transport.http.forceVersion=1.1 -Djava.net.preferIPv4Stack=true -Dloader.path=/app/lib/ -Dloader.main=com.plainid.pipoperator.Starter org.springframework.boot.loader.launch.PropertiesLauncher
  # NOTE: horizontal autoscaling based on memory utilization for this service is discouraged.
  # Please refer to https://docs.plainid.io
  autoscaling:
    enabled: false
    minReplicas: 3
    maxReplicas: 6
    targetCPUUtilizationPercentage: 80
    # targetMemoryUtilizationPercentage: 80
    annotations: { }
    behavior: { }
      # scaleDown:
      #   stabilizationWindowSeconds: 300
      #  policies:
      #   - type: Pods
      #     value: 1
      #     periodSeconds: 180
      # scaleUp:
      #   stabilizationWindowSeconds: 300
    #   policies:
    #   - type: Pods
    #     value: 2
    #     periodSeconds: 60
  autoscalingTemplate: []
    # Custom or additional autoscaling metrics
    # ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-custom-metrics
    # - type: Pods
    #   pods:
    #     metric:
    #       name: nginx_ingress_controller_nginx_process_requests_total
    #     target:
    #       type: AverageValue
  #       averageValue: 10000m
  # Enable vertical pod autoscaler support
  # ref: https://github.com/kubernetes/autoscaler/blob/master/vertical-pod-autoscaler/FAQ.md
  verticalPodAutoscaler:
    enabled: false
    # Defaults to chart name
    containerName: ""
    # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
    controlledResources: [ ]

    # Define the max allowed resources for the pod
    maxAllowed: { }
    # cpu: 200m
    # memory: 100Mi
    # Define the min allowed resources for the pod
    minAllowed: { }
    # cpu: 200m
    # memory: 100Mi

    # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
    # are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
    updatePolicy: { }
    # updateMode: "Auto"
  strategy:
    rollingUpdate:
      maxSurge: 30%
      maxUnavailable: 30%
  # -- Labels to add to the pod container metadata
  podLabels: { }
  #  key: value
  annotations: {}
  podAnnotations: {}
  # Allows you to add any config files to /app/conf
  # such as auth-config.xml that is required to configure OAuth connections to REST based data sources (e.g. Azure AD, SCIM, REST, etc.)
  plainIDConfig: {}
#    auth-config.xml: |
#      <?xml version='1.0'?>
#      <policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
#               xsi:schemaLocation="urn:jboss:security-config:5.0"
#               xmlns="urn:jboss:security-config:5.0"
#               xmlns:jbxb="urn:jboss:security-config:5.0">
#
#          <application-policy name = "teiid-security-file">
#             <authentication>
#                <login-module code = "org.jboss.security.auth.spi.UsersRolesLoginModule" flag = "required">
#                    <!-- https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform/5/html/security_guide/ch12#Using_JBoss_Login_Modules-Password_Hashing -->
#                    <module-option name="usersProperties">users.properties</module-option>
#                    <module-option name="rolesProperties">roles.properties</module-option>
#                    <module-option name="unauthenticatedIdentity">nobody</module-option>
#                    <module-option name="hashAlgorithm">MD5</module-option>
#                    <module-option name="hashEncoding">base64</module-option>
#                </login-module>
#             </authentication>
#          </application-policy>
#      </policy>
  # Allows you to add any secret files to /app/conf
  # such as key.json etc..
  secretFiles: {}
#    key.json: |
#      {}
  ## Sensible environment variables that will be rendered as new secret object
  ## This can be useful for auth tokens, etc
  extraEnvSecrets: { }
  # When it's set, the secret environment variables is ignored
  existingEnvSecret: ""
  # -- Environment variables to pass to the pip-operator
  extraEnv: {
   #           APP_VDB_LAZY_INVALIDATE:true     - If set to true (Default), cached data will be available during cache refresh,
   #                                               if set to false, data is not available during cache refresh.
   #           MV_STATUS_LOGGING_FREQUENCY: 60  - Determines whether Mat View status is retrieved and logged, 
   #                                               and specifies the logging frequency (default is 60 minutes)
  }
  #  KEY: "VALUE"
  # -- PlainID pip-operator log format: Either `text` or `json`
  logFormat: text
  # -- Set the logging level. (One of: `debug`, `info`, `warn`, `error`)
  logLevel: info
  terminationGracePeriodSeconds: 15
  # -- Set the message level. (One of: `debug`, `info`, `warn`, `error`, `off`)
  # The messagesLevel parameter defines which message types, if any, are sent to the PlainID Platform for troubleshooting.
  # To disable messages, set to `off`
  messagesLevel: error
  debug:
    enabled: false
    port: 5005
  ## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
  lifecycle: { }
  #  preStop:
  #    exec:
  #      command: ["/bin/sh", "-c", "sleep 10"]
  ## Configure extra options for probes
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
  ##
  livenessProbe:
    enabled: true
    initialDelaySeconds: "300"
    periodSeconds: "15"
    timeoutSeconds: "8"
    failureThreshold: "12"
    successThreshold: "1"
  readinessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "4"
    timeoutSeconds: "3"
    failureThreshold: "5"
    successThreshold: "1"
  startupProbe:
    enabled: false
    initialDelaySeconds: "40"
    periodSeconds: "5"
    timeoutSeconds: "2"
    failureThreshold: "300"
    successThreshold: "1"
  service:
    type: ClusterIP
    name: http
    port: 8080
    annotations: {}
    management:
      name: http-management
      port: 8089
    jdbc:
      name: tcp-jdbc
      port: 31350
    postgres:
      name: tcp-postgres
      port: 31351
  metrics:
    enabled: false
    port: 8089
    serviceMonitor:
      # When set true then use a ServiceMonitor to configure scraping
      enabled: false
      path: /actuator/prometheus
      # Set the namespace the ServiceMonitor should be deployed
      # namespace: monitoring
      # Set how frequently Prometheus should scrape
      # interval: 30s
      # Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
      # labels: {}
      # Set timeout for scrape
      # timeout: 10s
    annotations: {}
  #    prometheus.io/port: '9090'
  #    prometheus.io/scrape: 'true'
  #    prometheus.io/path: '/actuator/prometheus'
  # Init containers to add to deployment's pod spec. At least one plugin provider image is required.
  # If the value is a string then it is evaluated as a template.
  initContainers:
  #    - name: wait-for
  #      image: plainid/wait-for:0.0.9
  #      securityContext:
  #        runAsNonRoot: true
  #        runAsUser: 1000
  #        readOnlyRootFilesystem: true
  #      command:
  #        - /bin/sh
  #        - -c
  #        - |
  #          /wait-for plainid-paa-redis-master:6379 --timeout=600
  ## Configure PodDisruptionBudget
  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
  #
  podDisruptionBudget:
    # -- Labels to be added
    labels: {}
    # -- Annotations to be added
    annotations: {}

    # -- Deploy a Poddisruptionbudget
    enabled: false
    # minAvailable: 1
    # maxUnavailable: 0
  forceRedeploy: false
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
  affinity: {}
#    podAntiAffinity:
#      preferredDuringSchedulingIgnoredDuringExecution:
#        - weight: 1
#          podAffinityTerm:
#            labelSelector:
#              matchExpressions:
#                - key: app.kubernetes.io/component
#                  operator: In
#                  values:
#                    - pip-operator
#            topologyKey: kubernetes.io/hostname
  nodeSelector: {}
  # JVM options are configuration parameters and settings that are used to control the behavior of the Java Virtual Machine (JVM). The JVM is the underlying engine that executes Java bytecode, and these options allow you to fine-tune various aspects of its performance, behavior, and debugging capabilities.
  jvmOpts: "-Xms2g -Xmx2g"
  # Example
  # -- `-XX:InitialRAMPercentage=70.0`: This option sets the initial size of the heap as a percentage of the total RAM available to the system. In this case, it is set to 50%, meaning that the heap will be initialized to occupy half of the system's available RAM.
  # -- `-XX:MaxRAMPercentage=70.0`: This option sets the maximum heap size as a percentage of the total RAM available to the system. Again, it is set to 50%, meaning that the maximum heap size will be limited to half of the available RAM. The JVM will not allocate more heap space than this, even if there is more free memory available on the system.
  # -- `-XX:+ExitOnOutOfMemoryError`: This option tells the JVM to exit immediately if it encounters an out-of-memory error (`OutOfMemoryError`). By default, the JVM may simply throw an `OutOfMemoryError` and continue to run, but with this option enabled, it will shut down. This can be useful in environments where automatic recovery is set up, and you want the system to restart the JVM if it runs out of memory.
  #jvmOpts: "-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+ExitOnOutOfMemoryError"

runtime:
  name: runtime
  replicaCount: "1"
  # Allows you to add any config files to /app/conf
  # such as config-hybrid.json
  plainIDConfig: {}
  #  config-hybrid.json: |
  #    {}
  image:
    repository: plainid/theruntime
    ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
    ##
    pullPolicy: Always
    tag: "5.2514.3"
  # If serviceAccount.create is false, these values are used for existing external service account
  serviceAccountName: ""
  serviceAccount:
    annotations: {}
  # runtime.resources -- Specify resources on the PlainID Runtime container.
  ## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
  resources: {}
  #  requests:
  #    memory: "500Mi"
  #    cpu: "50m"
  #  limits:
  #    memory: "1000Mi"
  #    cpu: "2000m"
  # Override runtime start command
  command: []
  #    - /bin/sh
  #    - -ec
  #    - |
  #      keytool -import -alias redis-cert -file /app/conf/cert.pem -storepass changeit -keystore /usr/lib/jvm/default-jvm/lib/security/cacerts -noprompt && \
  #      java ${JVM_OPTS} --add-exports java.base/sun.security.util=ALL-UNNAMED -Dconf.file=${RUNTIME_CONFIG_PATH} -Dconf.format=json -Dlog4j.configurationFile=${RUNTIME_LOG4J_PATH} -Djava.net.preferIPv4Stack=true -jar theruntime.jar
  # NOTE: horizontal autoscaling based on memory utilization for this service is discouraged.
  # Please refer to https://docs.plainid.io
  autoscaling:
    enabled: false
    minReplicas: 3
    maxReplicas: 6
    targetCPUUtilizationPercentage: 80
    # targetMemoryUtilizationPercentage: 80
    annotations: {}
    behavior: {}
      # scaleDown:
      #   stabilizationWindowSeconds: 300
      #  policies:
      #   - type: Pods
      #     value: 1
      #     periodSeconds: 180
      # scaleUp:
      #   stabilizationWindowSeconds: 300
      #   policies:
      #   - type: Pods
    #     value: 2
    #     periodSeconds: 60
  autoscalingTemplate: []
    # Custom or additional autoscaling metrics
    # ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-custom-metrics
    # - type: Pods
    #   pods:
    #     metric:
    #       name: nginx_ingress_controller_nginx_process_requests_total
    #     target:
    #       type: AverageValue
  #       averageValue: 10000m
  # Enable vertical pod autoscaler support
  # ref: https://github.com/kubernetes/autoscaler/blob/master/vertical-pod-autoscaler/FAQ.md
  verticalPodAutoscaler:
    enabled: false
    # Defaults to chart name
    containerName: ""
    # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
    controlledResources: [ ]

    # Define the max allowed resources for the pod
    maxAllowed: { }
    # cpu: 200m
    # memory: 100Mi
    # Define the min allowed resources for the pod
    minAllowed: { }
    # cpu: 200m
    # memory: 100Mi

    # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
    # are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
    updatePolicy: { }
    # updateMode: "Auto"
  strategy:
    rollingUpdate:
      maxSurge: 30%
      maxUnavailable: 30%
  # -- Labels to add to the pod container metadata
  podLabels: { }
  #  key: value
  annotations: {}
  podAnnotations: {}
  ## Sensible environment variables that will be rendered as new secret object
  ## This can be useful for auth tokens, etc
  extraEnvSecrets: { }
  # When it's set, the secret environment variables is ignored
  existingEnvSecret: ""
  # -- Environment variables to pass to the runtime
  extraEnv: {
    # Add support to UUID asset attribute. For hybrid user to change in production
    #RUNTIME_SUPPORT_UUID_ASSET_ATTRIBUTE : "true"

    # Add support to UUID identity attribute. For hybrid user to change in production
    #RUNTIME_SUPPORT_UUID_IDENTITY_ATTRIBUTE : "true"

    # Refresh JWKS time. For hybrid user to change in production
    # REFRESH_JWKS : "3600000"

    # to enable including ip from header in scope cache calculation
    #RUNTIME_INCLUDE_IP_HEADER_IN_SCOPE_CACHE_KEY: "true"

    # to enable including current time in scope cache calculation
    #RUNTIME_INCLUDE_REQUEST_TIME_IN_SCOPE_CACHE_KEY: "true"

    # to ignore nested queries in entity template
    #RUNTIME_OVERRIDE_ENTITY_NESTED_QUERIES: "[]"

    # to ignore nested queries in asset template
    #RUNTIME_OVERRIDE_ASSET_NESTED_QUERIES: "[]"

    # to determine default to skipUnneededOrUnavailableIdentitySources request flag
    #RUNTIME_DEFAULT_SKIP_UNNEEDED_OR_UNAVAILABLE_IDENTITY_SOURCES: "true"


    # to configure asset provider jdbc pool parameters
    # ASSET_EXTERNAL_PROVIDER_HAS_QUERY_TIMEOUT: "true"
    # ASSET_EXTERNAL_PROVIDER_VALIDATION_QUERY: "select 1"
    # ASSET_EXTERNAL_PROVIDER_MAX_POOL_SIZE:"20"
    # ASSET_EXTERNAL_PROVIDER_MIN_POOL_SIZE:"5"
    # ASSET_EXTERNAL_PROVIDER_INITIAL_POOL_SIZE:"5"
    # ASSET_EXTERNAL_PROVIDER_CHECKOUT_TIMEOUT:"10000"
    # ASSET_EXTERNAL_PROVIDER_QUERY_TIMOUT_IN_SEC:"25"
    # ASSET_EXTERNAL_PROVIDER_ACQUIRE_RETRY_ATTEMPTS:"1"
    # ASSET_EXTERNAL_PROVIDER_ACQUIRE_RETRY_DELAY:"1"
    # ASSET_EXTERNAL_PROVIDER_ACQUIRE_INCREMENT:"1"
    # ASSET_EXTERNAL_PROVIDER_MAX_STATEMENTS:"20"
    # ASSET_EXTERNAL_PROVIDER_MAX_IDLE_TIME:"60"
    # ASSET_EXTERNAL_PROVIDER_IDLE_CONNECTION_TEST_PERIOD:"60"
    # ASSET_EXTERNAL_PROVIDER_TEST_CONNECTION_ON_CHECKIN:"true"
    # ASSET_EXTERNAL_PROVIDER_TEST_CONNECTION_ON_CHECKOUT:"false"
    
    # to configure entity provider jdbc pool parameters
    # ENTITY_EXTERNAL_PROVIDER_HAS_QUERY_TIMEOUT:"true"
    # ENTITY_EXTERNAL_PROVIDER_VALIDATION_QUERY:"select 1"
    # ENTITY_EXTERNAL_PROVIDER_MAX_POOL_SIZE:"20"
    # ENTITY_EXTERNAL_PROVIDER_MIN_POOL_SIZE:"5"
    # ENTITY_EXTERNAL_PROVIDER_INITIAL_POOL_SIZE:"5"
    # ENTITY_EXTERNAL_PROVIDER_CHECKOUT_TIMEOUT:"10000"
    # ENTITY_EXTERNAL_PROVIDER_QUERY_TIMOUT_IN_SEC:"25"
    # ENTITY_EXTERNAL_PROVIDER_ACQUIRE_RETRY_ATTEMPTS:"1"
    # ENTITY_EXTERNAL_PROVIDER_ACQUIRE_RETRY_DELAY:"1"
    # ENTITY_EXTERNAL_PROVIDER_ACQUIRE_INCREMENT:"1"
    # ENTITY_EXTERNAL_PROVIDER_MAX_STATEMENTS:"20"
    # ENTITY_EXTERNAL_PROVIDER_MAX_IDLE_TIME:"60"
    # ENTITY_EXTERNAL_PROVIDER_IDLE_CONNECTION_TEST_PERIOD:"60"
    # ENTITY_EXTERNAL_PROVIDER_TEST_CONNECTION_ON_CHECKIN:"true"
    # ENTITY_EXTERNAL_PROVIDER_TEST_CONNECTION_ON_CHECKOUT:"false"

    # to configure refresh interval parameters
    # REFRESH_ASSET_TEMPLATES:"60000"
    # REFRESH_IDENTITY_TEMPLATES:"60000"
    # REFRESH_POLICIES:"600000"
    # REFRESH_API_MAPPERS:"60000"
    # REFRESH_DATA_MAPPERS:"60000"
    # REFRESH_SCOPE_JWKS_URLS:"60000"
    # RUNTIME_REFRESH_SNAPSHOT: "30000"



  }
  #  KEY: "VALUE"
  # -- PlainID runtime log format: support text only
  logFormat: text
  # -- Set the logging level. (One of: `debug`, `info`, `warn`, `error`)
  logLevel: info
  terminationGracePeriodSeconds: 15
  debug:
    enabled: false
    port: 5005
  ## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
  lifecycle: {}
  #  preStop:
  #    exec:
  #      command: ["/bin/sh", "-c", "sleep 10"]
  ## Configure extra options for probes
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
  ##
  livenessProbe:
    enabled: true
    initialDelaySeconds: "300"
    periodSeconds: "15"
    timeoutSeconds: "8"
    failureThreshold: "12"
    successThreshold: "1"
  readinessProbe:
    enabled: true
    initialDelaySeconds: "20"
    periodSeconds: "4"
    timeoutSeconds: "3"
    failureThreshold: "5"
    successThreshold: "1"
  startupProbe:
    enabled: false
    initialDelaySeconds: "30"
    periodSeconds: "5"
    timeoutSeconds: "2"
    failureThreshold: "300"
    successThreshold: "1"
  service:
    type: ClusterIP
    port: 80
    nodePort:
    annotations: {}
  metrics:
    enabled: false
    port: 8081
    serviceMonitor:
      # When set true then use a ServiceMonitor to configure scraping
      enabled: false
      path: /prometheus/metrics
      # Set the namespace the ServiceMonitor should be deployed
      # namespace: monitoring
      # Set how frequently Prometheus should scrape
      # interval: 30s
      # Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
      # labels: {}
      # Set timeout for scrape
      # timeout: 10s
    annotations: { }
  #    prometheus.io/port: '8081'
  #    prometheus.io/scrape: 'true'
  #    prometheus.io/path: '/actuator/prometheus'
  # Init containers to add to deployment's pod spec. At least one plugin provider image is required.
  # If the value is a string then it is evaluated as a template.
  initContainers:
  #    - name: wait-for
  #      image: plainid/wait-for:0.0.9
  #      securityContext:
  #        runAsNonRoot: true
  #        runAsUser: 1000
  #        readOnlyRootFilesystem: true
  #      command:
  #        - /bin/sh
  #        - -c
  #        - |
  #          /wait-for plainid-paa-redis-master:6379 --timeout=600
  ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
  ingress:
    enabled: false
    #  ingressClassName: nginx
    annotations: { }
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
    hosts:
      - host: chart-example.local
        paths: ["/"]
    tls: [ ]
    #  - secretName: chart-example-tls
    #    hosts:
    #      - chart-example.local
  ## Configure PodDisruptionBudget
  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
  #
  podDisruptionBudget:
    # -- Labels to be added
    labels: {}
    # -- Annotations to be added
    annotations: {}

    # -- Deploy a Poddisruptionbudget
    enabled: false
    # minAvailable: 1
    # maxUnavailable: 0
  forceRedeploy: false
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
  affinity: {}
  nodeSelector: {}
  # JVM options are configuration parameters and settings that are used to control the behavior of the Java Virtual Machine (JVM). The JVM is the underlying engine that executes Java bytecode, and these options allow you to fine-tune various aspects of its performance, behavior, and debugging capabilities.
  jvmOpts: "-Xms2g -Xmx2g"
  # Example
  # -- `-XX:InitialRAMPercentage=70.0`: This option sets the initial size of the heap as a percentage of the total RAM available to the system. In this case, it is set to 50%, meaning that the heap will be initialized to occupy half of the system's available RAM.
  # -- `-XX:MaxRAMPercentage=70.0`: This option sets the maximum heap size as a percentage of the total RAM available to the system. Again, it is set to 50%, meaning that the maximum heap size will be limited to half of the available RAM. The JVM will not allocate more heap space than this, even if there is more free memory available on the system.
  # -- `-XX:+ExitOnOutOfMemoryError`: This option tells the JVM to exit immediately if it encounters an out-of-memory error (`OutOfMemoryError`). By default, the JVM may simply throw an `OutOfMemoryError` and continue to run, but with this option enabled, it will shut down. This can be useful in environments where automatic recovery is set up, and you want the system to restart the JVM if it runs out of memory.
  #jvmOpts: "-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+ExitOnOutOfMemoryError"
  # Audit runtime calls to syslog
  # ref: https://en.wikipedia.org/wiki/Syslog
  # ref: https://docs.plainid.io/v1/docs/en/authorization-audit-configuration
  syslog:
    enabled: false
    host: ""
    port: ""
    # Supported protocols: UDP
    protocol: "UDP"

# Redis parameters
externalRedis:
  # -- External Redis server host
  host: ""
  # -- External Redis user
  # Optional - only if used with Redis ACL
  username: ""
  # -- External Redis password
  password: ""
  # -- External Redis server port
  port: 6379
  # -- The name of an existing secret with Redis credentials (must contain key `redis-password`).
  # When it's set, the `externalRedis.password` parameter is ignored
  existingSecret: ""
  tls: false

# This key configures Redis-HA subchart and when enabled (redis-ha.enabled=true)
# the custom redis deployment is omitted
# Check the redis-ha chart for more properties
redis-ha:
  # -- Enables the Redis HA subchart
  enabled: false
  auth: true
  image:
    repository: docker.io/redis
    tag: 7.4.2-alpine
  redisPassword: "abcd1234"
  replicas: 3
  persistentVolume:
    # -- Configures persistency on Redis nodes
    enabled: false
  hardAntiAffinity: false
  haproxy:
    # -- Enabled HAProxy LoadBalancing/Proxy
    enabled: true
    replicas: 2
    hardAntiAffinity: false
    image:
      tag: 2.6.21-alpine
    # Prevent sockets closing
    # Ref: https://www.papertrail.com/solution/tips/haproxy-logging-how-to-tune-timeouts-for-performance/
    timeout:
      server: 0
      client: 0
  configmapTest:
    image:
      repository: koalaman/shellcheck
      tag: v0.10.0
  exporter:
    image: oliver006/redis_exporter
    tag: v1.61.0
  sysctlImage:
    tag: 1-musl
  redis:
    disableCommands: []
  #    - FLUSHDB
  #    - FLUSHALL

redis:
  # -- Enables the Redis subchart
  enabled: true
  architecture: standalone
  auth:
    password: "abcd1234"
  # Below configurations are for using official docker of redis
  # If you want to use the bitnami flavour of redis, you can comment out below configurations
  image:
    repository: redis
    tag: 7.4.2-alpine
  master:
    customLivenessProbe:
      initialDelaySeconds: 20
      periodSeconds: 4
      timeoutSeconds: 3
      successThreshold: 1
      failureThreshold: 5
      exec:
        command:
          - redis-cli
          - ping
    customReadinessProbe:
      initialDelaySeconds: 10
      periodSeconds: 4
      timeoutSeconds: 3
      successThreshold: 1
      failureThreshold: 3
      exec:
        command:
          - redis-cli
          - ping
    command:
      - redis-server
    args:
      - "--maxmemory-policy volatile-lru"
      - "--maxmemory 2000mb"
      - "--save 60 1"
      - "--loglevel warning"
      - "--port 6379"
      - "--notify-keyspace-events KA"
      - "--requirepass abcd1234"
      - "--masterauth abcd1234"
    disableCommands: []
  #    - FLUSHDB
  #    - FLUSHALL
  metrics:
    image:
      tag: 1.62.0-debian-12-r3
  sentinel:
    image:
      tag: 7.4.2-debian-12-r2
  volumePermissions:
    image:
      tag: 12-debian-12-r27

secretsMgmt:
  enabled: false
  image:
    repository: plainid/secrets-mgmt
    ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
    ##
    pullPolicy: Always
    tag: "5.2514.0"
  name: secrets-mgmt
  forceRedeploy: false
  terminationGracePeriodSeconds: 15
  replicaCount: 1
  # If serviceAccount.create is false, these values are used for existing external service account
  serviceAccountName: ""
  serviceAccount:
    annotations: {}
  # -- Labels to add to the pod container metadata
  podLabels: {}
  #  key: value
  annotations: {}
  podAnnotations: {}
  autoscaling:
    enabled: false
    minReplicas: 3
    maxReplicas: 6
    targetCPUUtilizationPercentage: 2000
    targetMemoryUtilizationPercentage: 160
    annotations: {}
    behavior: {}
      # scaleDown:
      #   stabilizationWindowSeconds: 300
      #  policies:
      #   - type: Pods
      #     value: 1
      #     periodSeconds: 180
      # scaleUp:
      #   stabilizationWindowSeconds: 300
      #   policies:
    #   - type: Pods
    #     value: 2
    #     periodSeconds: 60
  autoscalingTemplate: []
  # Custom or additional autoscaling metrics
  # ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-custom-metrics
  # - type: Pods
  #   pods:
  #     metric:
  #       name: nginx_ingress_controller_nginx_process_requests_total
  #     target:
  #       type: AverageValue
  #       averageValue: 10000m
  ## Configure PodDisruptionBudget
  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
  #
  # Enable vertical pod autoscaler support
  # ref: https://github.com/kubernetes/autoscaler/blob/master/vertical-pod-autoscaler/FAQ.md
  verticalPodAutoscaler:
    enabled: false
    # Defaults to chart name
    containerName: ""
    # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
    controlledResources: [ ]

    # Define the max allowed resources for the pod
    maxAllowed: { }
    # cpu: 200m
    # memory: 100Mi
    # Define the min allowed resources for the pod
    minAllowed: { }
    # cpu: 200m
    # memory: 100Mi

    # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
    # are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
    updatePolicy: { }
    # updateMode: "Auto"
  strategy: # For deployment
    rollingUpdate:
      maxSurge: 30%
      maxUnavailable: 30%
  podDisruptionBudget:
    # -- Labels to be added
    labels: { }
    # -- Annotations to be added
    annotations: { }

    # -- Deploy a Poddisruptionbudget
    enabled: false
    # minAvailable: 1
    # maxUnavailable: 0
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
  ##
  livenessProbe:
    enabled: true
    initialDelaySeconds: 60
    periodSeconds: 7
    timeoutSeconds: 5
    successThreshold: 1
    failureThreshold: 6
    httpGet:
      path: /health/liveness
      port: 8081
  readinessProbe:
    enabled: true
    initialDelaySeconds: 20
    periodSeconds: 3
    timeoutSeconds: 2
    successThreshold: 1
    failureThreshold: 3
    httpGet:
      path: /health/readiness
      port: 8081
  startupProbe:
    enabled: true
    initialDelaySeconds: 20
    periodSeconds: 5
    timeoutSeconds: 3
    successThreshold: 1
    failureThreshold: 180
    httpGet:
      path: /health/liveness
      port: 8081
  service:
    enabled: true
    type: ClusterIP
    name: http
    port: 8080
    nodePort:
    annotations: {}
    management:
      name: http-management
      port: 8081
  debug:
    enabled: false
    port: 5005
  ## Sensible environment variables that will be rendered as new secret object
  ## This can be useful for auth tokens, etc
  extraEnvSecrets: {}
  # Allows you to add any secret files to /app/conf
  # such as key.json etc..
  # -- Environment variables to pass to the agent
  extraEnv: {}
  # When it's set, the secret environment variables is ignored
  existingEnvSecret: ""
  resources: {}
#    requests:
#      memory: "100Mi"
#      cpu: "10m"
#    limits:
#      memory: "2000Mi"
#      cpu: "2000m"
  command: []
  plainIDConfigFileBasePath: "/app/config"
  # Allows you to add any config files to /app/config
  plainIDConfig:
    config.yaml:
      server:
        port: 8080
        # Which IP is allowed to make requests to secrets-mgmt
        bindIp: 0.0.0.0
        name: secrets-mgmt
      management:
        port: ${MANAGEMENT_PORT}
      log:
        level: "info" #debug,trace
        format: "json"
        logTo: "console" # rolling, file
      rabbitmq:
        enabled: false
      gin:
        mode: release  # debug, release
      infra:
        registry:
          warpUrl: ${AGENT_URL:} #"http://plainid-paa-agent:8080"
          k8service: ${SECRETS_MGMT_ADDRESS:} #"http://secrets-mgmt:"${server.port}
          updateInterval: 60
          firstTimeInterval: 3
        management:
          port: ${MANAGEMENT_PORT}
      # Secret Store configuration
      secretStore:
        - id: fileSecret
          type: File
          isDefault: true
          decoder: Base64
          details:
            path: /app/config/filename.txt
#        # Examples below for HashiCorp Vault and Environment Variables based Secret Stores
#        - id: vault
#          type: Vault
#          isDefault: true
#          decoder: None # Base64, None
#          details:
#            PathPrefix: prefix
#            defaultPath: vault_
#            skipVerify: true
#            url: vault
#            timeout: 3s
#            enginePath: custom
#          # Authentication method should use either a Token or Kubernetes authentication method with vault
#          auth:
#            method: Token # Token, Kubernetes
#            tokenValue: token
#            tokenFileName: ${VAULT_TOKEN} # instead of token value
#          auth:
#            method: Kubernetes
#            path: /var/run/secrets/kubernetes.io/serviceaccount/token
#            role: secrets-mgmt
#        - id: ENV_VAR_SECRET
#          type: Environment
#          isDefault: false
#          decoder: Base64
#          details:
#            name: ENV_VAR_SECRET
  metrics:
    enabled: false
    port: 8081
    serviceMonitor:
      # When set true then use a ServiceMonitor to configure scraping
      enabled: false
      path: /health/metrics
      # Set the namespace the ServiceMonitor should be deployed
      # namespace: monitoring
      # Set how frequently Prometheus should scrape
      # interval: 30s
      # Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
      # labels: {}
      # Set timeout for scrape
      # timeout: 10s
    annotations: {}
  #    prometheus.io/port: '9090'
  #    prometheus.io/scrape: 'true'
  #    prometheus.io/path: '/actuator/prometheus'
  # Init containers to add to deployment's pod spec. At least one plugin provider image is required.
  # If the value is a string then it is evaluated as a template.
  initContainers:
  #    - name: wait-for
  #      image: plainid/wait-for:0.0.9
  #      securityContext:
  #        runAsNonRoot: true
  #        runAsUser: 1000
  #        readOnlyRootFilesystem: true
  #      command:
  #        - /bin/sh
  #        - -c
  #        - |
  #          /wait-for plainid-paa-redis-master:6379 --timeout=600
  nodeSelector: {}
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
  affinity: {}
  #    podAntiAffinity:
  #      requiredDuringSchedulingIgnoredDuringExecution:
  #        - labelSelector:
  #            matchExpressions:
  #              - key: app.kubernetes.io/component
  #                operator: In
  #                values:
  #                  - secrets-mgmt
  #          topologyKey: "kubernetes.io/hostname"
  ## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
  lifecycle: {}
  #  preStop:
  #    exec:
  #      command: ["/bin/sh", "-c", "sleep 10"]

idpWebhook:
  enabled: false
  image:
    repository: plainid/idp-webhook
    ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
    ##
    pullPolicy: Always
    tag: "5.2514.0"
  name: idp-webhook
  forceRedeploy: false
  terminationGracePeriodSeconds: 15
  replicaCount: 1
  # If serviceAccount.create is false, these values are used for existing external service account
  serviceAccountName: ""
  serviceAccount:
    annotations: {}
  # -- Labels to add to the pod container metadata
  podLabels: {}
  #  key: value
  annotations: {}
  podAnnotations: {}
  autoscaling:
    enabled: false
    minReplicas: 3
    maxReplicas: 6
    targetCPUUtilizationPercentage: 2000
    targetMemoryUtilizationPercentage: 160
    annotations: {}
    behavior: {}
      # scaleDown:
      #   stabilizationWindowSeconds: 300
      #  policies:
      #   - type: Pods
      #     value: 1
      #     periodSeconds: 180
      # scaleUp:
      #   stabilizationWindowSeconds: 300
    #   policies:
    #   - type: Pods
    #     value: 2
    #     periodSeconds: 60
  autoscalingTemplate: []
  # Custom or additional autoscaling metrics
  # ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-custom-metrics
  # - type: Pods
  #   pods:
  #     metric:
  #       name: nginx_ingress_controller_nginx_process_requests_total
  #     target:
  #       type: AverageValue
  #       averageValue: 10000m
  ## Configure PodDisruptionBudget
  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
  #
  # Enable vertical pod autoscaler support
  # ref: https://github.com/kubernetes/autoscaler/blob/master/vertical-pod-autoscaler/FAQ.md
  verticalPodAutoscaler:
    enabled: false
    # Defaults to chart name
    containerName: ""
    # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
    controlledResources: [ ]

    # Define the max allowed resources for the pod
    maxAllowed: { }
    # cpu: 200m
    # memory: 100Mi
    # Define the min allowed resources for the pod
    minAllowed: { }
    # cpu: 200m
    # memory: 100Mi

    # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
    # are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
    updatePolicy: { }
    # updateMode: "Auto"
  strategy: # For deployment
    rollingUpdate:
      maxSurge: 30%
      maxUnavailable: 30%
  podDisruptionBudget:
    # -- Labels to be added
    labels: { }
    # -- Annotations to be added
    annotations: { }

    # -- Deploy a Poddisruptionbudget
    enabled: false
    # minAvailable: 1
    # maxUnavailable: 0
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
  ##
  livenessProbe:
    enabled: true
    initialDelaySeconds: 60
    periodSeconds: 7
    timeoutSeconds: 5
    successThreshold: 1
    failureThreshold: 6
    httpGet:
      path: /health/liveness
  readinessProbe:
    enabled: true
    initialDelaySeconds: 20
    periodSeconds: 3
    timeoutSeconds: 2
    successThreshold: 1
    failureThreshold: 3
    httpGet:
      path: /health/readiness
  startupProbe:
    enabled: true
    initialDelaySeconds: 20
    periodSeconds: 2
    timeoutSeconds: 2
    successThreshold: 1
    failureThreshold: 240
    httpGet:
      path: /health/liveness
  service:
    enabled: true
    type: ClusterIP
    name: http
    port: 8080
    nodePort:
    annotations: {}
    management:
      name: http-management
      port: 9090
  debug:
    enabled: false
    port: 5005
  ## Sensible environment variables that will be rendered as new secret object
  ## This can be useful for auth tokens, etc
  extraEnvSecrets: {}
  # Allows you to add any secret files to /app/conf
  # such as key.json etc..
  # -- Environment variables to pass to the agent
  extraEnv: {}
  # When it's set, the secret environment variables is ignored
  existingEnvSecret: ""
  resources: {}
  #    requests:
  #      memory: "100Mi"
  #      cpu: "10m"
  #    limits:
  #      memory: "2000Mi"
  #      cpu: "2000m"
  command: []
  plainIDConfigFileBasePath: "/app/config"
  # Allows you to add any config files to /app/config
  plainIDConfig: {}
  # Uncomment the following config.yaml section to enable and configure the IDP Web-Hook (Token Enrichment) functionality
#    config.yaml:
#      server:
#        name: idp-webhook
#        auth:
#          secret: ${IDP_HOOK_AUTH_SECRET} # This secret will be used to allow the IDP to authenticate with the IDP Webhook endpoint (Optional)
#
#      http:
#        port: ${IDP_HOOK_HTTP_PORT:8080}
#
#      management:
#        port: ${MANAGEMENT_PORT:9090}
#        # if management endpoint path needs to be changed from the default /health:
#        # prefix: ${MANAGEMENT_PREFIX:/probes}
#
#      log:
#        level: ${IDP_HOOK_LOG_LEVEL:debug} # possible values: trace, debug, info, warn, warning, error, fatal, panic
#        format: ${IDP_HOOK_LOG_FORMAT:json} # possible values: json, text
#        logTo: ${IDP_HOOK_LOG_TO:console} # possible values: console, file, rolling
#        # filePath: ${IDP_HOOK_LOG_FILE_PATH:logs/webhook.log} # only relevant if logTo is file or rolling
#        # if logTo is rolling - use the following optional parameters to configure the rolling file appender
#        # maxSize: 2
#        # maxAge: 1
#        # maxBackups: 5
#        # compress: true
#        # localTime: false
#
#      runtime:
#        host: ${RUNTIME_ADDRESS:https://demo.plainid.cloud}
#        uri: /api/runtime/token/v3
#        timeout: 3s
#        # pattern for tenant-specific PDP Runtime URLs; {{tenant}} is a constant, where the tenant key from the request-host will be set
#        # tenantPattern: "http://{{tenant}}-runtime.runtime"
#
#      apps:
#        Bank Portal:
#          clientid: ${BANK_PORTAL_SCOPE_CLIENT_ID:PPWZYCOMXGNTHMGO8CIT}
#          clientsecret: ${BANK_PORTAL_SCOPE_CLIENT_SECRET}
#          entitytype: User
#          tokentype: identity # possible values: identity, access
#          includeIdentity: true
#          userid: $.identity.claims.sub
#          claims:
#            plainid: $.response[*].access[?(@.resourceType == "assetExternal")].path
#            FirstName_identity: $.identity.attributes.first_name
#
#        Loan Approval:
#          clientid: ${LOAN_APPROVAL_SCOPE_CLIENT_ID:PXY8GCMDLPKSNAFDAA7A}
#          clientsecret: ${LOAN_APPROVAL_SCOPE_CLIENT_SECRET}
#          entitytype: Main
#          tokentype: identity # possible values: identity, access
#          userid: $.identity.claims.sub
#          claims:
#            plainid: $.response[*].access[?(@.resourceType == "portal-permissions")].path
#            FirstName_identity: $.identity.attributes.name
  metrics:
    enabled: false
    serviceMonitor:
      # When set true then use a ServiceMonitor to configure scraping
      enabled: false
      path: /health/metrics
      # Set the namespace the ServiceMonitor should be deployed
      # namespace: monitoring
      # Set how frequently Prometheus should scrape
      # interval: 30s
      # Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
      # labels: {}
      # Set timeout for scrape
      # timeout: 10s
    annotations: {}
  #    prometheus.io/port: '9090'
  #    prometheus.io/scrape: 'true'
  #    prometheus.io/path: '/actuator/prometheus'
  # Init containers to add to deployment's pod spec. At least one plugin provider image is required.
  # If the value is a string then it is evaluated as a template.
  initContainers:
  #    - name: wait-for
  #      image: plainid/wait-for:0.0.9
  #      securityContext:
  #        runAsNonRoot: true
  #        runAsUser: 1000
  #        readOnlyRootFilesystem: true
  #      command:
  #        - /bin/sh
  #        - -c
  #        - |
  #          /wait-for plainid-paa-redis-master:6379 --timeout=600
  nodeSelector: {}
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
  affinity: {}
  #    podAntiAffinity:
  #      requiredDuringSchedulingIgnoredDuringExecution:
  #        - labelSelector:
  #            matchExpressions:
  #              - key: app.kubernetes.io/component
  #                operator: In
  #                values:
  #                  - idp-webhook
  #          topologyKey: "kubernetes.io/hostname"
  ## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
  lifecycle: {}
  #  preStop:
  #    exec:
  #      command: ["/bin/sh", "-c", "sleep 10"]
  ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
  ingress:
    enabled: false
    #  ingressClassName: nginx
    annotations: {}
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
    hosts:
      - host: chart-example.local
        paths: ["/"]
    tls: [ ]
    #  - secretName: chart-example-tls
    #    hosts:
    #      - chart-example.local

## extraManifests Array of extra objects to deploy with the release (evaluated as a template)
extraManifests: []

skipChartValidations: false