## Default values for Datadog Agent
## See Datadog helm documentation to learn more:
## https://docs.datadoghq.com/agent/kubernetes/helm/

## @param nameOverride - string - optional
## Override name of app.
#
nameOverride:  # ""

## @param fullnameOverride - string - optional
## Override the full qualified app name.
#
fullnameOverride:  # ""

## @param targetSystem - string - required
## Set the target OS for this deployment
## Possible values: linux, windows
#
targetSystem: "linux"

datadog:
  ## @param apiKey - string - required
  ## Set this to your Datadog API key before the Agent runs.
  ## ref: https://app.datadoghq.com/account/settings#agent/kubernetes
  #
  apiKey: <DATADOG_API_KEY>

  ## @param apiKeyExistingSecret - string - optional
  ## Use existing Secret which stores API key instead of creating a new one.
  ## If set, this parameter takes precedence over "apiKey".
  #
  apiKeyExistingSecret:  # <DATADOG_API_KEY_SECRET>

  ## @param appKey - string - optional
  ## If you are using clusterAgent.metricsProvider.enabled = true, you must set
  ## a Datadog application key for read access to your metrics.
  #
  appKey:  # <DATADOG_APP_KEY>

  ## @param appKeyExistingSecret - string - optional
  ## Use existing Secret which stores APP key instead of creating a new one
  ## If set, this parameter takes precedence over "appKey".
  #
  appKeyExistingSecret:  # <DATADOG_APP_KEY_SECRET>

  ## @param securityContext - object - optional
  ## You can modify the security context used to run the containers by
  ## modifying the label type below:
  #
  securityContext: {}
  #  seLinuxOptions:
  #    user: "system_u"
  #    role: "system_r"
  #    type: "spc_t"
  #    level: "s0"

  ## @param clusterName - string - optional
  ## Set a unique cluster name to allow scoping hosts and Cluster Checks easily
  ## The name must be unique and must be dot-separated tokens where a token can be up to 40 characters with the following restrictions:
  ## * Lowercase letters, numbers, and hyphens only.
  ## * Must start with a letter.
  ## * Must end with a number or a letter.
  ## Compared to the rules of GKE, dots are allowed whereas they are not allowed on GKE:
  ## https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#Cluster.FIELDS.name
  #
  clusterName:  # <CLUSTER_NAME>

  ## @param site - string - optional - default: 'datadoghq.com'
  ## The site of the Datadog intake to send Agent data to.
  ## Set to 'datadoghq.eu' to send data to the EU site.
  #
  site:  # datadoghq.com

  ## @param dd_url - string - optional - default: 'https://app.datadoghq.com'
  ## The host of the Datadog intake server to send Agent data to, only set this option
  ## if you need the Agent to send data to a custom URL.
  ## Overrides the site setting defined in "site".
  #
  dd_url:  # https://app.datadoghq.com

  ## @param logLevel - string - required
  ## Set logging verbosity, valid log levels are:
  ## trace, debug, info, warn, error, critical, and off
  #
  logLevel: INFO

  ## @param kubeStateMetricsEnabled - boolean - required
  ## If true, deploys the kube-state-metrics deployment.
  ## ref: https://github.com/kubernetes/charts/tree/master/stable/kube-state-metrics
  #
  kubeStateMetricsEnabled: true

  ## @param clusterChecks - object - required
  ## Enable the Cluster Checks feature on both the cluster-agents and the daemonset
  ## ref: https://docs.datadoghq.com/agent/autodiscovery/clusterchecks/
  ## Autodiscovery via Kube Service annotations is automatically enabled
  #
  clusterChecks:
    enabled: false

  ## @param nodeLabelsAsTags - list of key:value strings - optional
  ## Provide a mapping of Kubernetes Node Labels to Datadog Tags.
  #
  nodeLabelsAsTags: {}
  #   beta.kubernetes.io/instance-type: aws-instance-type
  #   kubernetes.io/role: kube_role
  #   <KUBERNETES_NODE_LABEL>: <DATADOG_TAG_KEY>

  ## @param podLabelsAsTags - list of key:value strings - optional
  ## Provide a mapping of Kubernetes Labels to Datadog Tags.
  #
  podLabelsAsTags: {}
  #   app: kube_app
  #   release: helm_release
  #   <KUBERNETES_LABEL>: <DATADOG_TAG_KEY>

  ## @param podAnnotationsAsTags - list of key:value strings - optional
  ## Provide a mapping of Kubernetes Annotations to Datadog Tags
  #
  podAnnotationsAsTags: {}
  #   iam.amazonaws.com/role: kube_iamrole
  #   <KUBERNETES_ANNOTATIONS>: <DATADOG_TAG_KEY>

  ## @param tags  - list of key:value elements - optional
  ## List of tags to attach to every metric, event and service check collected by this Agent.
  ##
  ## Learn more about tagging: https://docs.datadoghq.com/tagging/
  #
  tags: []
  #   - "<KEY_1>:<VALUE_1>"
  #   - "<KEY_2>:<VALUE_2>"

  ## @param dogstatsd - object - required
  ## dogstatsd configuration
  ## ref: https://docs.datadoghq.com/agent/kubernetes/dogstatsd/
  ## To emit custom metrics from your Kubernetes application, use DogStatsD.
  #
  dogstatsd:
    ## @param port - integer - optional - default: 8125
    ## Override the Agent DogStatsD port.
    ## Note: Make sure your client is sending to the same UDP port.
    #
    port: 8125

    ## @param originDetection - boolean - optional
    ## Enable origin detection for container tagging
    ## https://docs.datadoghq.com/developers/dogstatsd/unix_socket/#using-origin-detection-for-container-tagging
    #
    originDetection: false

    ## @param useSocketVolume - boolean - optional
    ## Enable dogstatsd over Unix Domain Socket
    ## ref: https://docs.datadoghq.com/developers/dogstatsd/unix_socket/
    #
    useSocketVolume: false

    ## @param socketPath - string - optional
    ## Path to the DogStatsD socket
    #
    socketPath: /var/run/datadog/dsd.socket

    ## @param hostSocketPath - string - optional
    ## host path to the DogStatsD socket
    #
    hostSocketPath: /var/run/datadog/

    ## @param useHostPort - boolean - optional
    ## Sets the hostPort to the same value of the container port. Needs to be used
    ## for sending custom metrics.
    ## The ports need to be available on all hosts.
    ##
    ## WARNING: Make sure that hosts using this are properly firewalled otherwise
    ## metrics and traces are accepted from any host able to connect to this host.
    #
    useHostPort: false

    ## @param useHostPID - boolean - optional
    ## Run the agent in the host's PID namespace. This is required for Dogstatsd origin
    ## detection to work. See https://docs.datadoghq.com/developers/dogstatsd/unix_socket/
    #
    useHostPID: false

    ## @param nonLocalTraffic - boolean - optional - default: false
    ## Enable this to make each node accept non-local statsd traffic.
    ## ref: https://github.com/DataDog/docker-dd-agent#environment-variables
    #
    nonLocalTraffic: false

  ## @param collectEvents - boolean - optional - default: false
  ## Enables this to start event collection from the kubernetes API
  ## ref: https://docs.datadoghq.com/agent/kubernetes/event_collection/
  #
  collectEvents: false

  ## @param leaderElection - boolean - optional - default: false
  ## Enables leader election mechanism for event collection.
  #
  leaderElection: false

  ## @param leaderLeaseDuration - integer - optional - default: 60
  ## Set the lease time for leader election in second.
  #
  leaderLeaseDuration:  # 60

  ## @param logs - object - required
  ## Enable logs agent and provide custom configs
  #
  logs:
    ## @param enabled - boolean - optional - default: false
    ## Enables this to activate Datadog Agent log collection.
    ## ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup
    #
    enabled: false

    ## @param containerCollectAll - boolean - optional - default: false
    ## Enable this to allow log collection for all containers.
    ## ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup
    #
    containerCollectAll: false

    ## @param containerUseFiles - boolean - optional - default: true
    ## Collect logs from files in /var/log/pods instead of using container runtime API.
    ## It's usually the most efficient way of collecting logs.
    ## ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup
    #
    containerCollectUsingFiles: true

  ## @param apm - object - required
  ## Enable apm agent and provide custom configs
  #
  apm:
    ## @param enabled - boolean - optional - default: false
    ## Enable this to enable APM and tracing, on port 8126
    ## ref: https://github.com/DataDog/docker-dd-agent#tracing-from-the-host
    #
    enabled: false

    ## @param port - integer - optional - default: 8126
    ## Override the trace Agent port.
    ## Note: Make sure your client is sending to the same UDP port.
    #
    port: 8126

    ## @param useSocketVolume - boolean - optional
    ## Enable APM over Unix Domain Socket
    ## ref: https://docs.datadoghq.com/agent/kubernetes/apm/
    #
    useSocketVolume: false

    ## @param socketPath - string - optional
    ## Path to the trace-agent socket
    #
    socketPath: /var/run/datadog/apm.socket

    ## @param hostSocketPath - string - optional
    ## host path to the trace-agent socket
    #
    hostSocketPath: /var/run/datadog/

  ## @param env - list of object - optional
  ## The dd-agent supports many environment variables
  ## ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables
  #
  env: []
  #   - name: <ENV_VAR_NAME>
  #     value: <ENV_VAR_VALUE>

  ## @param confd - list of objects - optional
  ## Provide additional check configurations (static and Autodiscovery)
  ## Each key becomes a file in /conf.d
  ## ref: https://github.com/DataDog/datadog-agent/tree/master/Dockerfiles/agent#optional-volumes
  ## ref: https://docs.datadoghq.com/agent/autodiscovery/
  #
  confd: {}
  #   redisdb.yaml: |-
  #     init_config:
  #     instances:
  #       - host: "name"
  #         port: "6379"
  #   kubernetes_state.yaml: |-
  #     ad_identifiers:
  #       - kube-state-metrics
  #     init_config:
  #     instances:
  #       - kube_state_url: http://%%host%%:8080/metrics

  ## @param checksd - list of key:value strings - optional
  ## Provide additional custom checks as python code
  ## Each key becomes a file in /checks.d
  ## ref: https://github.com/DataDog/datadog-agent/tree/master/Dockerfiles/agent#optional-volumes
  #
  checksd: {}
  #   service.py: |-

  ## @param dockerSocketPath - string - optional
  ## Path to the docker socket
  #
  dockerSocketPath:  # /var/run/docker.sock

  ## @param criSocketPath - string - optional
  ## Path to the container runtime socket (if different from Docker)
  ## This is supported starting from agent 6.6.0
  #
  criSocketPath:  # /var/run/containerd/containerd.sock

  ## @param processAgent - object - required
  ## Enable process agent and provide custom configs
  #
  processAgent:
    ## @param enabled - boolean - required
    ## Set this to true to enable live process monitoring agent
    ## Note: /etc/passwd is automatically mounted to allow username resolution.
    ## ref: https://docs.datadoghq.com/graphing/infrastructure/process/#kubernetes-daemonset
    #
    enabled: true

    ## @param processCollection - boolean - required
    ## Set this to true to enable process collection in process monitoring agent
    ## Requires processAgent.enabled to be set to true to have any effect
    #
    processCollection: false

  ## @param systemProbe - object - required
  ## Enable systemProbe agent and provide custom configs
  #
  systemProbe:
    ## @param enabled - boolean - required
    ## Set this to true to enable system-probe agent
    #
    enabled: false

    ## @param debugPort - integer - required
    ## Specify the port to expose pprof and expvar for system-probe agent
    #
    debugPort: 0

    ## @param enableConntrack - boolean - required
    ## Enable the system-probe agent to connect to the netlink/conntrack subsystem to add NAT information to connection data
    ## Ref: http://conntrack-tools.netfilter.org/
    #
    enableConntrack: true

    ## @param seccomp - string - required
    ## Apply an ad-hoc seccomp profile to the system-probe agent to restrict its privileges
    ## Note that this will break `kubectl exec … -c system-probe -- /bin/bash`
    #
    seccomp: localhost/system-probe

    ## @param seccompRoot - string - required
    ## Specify the seccomp profile root directory
    #
    seccompRoot: /var/lib/kubelet/seccomp

    ## @param bpfDebug - boolean - required
    ## Enable logging for kernel debug
    #
    bpfDebug: false

    ## @param apparmor profile - string - required
    ## specify a apparmor profile for system-probe
    #
    apparmor: unconfined

    ## @param enableTCPQueueLength - boolean - optional
    ## Enable the TCP queue length eBPF-based check
    #
    enableTCPQueueLength: false

    ## @param enableOOMKill - boolean - optional
    ## Enable the OOM kill eBPF-based check
    #
    enableOOMKill: false

    ## @param collectDNSStats - boolean - optional
    ## Enable DNS stat collection
    #
    collectDNSStats: false

  orchestratorExplorer:
    ## @param enabled - boolean - required
    ## Set this to true to enable the orchestrator explorer.
    ## This requires processAgent.enabled and clusterAgent.enabled to be set to true
    ## ref: TODO - add doc link
    #
    enabled: false

## @param clusterAgent - object - required
## This is the Datadog Cluster Agent implementation that handles cluster-wide
## metrics more cleanly, separates concerns for better rbac, and implements
## the external metrics API so you can autoscale HPAs based on datadog metrics
## ref: https://docs.datadoghq.com/agent/kubernetes/cluster/
#
clusterAgent:
  ## @param enabled - boolean - required
  ## Set this to true to enable Datadog Cluster Agent
  #
  enabled: false

  ## @param image - object - required
  ## Define the Datadog Cluster-Agent image to work with.
  #
  image:
    ## @param repository - string - required
    ## Define the repository to use:
    #
    repository: datadog/cluster-agent

    ## @param tag - string - required
    ## Define the Cluster-Agent version to use.
    #
    tag: 1.7.0

    ## @param pullPolicy - string - required
    ## The Kubernetes pull policy.
    #
    pullPolicy: IfNotPresent

    ## @param pullSecrets - list of key:value strings - optional
    ## It is possible to specify docker registry credentials
    ## See https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
    #
    pullSecrets: []
    #   - name: "<REG_SECRET>"

  ## @param command - array - optional
  ## Command to run in the Cluster Agent container
  #
  command: []

  ## @param token - string - required
  ## This needs to be at least 32 characters a-zA-z
  ## It is a preshared key between the node agents and the cluster agent
  ## ref:
  #
  token: ""

  ## @param replicas - integer - required
  ## Specify the of cluster agent replicas, if > 1 it allow the cluster agent to
  ## work in HA mode.
  #
  replicas: 1

  ## @param rbac - object - required
  ## Provide Cluster Agent Deployment pod(s) RBAC configuration
  rbac:
    ## @param created - boolean - required
    ## If true, create & use RBAC resources
    #
    create: true

    ## @param serviceAccountName - string - required
    ## Ignored if clusterAgentrbac.create is true
    #
    serviceAccountName: default

  ## @param metricsProvider - object - required
  ## Enable the metricsProvider to be able to scale based on metrics in Datadog
  #
  metricsProvider:
    ## @param enabled - boolean - required - default: false
    ## Set this to true to enable Metrics Provider
    #
    enabled: false

    ## @param wpaController - boolean - optional
    ## Enable informer and controller of the watermark pod autoscaler
    ## NOTE: You need to install the `WatermarkPodAutoscaler` CRD before
    #
    wpaController: false

    ## @param useDatadogMetrics - boolean - optional
    ## Enable usage of DatadogMetric CRD to autoscale on arbitrary Datadog queries
    ## NOTE: You need to install the `DatadogMetric` CRD before
    #
    useDatadogMetrics: false

    ## Configuration for the service for the cluster-agent metrics server
    #
    service:
      ## @param type - string - optional
      ##
      #
      type: ClusterIP
      ## @param port - int - optional
      ##
      port: 8443

  ## @param env - list of object - optional
  ## The Cluster-Agent supports many additional environment variables that can
  ## be passed literally.
  ## ref: https://docs.datadoghq.com/agent/cluster_agent/commands/#cluster-agent-options
  #
  env: []

  ## @param admissionController - object - required
  ## Enable the admissionController to be able to inject APM/Dogstatsd config
  ## and standard tags (env, service, version) automatically into your pods
  #
  admissionController:
    enabled: false

    ## @param mutateUnlabelled - boolean - optional
    ## Enable injecting config without having the pod label 'admission.datadoghq.com/enabled="true"'
    #
    mutateUnlabelled: false

  ## @param confd - list of objects - optional
  ## Provide additional cluster check configurations
  ## Each key will become a file in /conf.d
  ## ref: https://docs.datadoghq.com/agent/autodiscovery/
  #
  confd: {}
  #   mysql.yaml: |-
  #     cluster_check: true
  #     instances:
  #       - server: '<EXTERNAL_IP>'
  #         port: 3306
  #         user: datadog
  #         pass: '<YOUR_CHOSEN_PASSWORD>'

  ## @param resources - object -required
  ## Datadog cluster-agent resource requests and limits.
  #
  resources: {}
  # requests:
  #   cpu: 200m
  #   memory: 256Mi
  # limits:
  #   cpu: 200m
  #   memory: 256Mi

  ## @param priorityclassName - string - optional
  ## Name of the priorityClass to apply to the Cluster Agent
  #
  priorityClassName:  # system-cluster-critical

  ## @param nodeSelector - object - optional
  ## Allow the Cluster Agent Deployment to schedule on selected nodes
  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  ## Ref: https://kubernetes.io/docs/user-guide/node-selection/
  #
  nodeSelector: {}

  ## @param affinity - object - optional
  ## Allow the Cluster Agent Deployment to schedule using affinity rules
  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
  #
  affinity: {}

  ## @param healthPort - integer - optional - default: 5555
  ## Port number use the cluster-agent to server healthz endpoint
  healthPort: 5555

  ## @param livenessProbe - object - required
  ## Override the agent's liveness probe logic from the default:
  ## In case of issues with the probe, you can disable it with the
  ## following values, to allow easier investigating:
  #
  livenessProbe:
    httpGet:
      port: 5555
      path: /live
      scheme: HTTP
    initialDelaySeconds: 15
    periodSeconds: 15
    timeoutSeconds: 5
    successThreshold: 1
    failureThreshold: 6

  ## @param readinessProbe - object - required
  ## Override the cluster-agent's readiness probe logic from the default:
  #
  readinessProbe:
    httpGet:
      port: 5555
      path: /ready
      scheme: HTTP
    initialDelaySeconds: 15
    periodSeconds: 15
    timeoutSeconds: 5
    successThreshold: 1
    failureThreshold: 6

  ## @param strategy - string - required
  ## Allow the Cluster Agent deployment to perform a rolling update on helm update
  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
  #
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

  ## @param podAnnotations - list of key:value strings - optional
  ## Annotations to add to the cluster-agents's pod(s)
  #
  podAnnotations: {}
  #   key: "value"

  ## @param useHostNetwork - boolean - optional
  ## Bind ports on the hostNetwork. Useful for CNI networking where hostPort might
  ## not be supported. The ports need to be available on all hosts. It can be
  ## used for custom metrics instead of a service endpoint.
  ##
  ## WARNING: Make sure that hosts using this are properly firewalled otherwise
  ## metrics and traces are accepted from any host able to connect to this host.
  #
  useHostNetwork:  # true

  ## @param dnsConfig - list of objects - optional
  ## specify dns configuration options for datadog cluster agent containers e.g ndots
  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
  dnsConfig: {}
  #  options:
  #  - name: ndots
  #    value: "1"

  ## @param volumes - list of objects - optional
  ## Specify additional volumes to mount in the cluster-agent container
  #
  volumes: []
  #   - hostPath:
  #       path: <HOST_PATH>
  #     name: <VOLUME_NAME>

  ## @param volumeMounts - list of objects - optional
  ## Specify additional volumes to mount in the cluster-agent container
  #
  volumeMounts: []
  #   - name: <VOLUME_NAME>
  #     mountPath: <CONTAINER_PATH>
  #     readOnly: true

  ## @param datadog-cluster.yaml - object - optional
  ## Specify custom contents for the datadog cluster agent config (datadog-cluster.yaml).
  #
  datadog_cluster_yaml: {}

  ## @param createPodDisruptionBudget - boolean - optional
  ## Specify the pod disruption budget to apply to the cluster agents
  #
  createPodDisruptionBudget: false

agents:
  ## @param enabled - boolean - required
  ## You should keep Datadog DaemonSet enabled!
  ## The exceptional case could be a situation when you need to run
  ## single Datadog pod per every namespace, but you do not need to
  ## re-create a DaemonSet for every non-default namespace install.
  ## Note: StatsD and DogStatsD work over UDP, so you may not
  ## get guaranteed delivery of the metrics in Datadog-per-namespace setup!
  #
  enabled: true

  ## @param image - object - required
  ## Define the Datadog image to work with.
  #
  image:
    ## @param repository - string - required
    ## Define the repository to use:
    ## use "datadog/agent" for Datadog Agent 7
    ## use "datadog/dogstatsd" for Standalone Datadog Agent DogStatsD 7
    #
    repository: datadog/agent

    ## @param tag - string - required
    ## Define the Agent version to use.
    ## Use 7-jmx to enable jmx fetch collection
    #
    tag: 7.21.1

    ## @param doNotCheckTag - boolean - optional
    ## By default, the version passed in agents.image.tag is checked
    ## for compatibility with the version of the chart.
    ## This boolean permits to completely skip this check.
    ## This is useful, for example, for custom tags that are not
    ## respecting semantic versioning
    #
    doNotCheckTag:  # false

    ## @param pullPolicy - string - required
    ## The Kubernetes pull policy.
    #
    pullPolicy: IfNotPresent

    ## @param pullSecrets - list of key:value strings - optional
    ## It is possible to specify docker registry credentials
    ## See https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
    #
    pullSecrets: []
    #   - name: "<REG_SECRET>"

  ## @param rbac - object - required
  ## Provide Daemonset RBAC configuration
  rbac:

    ## @param created - boolean - required
    ## If true, create & use RBAC resources
    #
    create: true

    ## @param serviceAccountName - string - required
    ## Ignored if daemonset.rbac.create is true
    #
    serviceAccountName: default

  ## @param podSecurity - object - optional
  ## Provide Daemonset PodSecurityPolicy configuration
  podSecurity:

    ## @param podSecurityPolicy - object - required
    ## Provide Daemonset PodSecurityPolicy configuration
    podSecurityPolicy:

      ## @param created - boolean - optional
      ## If true, create a PodSecurityPolicy resource for Agent pods
      #
      create: false

    ## @param securityContextConstraints - object - required
    ## Provide Daemonset securityContextConstraints configuration
    securityContextConstraints:

      ## @param created - boolean - optional
      ## If true, create a SecurityContextConstraints resource for Agent pods
      #
      create: false

    ## @param securityContext - object - required
    ## Provide securityContext configuration
    #
    securityContext:
      rule: MustRunAs
      seLinuxOptions:
        user: system_u
        role: system_r
        type: spc_t
        level: s0

    ## @param privileged - boolean - optional
    ## If true, Allow to run privileged containers
    #
    privileged: false

    ## @param capabilites - list - optional
    ## Allowed capabilites
    #
    capabilites:
    - SYS_ADMIN
    - SYS_RESOURCE
    - SYS_PTRACE
    - NET_ADMIN
    - NET_BROADCAST
    - IPC_LOCK

    ## @param volumes - list - optional
    ## Allowed volumes types
    #
    volumes:
    - configMap
    - downwardAPI
    - emptyDir
    - hostPath
    - secret

    ## @param seccompProfiles - list - optional
    ## Allowed seccomp profiles
    #
    seccompProfiles:
    - "runtime/default"
    - "localhost/system-probe"

    ## @param apparmorProfiles - list - optional
    ## Allowed apparmor profiles
    #
    apparmorProfiles:
    - "runtime/default"

  containers:
    agent:
      ## @param env - list - required
      ## Additional environment variables for the agent container.
      #
      env: []

      ## @param logLevel - string - optional
      ## Set logging verbosity, valid log levels are:
      ## trace, debug, info, warn, error, critical, and off.
      ## If not set, fall back to the value of datadog.logLevel.
      #
      logLevel:  # INFO

      ## @param resources - object - required
      ## Resource requests and limits for the agent container.
      #
      resources: {}
      #  requests:
      #    cpu: 200m
      #    memory: 256Mi
      #  limits:
      #    cpu: 200m
      #    memory: 256Mi

      ## @param livenessProbe - object - required
      ## Override the agent's liveness probe logic from the default:
      ## In case of issues with the probe, you can disable it with the
      ## following values, to allow easier investigating:
      #
      livenessProbe:
        httpGet:
          path: /live
          port: 5555
        initialDelaySeconds: 15
        periodSeconds: 15
        timeoutSeconds: 5
        successThreshold: 1
        failureThreshold: 6

      ## @param readinessProbe - object - required
      ## Override the agent's readiness probe logic from the default:
      ## In case of issues with the probe, you can disable it with the
      ## following values, to allow easier investigating:
      #
      readinessProbe:
        httpGet:
          path: /ready
          port: 5555
        initialDelaySeconds: 15
        periodSeconds: 15
        timeoutSeconds: 5
        successThreshold: 1
        failureThreshold: 6

    processAgent:
      ## @param env - list - required
      ## Additional environment variables for the process-agent container.
      #
      env: []

      ## @param logLevel - string - optional
      ## Set logging verbosity, valid log levels are:
      ## trace, debug, info, warn, error, critical, and off.
      ## If not set, fall back to the value of datadog.logLevel.
      #
      logLevel:  # INFO

      ## @param resources - object - required
      ## Resource requests and limits for the process-agent container.
      #
      resources: {}
      #  requests:
      #    cpu: 100m
      #    memory: 200Mi
      #  limits:
      #    cpu: 100m
      #    memory: 200Mi

    traceAgent:
      ## @param env - list - required
      ## Additional environment variables for the trace-agent container.
      #
      env:

      ## @param logLevel - string - optional
      ## Set logging verbosity, valid log levels are:
      ## trace, debug, info, warn, error, critical, and off.
      ## If not set, fall back to the value of datadog.logLevel.
      #
      logLevel:  # INFO

      ## @param resources - object - required
      ## Resource requests and limits for the trace-agent container.
      #
      resources: {}
      #  requests:
      #    cpu: 100m
      #    memory: 200Mi
      #  limits:
      #    cpu: 100m
      #    memory: 200Mi

      ## @param livenessProbe - object - optional
      ## Override the trace agent's liveness probe logic from the default:
      ## In case of issues with the probe, you can disable it with the
      ## following values, to allow easier investigating:
      #
      livenessProbe:
        tcpSocket:
          port: 8126
        initialDelaySeconds: 15
        periodSeconds: 15
        timeoutSeconds: 5

    systemProbe:
      ## @param env - list - required
      ## Additional environment variables for the system-probe container.
      #
      env: []

      ## @param logLevel - string - optional
      ## Set logging verbosity, valid log levels are:
      ## trace, debug, info, warn, error, critical, and off.
      ## If not set, fall back to the value of datadog.logLevel.
      #
      logLevel:  # INFO

      ## @param resources - object - required
      ## Resource requests and limits for the system-probe container.
      #
      resources: {}
      #  requests:
      #    cpu: 100m
      #    memory: 200Mi
      #  limits:
      #    cpu: 100m
      #    memory: 200Mi

    initContainers:
      ## @param resources - object - required
      ## Resource requests and limits for the init containers.
      #
      resources: {}
      #  requests:
      #    cpu: 100m
      #    memory: 200Mi
      #  limits:
      #    cpu: 100m
      #    memory: 200Mi

  ## @param volumes - list of objects - optional
  ## Specify additional volumes to mount in the dd-agent container
  #
  volumes: []
  #   - hostPath:
  #       path: <HOST_PATH>
  #     name: <VOLUME_NAME>

  ## @param volumeMounts - list of objects - optional
  ## Specify additional volumes to mount in the dd-agent container
  #
  volumeMounts: []
  #   - name: <VOLUME_NAME>
  #     mountPath: <CONTAINER_PATH>
  #     readOnly: true

  ## @param useHostNetwork - boolean - optional
  ## Bind ports on the hostNetwork. Useful for CNI networking where hostPort might
  ## not be supported. The ports need to be available on all hosts. It Can be
  ## used for custom metrics instead of a service endpoint.
  ##
  ## WARNING: Make sure that hosts using this are properly firewalled otherwise
  ## metrics and traces are accepted from any host able to connect to this host.
  #
  useHostNetwork: false

  ## @param dnsConfig - list of objects - optional
  ## specify dns configuration options for datadog cluster agent containers e.g ndots
  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
  dnsConfig: {}
  #  options:
  #  - name: ndots
  #    value: "1"

  ## @param podAnnotations - list of key:value strings - optional
  ## Annotations to add to the DaemonSet's Pods
  #
  podAnnotations: {}
  #   <POD_ANNOTATION>: '[{"key": "<KEY>", "value": "<VALUE>"}]'

  ## @param tolerations - array - optional
  ## Allow the DaemonSet to schedule on tainted nodes (requires Kubernetes >= 1.6)
  #
  tolerations: []

  ## @param nodeSelector - object - optional
  ## Allow the DaemonSet to schedule on selected nodes
  ## Ref: https://kubernetes.io/docs/user-guide/node-selection/
  #
  nodeSelector: {}

  ## @param affinity - object - optional
  ## Allow the DaemonSet to schedule using affinity rules
  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
  #
  affinity: {}

  ## @param updateStrategy - string - optional
  ## Allow the DaemonSet to perform a rolling update on helm update
  ## ref: https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/
  #
  updateStrategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: "10%"

  ## @param priorityClassName - string - optional
  ## Sets PriorityClassName if defined.
  #
  priorityClassName:

  ## @param podLabels - object - optional
  ## Sets podLabels if defined.
  #
  podLabels: {}

  ## @param useConfigMap - boolean - optional
  ## Configures a configmap to provide the agent configuration
  ## Use this in combination with the `agent.customAgentConfig` parameter.
  #
  useConfigMap:  # false

  ## @param customAgentConfig - object - optional
  ## Specify custom contents for the datadog agent config (datadog.yaml).
  ## ref: https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6
  ## ref: https://github.com/DataDog/datadog-agent/blob/master/pkg/config/config_template.yaml
  ## Note the `agents.useConfigMap` needs to be set to `true` for this parameter to be taken into account.
  #
  customAgentConfig: {}
  #   # Autodiscovery for Kubernetes
  #   listeners:
  #     - name: kubelet
  #   config_providers:
  #     - name: kubelet
  #       polling: true
  #     # needed to support legacy docker label config templates
  #     - name: docker
  #       polling: true
  #
  #   # Enable APM by setting the DD_APM_ENABLED envvar to true, or override this configuration
  #   apm_config:
  #     enabled: false
  #     apm_non_local_traffic: true
  #
  #   # Enable java cgroup handling. Only one of those options should be enabled,
  #   # depending on the agent version you are using along that chart.
  #
  #   # agent version < 6.15
  #   # jmx_use_cgroup_memory_limit: true
  #
  #   # agent version >= 6.15
  #   # jmx_use_container_support: true

clusterChecksRunner:
  ## @param enabled - boolean - required
  ## If true, deploys agent dedicated for running the Cluster Checks instead of running in the Daemonset's agents.
  ## ref: https://docs.datadoghq.com/agent/autodiscovery/clusterchecks/
  #
  enabled: false

  ## @param image - object - required
  ## Define the Datadog image to work with.
  #
  image:

    ## @param repository - string - required
    ## Define the repository to use:
    ## use "datadog/agent" for Datadog Agent 7
    ## use "datadog/dogstatsd" for Standalone Datadog Agent DogStatsD 7
    #
    repository: datadog/agent

    ## @param tag - string - required
    ## Define the Agent version to use.
    ## Use 7-jmx to enable jmx fetch collection
    #
    tag: 7.20.2

    ## @param pullPolicy - string - required
    ## The Kubernetes pull policy.
    #
    pullPolicy: IfNotPresent

    ## @param pullSecrets - list of key:value strings - optional
    ## It is possible to specify docker registry credentials
    ## See https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
    #
    pullSecrets: []
    #   - name: "<REG_SECRET>"

  ## @param createPodDisruptionBudget - boolean - optional
  ## Specify the pod disruption budget to apply to the cluster checks agents
  #
  createPodDisruptionBudget: false

  ## @param rbac - object - required
  ## Provide Cluster Checks Deployment pods RBAC configuration
  rbac:
    ## @param created - boolean - required
    ## If true, create & use RBAC resources
    #
    create: true

    ## @param dedicated - boolean - required
    ## If true, use a dedicated RBAC resource for the cluster checks agent(s)
    #
    dedicated: false

    ## @param serviceAccountAnnotations - object - required
    ## Annotations to add to the ServiceAccount if clusterChecksRunner.rbac.dedicated is true
    #
    serviceAccountAnnotations: {}

    ## @param serviceAccountName - string - required
    ## Ignored if clusterChecksRunner.rbac.create is true
    #
    serviceAccountName: default

  ## @param replicas - integer - required
  ## If you want to deploy the clusterChecks agent in HA, keep at least clusterChecksRunner.replicas set to 2.
  ## And increase the clusterChecksRunner.replicas according to the number of Cluster Checks.
  #
  replicas: 2

  ## @param resources - object -required
  ## Datadog clusterchecks-agent resource requests and limits.
  #
  resources: {}
  # requests:
  #   cpu: 200m
  #   memory: 500Mi
  # limits:
  #   cpu: 200m
  #   memory: 500Mi

  ## @param affinity - object - optional
  ## Allow the ClusterChecks Deployment to schedule using affinity rules.
  ## By default, ClusterChecks Deployment Pods are forced to run on different Nodes.
  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
  #
  affinity: {}

  ## @param strategy - string - optional
  ## Allow the ClusterChecks deployment to perform a rolling update on helm update
  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
  #
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

  ## @param dnsConfig - list of objects - optional
  ## specify dns configuration options for datadog cluster agent containers e.g ndots
  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
  dnsConfig: {}
  #  options:
  #  - name: ndots
  #    value: "1"

  ## @param nodeSelector - object - optional
  ## Allow the ClusterChecks Deployment to schedule on selected nodes
  ## Ref: https://kubernetes.io/docs/user-guide/node-selection/
  #
  nodeSelector: {}

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

  ## @param livenessProbe - object - required
  ## In case of issues with the probe, you can disable it with the
  ## following values, to allow easier investigating:
  #
  # livenessProbe:
  #   exec:
  #     command: ["/bin/true"]
  #
  livenessProbe:
    httpGet:
      path: /live
      port: 5555
    initialDelaySeconds: 15
    periodSeconds: 15
    timeoutSeconds: 5
    successThreshold: 1
    failureThreshold: 6

  ## @param readinessProbe - object - required
  ## In case of issues with the probe, you can disable it with the
  ## following values, to allow easier investigating:
  #
  # readinessProbe:
  #   exec:
  #     command: ["/bin/true"]
  #
  readinessProbe:
    httpGet:
      path: /ready
      port: 5555
    initialDelaySeconds: 15
    periodSeconds: 15
    timeoutSeconds: 5
    successThreshold: 1
    failureThreshold: 6

  ## @param env - list of object - optional
  ## The dd-agent supports many environment variables
  ## ref: https://github.com/DataDog/datadog-agent/tree/master/Dockerfiles/agent#environment-variables
  #
  env: []
  #   - name: <ENV_VAR_NAME>
  #     value: <ENV_VAR_VALUE>

  ## @param volumes - list of objects - optional
  ## Specify additional volumes to mount in the cluster checks container
  #
  volumes: []
  #   - hostPath:
  #       path: <HOST_PATH>
  #     name: <VOLUME_NAME>

  ## @param volumeMounts - list of objects - optional
  ## Specify additional volumes to mount in the cluster checks container
  #
  volumeMounts: []
  #   - name: <VOLUME_NAME>
  #     mountPath: <CONTAINER_PATH>
  #     readOnly: true

kube-state-metrics:
  rbac:
    ## @param created - boolean - required
    ## If true, create & use RBAC resources
    #
    create: true

  serviceAccount:
    ## @param created - boolean - required
    ## If true, create ServiceAccount, require rbac kube-state-metrics.rbac.create true
    #
    create: true
    ## @param name - string - required
    ## The name of the ServiceAccount to use.
    ## If not set and create is true, a name is generated using the fullname template
    #
    name:

  ## @param resources - object - optional
  ## Resource requests and limits for the kube-state-metrics container.
  #
  resources: {}
  #   requests:
  #     cpu: 200m
  #     memory: 256Mi
  #   limits:
  #     cpu: 200m
  #     memory: 256Mi
