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

## Global Docker image parameters
## Please, note that this will override the image parameters, including dependencies, configured to use the global value
## Current available global Docker image parameters: imageRegistry, imagePullSecrets
##
# global:
#   imageRegistry: myRegistryName
#   imagePullSecrets:
#     - myRegistryKeySecretName

## To configure Contour, you must specify ONE of the following two
## options.
#
## existingConfigMap specifies the name of an externally-defined
## ConfigMap to use as the configuration. Helm will not manage the
## contents of this ConfigMap, it is your responsibility to create it.
#
# existingConfigMap: contour
#
## configInline specifies Contour's configuration directly, in yaml
## format. When configInline is used, Helm manages Contour's
## configuration ConfigMap as part of the release, and
## existingConfigMap is ignored.
## Refer to https://projectcontour.io/docs/v1.2.1/configuration/ for
## available options.
## Evaluated as a template
#
configInline:
  # should contour expect to be running inside a k8s cluster
  # incluster: true
  #
  # path to kubeconfig (if not running inside a k8s cluster)
  # kubeconfig: /path/to/.kube/config
  #
  # Client request timeout to be passed to Envoy
  # as the connection manager request_timeout.
  # Defaults to 0, which Envoy interprets as disabled.
  # Note that this is the timeout for the whole request,
  # not an idle timeout.
  # request-timeout: 0s
  # disable ingressroute permitInsecure field
  disablePermitInsecure: false
  tls:
    # minimum TLS version that Contour will negotiate
    # minimum-protocol-version: "1.1"
    # Defines the Kubernetes name/namespace matching a secret to use
    # as the fallback certificate when requests which don't match the
    # SNI defined for a vhost.
    fallback-certificate:
  #   name: fallback-secret-name
  #   namespace: '{{ .Release.Namespace }}'
  # The following config shows the defaults for the leader election.
  ## This needs to be edited by when you deploy to a namespace other than projectcontour
  ##
  leaderelection:
    # configmap-name: leader-elect
    configmap-namespace: '{{ .Release.Namespace }}'
  ### Logging options
  # Default setting
  accesslog-format: envoy
  # To enable JSON logging in Envoy
  # accesslog-format: json
  # The default fields that will be logged are specified below.
  # To customise this list, just add or remove entries.
  # The canonical list is available at
  # https://godoc.org/github.com/projectcontour/contour/internal/envoy#JSONFields
  # json-fields:
  #   - "@timestamp"
  #   - "authority"
  #   - "bytes_received"
  #   - "bytes_sent"
  #   - "downstream_local_address"
  #   - "downstream_remote_address"
  #   - "duration"
  #   - "method"
  #   - "path"
  #   - "protocol"
  #   - "request_id"
  #   - "requested_server_name"
  #   - "response_code"
  #   - "response_flags"
  #   - "uber_trace_id"
  #   - "upstream_cluster"
  #   - "upstream_host"
  #   - "upstream_local_address"
  #   - "upstream_service_time"
  #   - "user_agent"
  #   - "x_forwarded_for"
  #
  # default-http-versions:
  #   - "HTTP/2"
  #   - "HTTP/1.1"
  #
  # The following shows the default proxy timeout settings.
  # timeouts:
  #   request-timeout: infinity
  #   connection-idle-timeout: 60s
  #   stream-idle-timeout: 5m
  #   max-connection-duration: infinity
  #   connection-shutdown-grace-period: 5s

## Name of the ingress class to route through this controller
##
# ingressClass: contour

## String to partially override contour.fullname include (will maintain the release name)
##
# nameOverride:

## String to fully override contour.fullname template
##
# fullnameOverride:

## Number of contour Pod replicas
##
replicaCount: 2

rbac:
  # create specifies whether to install and use RBAC rules.
  create: true

## Name of the existingSecret to be use in both contour and envoy
##
# tlsExistingSecret: certs-secret

contour:
  enabled: true
  image:
    registry: docker.io
    repository: bitnami/contour
    tag: 1.9.0-debian-10-r0
    ## Specify a imagePullPolicy
    ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
    ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
    ##
    pullPolicy: IfNotPresent
    ## Optionally specify an array of imagePullSecrets.
    ## Secrets must be manually created in the namespace.
    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
    ##
    # pullSecrets:
    #   - myRegistryKeySecretName

  ## Contour container resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ## ref: https://projectcontour.io/guides/resource-limits/
  ##
  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: 400m
    # memory: 250Mi
    requests: {}
    # cpu: 100m
    # memory: 25Mi

  ## Create Contour CRDs
  ##
  installCRDs: true

  ## Contour CRD deletion policy
  ## ref: https://v3.helm.sh/docs/topics/charts_hooks/
  ##
  # customResourceDeletePolicy: before-hook-creation

  ## Pod affinity preset
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
  ## Allowed values: soft, hard
  ##
  podAffinityPreset: ''

  ## Pod anti-affinity preset
  ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
  ## Allowed values: soft, hard
  ##
  podAntiAffinityPreset: soft

  ## Node affinity preset
  ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
  ## Allowed values: soft, hard
  ##
  nodeAffinityPreset:
    ## Node affinity type
    ## Allowed values: soft, hard
    type: ''
    ## Node label key to match
    ## E.g.
    ## key: "kubernetes.io/e2e-az-name"
    ##
    key: ''
    ## Node label values to match
    ## E.g.
    ## values:
    ##   - e2e-az1
    ##   - e2e-az2
    ##
    values: []

  ## Affinity for pod assignment
  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
  ## Note: podAffinityPreset, podAntiAffinityPreset, and  nodeAffinityPreset will be ignored when it's set
  ##
  affinity: {}

  ## Node labels for pod assignment
  ## Ref: https://kubernetes.io/docs/user-guide/node-selection/
  ##
  nodeSelector: {}

  ## Tolerations for pod assignment
  ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  ##
  tolerations: []

  ## Pod annotations
  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
  ##
  podAnnotations: {}

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

  livenessProbe:
    enabled: true
    initialDelaySeconds: 120
    periodSeconds: 20
    timeoutSeconds: 5
    failureThreshold: 6
    successThreshold: 1

  readinessProbe:
    enabled: true
    initialDelaySeconds: 15
    periodSeconds: 10
    timeoutSeconds: 5
    failureThreshold: 3
    successThreshold: 1

  securityContext:
    enabled: true
    runAsNonRoot: true
    runAsUser: 1001
    runAsGroup: 1001

  certgen:
    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: ''

  ## Name of the existingSecret to be use in contour deployment. It will override .tlsExistingSecret
  ##
  # tlsExistingSecret: contour-certs

  ## Contour Service properties
  ##
  service:
    ## Extra ports to expose (normally used with the `sidecar` value)
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services
    ##
    extraPorts: []

  ## Add init containers to the pod
  ## For example:
  ## initContainers:
  ##   - name: your-image-name
  ##     image: your-image
  ##     imagePullPolicy: Always
  ##
  initContainers: []

  ## Array to add extra volumes
  ##
  extraVolumes: []

  ## Array to add extra mounts (normally used with extraVolumes)
  ##
  extraVolumeMounts: []

  ## An array to add extra env vars
  ## For example:
  ## extraEnvVars:
  ##  - name: MY_ENV_VAR
  ##    value: env_var_value
  ##
  extraEnvVars: []

  ## Name of a ConfigMap containing extra env vars
  ##
  extraEnvVarsConfigMap: ''

  ## Name of a Secret containing extra env vars
  ##
  extraEnvVarsSecret: ''

envoy:
  enabled: true
  image:
    registry: docker.io
    repository: bitnami/envoy
    tag: 1.15.2-debian-10-r11
    ## Specify a imagePullPolicy
    ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
    ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
    ##
    pullPolicy: IfNotPresent
    ## Optionally specify an array of imagePullSecrets.
    ## Secrets must be manually created in the namespace.
    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
    ##
    # pullSecrets:
    #   - myRegistryKeySecretName

  ## Envoy container resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ## ref: https://projectcontour.io/guides/resource-limits/
  ##
  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: 400m
    # memory: 250Mi
    requests: {}
    # cpu: 100m
    # memory: 25Mi

  ## Pod affinity preset
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
  ## Allowed values: soft, hard
  ##
  podAffinityPreset: ''

  ## Pod anti-affinity preset
  ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
  ## Allowed values: soft, hard
  ##
  podAntiAffinityPreset: ''

  ## Node affinity preset
  ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
  ## Allowed values: soft, hard
  ##
  nodeAffinityPreset:
    ## Node affinity type
    ## Allowed values: soft, hard
    type: ''
    ## Node label key to match
    ## E.g.
    ## key: "kubernetes.io/e2e-az-name"
    ##
    key: ''
    ## Node label values to match
    ## E.g.
    ## values:
    ##   - e2e-az1
    ##   - e2e-az2
    ##
    values: []

  ## Affinity for pod assignment
  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
  ## Note: podAffinityPreset, podAntiAffinityPreset, and  nodeAffinityPreset will be ignored when it's set
  ##
  affinity: {}

  ## Node labels for pod assignment
  ## Ref: https://kubernetes.io/docs/user-guide/node-selection/
  ##
  nodeSelector: {}

  ## Tolerations for pod assignment
  ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  ##
  tolerations: []

  ## Pod annotations
  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
  ##
  podAnnotations: {}

  ## Pod security context
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
  ##
  podSecurityContext:
    enabled: false

  ## Envoy container security context - envoy needs to run as root to bind to 80, 443
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
  ##
  containerSecurityContext:
    enabled: true
    runAsUser: 0

  ## Pod host network access
  ## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#host-namespaces
  ##
  hostNetwork: false

  ## Pod's DNS Policy
  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
  ##
  dnsPolicy: ClusterFirst

  ## Name of the existingSecret to be use in envoy deployment
  ##
  # tlsExistingSecret: envoy-certs

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

  livenessProbe:
    enabled: true
    initialDelaySeconds: 120
    periodSeconds: 20
    timeoutSeconds: 5
    failureThreshold: 6
    successThreshold: 1

  readinessProbe:
    enabled: true
    initialDelaySeconds: 10
    periodSeconds: 3
    timeoutSeconds: 1
    failureThreshold: 3
    successThreshold: 1

  terminationGracePeriodSeconds: 300

  logLevel: info

  ## Envoy Service properties
  ##
  service:
    ## Service type
    ##
    type: LoadBalancer
    externalTrafficPolicy: Local
    # clusterIP: ""
    # externalIPs: []
    # loadBalancerIP: ""
    # loadBalancerSourceRanges: []

    ## Service annotations
    ##
    annotations: {}

    ports:
      ## HTTP Port
      ##
      http: 80
      ## HTTPS Port
      ##
      https: 443

    ## Specify the nodePort(s) value(s) for the LoadBalancer and NodePort service types.
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
    ##
    nodePorts:
      http: ''
      https: ''

    ## Extra ports to expose (normally used with the `sidecar` value)
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services
    ##
    extraPorts: []

  ## Use hostPorts
  ##
  useHostPort: true

  ## HTTP and HTTPS ports
  ##
  hostPorts:
    http: 80
    https: 443

  ## Configures the ports the Envoy proxy listens on
  ##
  containerPorts:
    http: 80
    https: 443

  ## Add init containers to the pod
  ## For example:
  ## initContainers:
  ##   - name: your-image-name
  ##     image: your-image
  ##     imagePullPolicy: Always
  ##
  initContainers: []

  ## Array to add extra volumes
  ##
  extraVolumes: []

  ## Array to add extra mounts (normally used with extraVolumes)
  ##
  extraVolumeMounts: []

  ## An array to add extra env vars
  ## For example:
  ## extraEnvVars:
  ##  - name: MY_ENV_VAR
  ##    value: env_var_value
  ##
  extraEnvVars: []

  ## Name of a ConfigMap containing extra env vars
  ##
  extraEnvVarsConfigMap: ''

  ## Name of a Secret containing extra env vars
  ##
  extraEnvVarsSecret: ''

prometheus:
  # Prometheus Operator service monitors
  serviceMonitor:
    # enable support for Prometheus Operator
    enabled: false
    # Job label for scrape target
    jobLabel: 'app.kubernetes.io/name'
    # Scrape interval. If not set, the Prometheus default scrape interval is used.
    interval: ''
    metricRelabelings: []
    relabelings: []
