#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Default values for apisix-dashboard.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

# -- Number of Apache APISIX Dashboard nodes
replicaCount: 1

image:
  # -- Apache APISIX Dashboard image repository
  repository: apache/apisix-dashboard
  # -- Apache APISIX Dashboard image pull policy
  pullPolicy: IfNotPresent
  # Overrides the image tag whose default is the chart appVersion.
  # Apache APISIX Dashboard image tag (immutable tags are recommended)
  tag: 3.0.0-alpine

# -- Docker registry secret names as an array
imagePullSecrets: []
# -- String to partially override apisix-dashboard.fullname template (will maintain the release name)
nameOverride: ""
# -- String to fully override apisix-dashboard.fullname template
fullnameOverride: ""
# -- Override default labels assigned to Apache APISIX dashboard resource
labelsOverride: {}
# labelsOverride:
#   app.kubernetes.io/name: "{{ .Release.Name }}"
#   app.kubernetes.io/instance: '{{ include "apisix-dashboard.name" . }}'

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: ""

# -- Apache APISIX Dashboard Pod annotations
podAnnotations: {}

# -- Set the [priorityClassName](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#pod-priority) for pods
priorityClassName: ""

# -- Set the securityContext for Apache APISIX Dashboard pods
podSecurityContext: {}
  # fsGroup: 2000

# -- Set the securityContext for Apache APISIX Dashboard container
securityContext: {}
  # capabilities:
  #   drop:
  #   - ALL
  # readOnlyRootFilesystem: true
  # runAsNonRoot: true
  # runAsUser: 1000

config:
  conf:
    listen:
      # -- The address on which the Manager API should listen.
      # The default value is 0.0.0.0, if want to specify, please enable it.
      # This value accepts IPv4, IPv6, and hostname.
      host: 0.0.0.0
      # -- The port on which the Manager API should listen.
      port: 9000
    etcd:
      # -- Supports defining multiple etcd host addresses for an etcd cluster
      endpoints:
        - apisix-etcd:2379
      # -- apisix configurations prefix
      prefix: "/apisix"
      # -- Specifies etcd basic auth username if enable etcd auth
      username: ~
      # -- Specifies etcd basic auth password if enable etcd auth
      password: ~

      # -- Specifies a secret to be mounted on /etc/etcd for mtls usage
      mtlsExistingSecret: ""

      # MTLS configuration used for external etcd instances
      mtls:
        {}
        # key_file: /etc/etcd/server-client.key
        # cert_file: /etc/etcd/server-client.crt
        # ca_file: /etc/etcd/server-ca.crt
    log:
      # -- Error log level.
      # Supports levels, lower to higher: debug, info, warn, error, panic, fatal
      errorLog:
        level: warn
        # -- Access log path
        filePath: /dev/stderr
      accessLog:
        # -- Error log path
        filePath: /dev/stdout

  authentication:
    # -- Secret for jwt token generation
    secret: secret
    # -- JWT token expire time, in second
    expireTime: 3600
    # -- Specifies username and password for login manager api.
    users:
      - username: admin
        password: admin

service:
  # -- Service type
  type: ClusterIP
  # -- Service HTTP port
  port: 80

ingress:
  # -- Set to true to enable ingress record generation
  enabled: false
  # -- Kubernetes 1.18+ support ingressClassName attribute
  className: ""
  # -- Ingress annotations
  annotations: {}
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  # domain access apisix example:
  # hosts:
  # - host: apisix-dashboard.local
  #    paths:
  #     - /*
  # -- The list of hostnams to be covered with this ingress record
  hosts:
    - host: apisix-dashboard.local
      paths: []
  # -- Create TLS Secret
  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local

resources: {}
  # -- We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  # limits:
  #   cpu: 100m
  #   memory: 128Mi
  # requests:
  #   cpu: 100m
  #   memory: 128Mi

autoscaling:
  # -- Enable autoscaling for Apache APISIX Dashboard deployment
  enabled: false
  # -- HPA version, the value is "v2" or "v2beta1", default "v2"
  version: v2
  # -- Minimum number of replicas to scale back
  minReplicas: 1
  # -- Maximum number of replicas to scale out
  maxReplicas: 100
  # -- Target CPU utilization percentage
  targetCPUUtilizationPercentage: 80
  # targetMemoryUtilizationPercentage: 80

# -- Update strategy for apisix dashboard deployment
updateStrategy: {}
  # type: RollingUpdate

# -- Node labels for pod assignment
nodeSelector: {}

# -- Tolerations for pod assignment
tolerations: []

affinity: {}

# -- Topology Spread Constraints for pod assignment spread across your cluster among failure-domains
# ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods
topologySpreadConstraints: []
