## Default values for metallb.
## 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 MetalLB, 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: metallb-config
#
## configInline specifies MetalLB's configuration directly, in yaml
## format. When configInline is used, Helm manages MetalLB's
## configuration ConfigMap as part of the release, and
## existingConfigMap is ignored.
## Refer to https://metallb.universe.tf/configuration/ for
## available options.
#
configInline: {}

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

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

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

prometheus:
  enabled: false

  # 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: []

  # Prometheus Operator alertmanager alerts
  prometheusRule:
    enabled: true

## Metallb Controller deployment.
## ref: https://hub.docker.com/r/metallb/controller/tags
controller:
  image:
    registry: docker.io
    repository: bitnami/metallb-controller
    tag: 0.9.4-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

  ## Controller container resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ##
  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: 100Mi
    # requests:
    #   memory: 25Mi
    #   cpu: 25m
  ## 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: []

  ## Affinity for pod assignment
  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
  ##
  affinity: {}

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


  ## Pod securityContext
  ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  ##
  securityContext:
    enabled: true
    runAsNonRoot: true
    runAsUser: 1001
    fsGroup: 1001
    allowPrivilegeEscalation: false
    readOnlyRootFilesystem: true
    capabilities:
      drop:
      - ALL

  ## Configure the revisionHistoryLimit of the Controller deployment
  ## Ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit
  ##
  revisionHistoryLimit: 3

  ## Configure the grace time period for sig term
  ## Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution
  ##
  terminationGracePeriodSeconds: 0

  ## Configures the ports the MetalLB Controller listens on for metrics
  ##
  containerPort:
    metrics: 7472

  ## Liveness and readiness probe values
  ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
  ##
  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1
  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

## Metallb Speaker daemonset.
## ref: https://hub.docker.com/r/metallb/speaker/tags
speaker:
  image:
    registry: docker.io
    repository: bitnami/metallb-speaker
    tag: 0.9.3-debian-10-r198
    ## 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

  ## Speaker container resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ##
  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: 100Mi
    # requests:
    #   memory: 25Mi
    #   cpu: 25m
  ## 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: []

  ## Affinity for pod assignment
  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
  ##
  affinity: {}

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

  ## Daemonset configuration
  ##
  daemonset:
    ## Configure the grace time period for sig term
    ## Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution
    ##
    terminationGracePeriodSeconds: 2
    ## HTTP Metrics Endpoint
    ##
    hostPorts:
      metrics: 7472

  ## Defines a secret to use outside of the auto generated
  ## Default: {{ randAlphaNum 256 | b64enc | quote }}
  ## The auto generated has secretName: {{ "metallb.fullname" }}-memberlist
  ## and secretKey: secretkey
  ##
  # secretName:
  # secretKey:

  ## Pod securityContext
  ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  ##
  securityContext:
    enabled: true
    runAsUser: 0
    allowPrivilegeEscalation: false
    readOnlyRootFilesystem: true
    capabilities:
      drop:
      - ALL
      add:
      - NET_ADMIN
      - NET_RAW
      - SYS_ADMIN

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

  ## Liveness and readiness probe values
  ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
  ##
  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1
  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1
