New announcements for Serverless, Network, RUM, and more from Dash! New announcements from Dash!

Integration ConfigMap

ConfigMap

It is possible to leverage a ConfigMap to configure or enable integrations. To do so, you only need to create a ConfigMap with the integration(s)’s configuration. Then, reference this ConfigMap among the volumes of your Agent’s manifest.

For example, in the following case we customize the name, url, and tags fields of the HTTP check. To enable other integrations, just specify the correct YAML name and make sure it is properly formated.

kind: ConfigMap
apiVersion: v1
metadata:
  name: dd-agent-config
  namespace: default
data:
  http-config: |-
    ad_identifiers:
      - httpd
      - my-custom-httpd
    init_config:
    instances:
    - name: My service
      url: my.service:port/healthz
      tags:
        - service:critical
---

And in the manifest of your Agent (DaemonSet/deployment) add the following:

[...]
        volumeMounts:
        [...]
          - name: dd-agent-config
            mountPath: /conf.d
      volumes:
      [...]
        - name: dd-agent-config
          configMap:
            name: dd-agent-config
            items:
            - key: http-config
              path: http_check.yaml
[...]

Note: See the Autodiscovery Container Identifier documentation for more information on using ad_identifiers to apply Autodiscovery configuration file templates to containers.

Mounting a custom configuration file in a container with a ConfigMap

To mount a custom datadog.yaml in a container with a ConfigMap, employ the following in your DaemonSet manifest:

[...]
        volumeMounts:
        [...]
          - name: confd-config
            mountPath: /conf.d
          - name: datadog-yaml
            mountPath: /etc/datadog-agent/datadog.yaml
            subPath: datadog.yaml
      volumes:
      [...]
        - name: confd-config
          configMap:
            name: dd-agent-config
            items:
              - key: http-config
                path: http_check.yaml
        - name: datadog-yaml
          configMap:
            name: dd-agent-config
            items:
              - key: datadog-yaml
                path: datadog.yaml
[...]

And in your ConfigMap:

kind: ConfigMap
apiVersion: v1
metadata:
  name: dd-agent-config
  namespace: default
data:
  http-config: |-
    init_config:
    instances:
  datadog-yaml: |-
    check_runners: 1
    listeners:
      - name: kubelet
    config_providers:
      - name: kubelet
        polling: true

Annotations

It is also possible to enable integrations via the annotations in the manifest of your application. This can be done with Autodiscovery. For more details, see the Autodiscovery section.

Further Reading

Additional helpful documentation, links, and articles: