The Service Map for APM is here!

Deploying Datadog in Kubernetes using Helm

Helm is a package management tool for Kubernetes.

Installing Helm

Installing the Helm client

brew install kubernetes-helm
sudo snap install helm --classic
choco install kubernetes-helm

For other platforms and methods of installing Helm, refer to the Helm documentation.

Installing the Helm server (Tiller)

If your Kubernetes environment does not use RBAC, the following command installs Tiller in your cluster:

helm init

Refer to Helm’s Tiller documentation for further details.

If your Kubernetes cluster is RBAC-enabled, use the following RBAC to deploy Tiller.

apiVersion: v1  
kind: ServiceAccount  
metadata:  
 name: tiller  
 namespace: kube-system  
---  
apiVersion: rbac.authorization.k8s.io/v1beta1  
kind: ClusterRoleBinding  
metadata:  
 name: tiller  
roleRef:  
 apiGroup: rbac.authorization.k8s.io  
 kind: ClusterRole  
 name: cluster-admin  
subjects:  
 - kind: ServiceAccount  
   name: tiller  
   namespace: kube-system

With this as your tiller-rbac-config.yaml, then run:

kubectl create -f tiller-rbac-config.yaml

helm init --service-account tiller

Refer to Helm’s Tiller/RBAC documentation for further details.

Verify installation

To verify your installation, run:

kubectl get pods -n kube-system -l app=helm

This returns something resembling:

NAME READY STATUS RESTARTS AGE
tiller-deploy-f54b67464-jl5gm 1/1 Running 0 3h16m

Installing the Datadog Helm chart

To install the chart with the release name <RELEASE_NAME>, retrieve your Datadog API key from your Agent installation instructions and run:

helm install --name <RELEASE_NAME> --set datadog.apiKey=<DATADOG_API_KEY> stable/datadog

Refer to the section below for a list of configurable parameters.

This chart adds the Datadog Agent to all nodes in your cluster via a DaemonSet. It also optionally deploys the kube-state-metrics chart and uses it as an additional source of metrics about the cluster. A few minutes after installation, Datadog begins to report hosts and metrics.

Configuration

For a full list of the Datadog chart’s configurable parameters and their default values, refer to the Datadog Helm repository readme.

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example:

helm install --name <RELEASE_NAME> \
  --set datadog.apiKey=<DATADOG_API_KEY>,datadog.logLevel=DEBUG \
  stable/datadog

Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example:

helm install --name <RELEASE_NAME> -f my-values.yaml stable/datadog

You can copy and customize the default values.yaml.

Upgrading the chart

Use the helm upgrade command to upgrade to a new version of the chart, or to change the configuration of your release.

helm upgrade -f my-values.yaml <RELEASE_NAME> stable/datadog --recreate-pods

Enabling integrations with Helm

The Datadog entrypoint copies files with a .yaml extension found in /conf.d and files with .py extension in /check.d to /etc/datadog-agent/conf.d and /etc/datadog-agent/checks.d respectively. The keys for datadog.confd and datadog.checksd should mirror the content found in their respective ConfigMaps, i.e.:

datadog:
  confd:
    redisdb.yaml: |-
      ad_identifiers:
        - redis
        - bitnami/redis
      init_config:
      instances:
        - host: "%%host%%"
          port: "%%port%%"
    jmx.yaml: |-
      ad_identifiers:
        - openjdk
      instance_config:
      instances:
        - host: "%%host%%"
          port: "%%port_0%%"

Uninstalling the Datadog Helm Chart

To uninstall or delete a deployment called <RELEASE_NAME>:

helm delete <RELEASE_NAME>

This command removes all Kubernetes components associated with the chart and deletes the release.