Datadog Operator の概要

Datadog Operator は、Kubernetes 環境に Datadog Agent をデプロイし、構成することができるオープンソースの Kubernetes Operator です。このガイドでは、Datadog Agent をデプロイするために Operator を使用する方法について説明します。

前提条件

  • Kubernetes v1.20.X+
  • Datadog Operator をデプロイするための Helm
  • Datadog Agent をインストールするための Kubernetes コマンドラインツール、kubectl

インストールとデプロイメント

  1. Helm で Datadog Operator をインストールします。
helm repo add datadog https://helm.datadoghq.com
helm install my-datadog-operator datadog/datadog-operator
  1. Create a Kubernetes secret with your API key:
kubectl create secret generic datadog-secret --from-literal api-key=<DATADOG_API_KEY>

Replace <DATADOG_API_KEY> with your Datadog API key.

Note: add the application key for autoscaling using the external metrics server.

  1. DatadogAgent のデプロイメント構成の仕様を記述した datadog-agent.yaml ファイルを作成します。以下のサンプル構成では、メトリクス、ログ、APM を有効にしています。
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiSecret:
        secretName: datadog-secret
        keyName: api-key
  features:
    apm:
      enabled: true
    logCollection:
      enabled: true

For all configuration options, see the Operator configuration spec.

  1. Datadog Agent をデプロイします。
kubectl apply -f /path/to/your/datadog-agent.yaml

Running Agents in a single container

Available in Operator v1.4.0 or later

By default, the Datadog Operator creates an Agent DaemonSet with pods running multiple Agent containers. Datadog Operator v1.4.0 introduces a configuration which allows users to run Agents in a single container. In order to avoid elevating privileges for all Agents in the single container, this feature is only applicable when system-probe or security-agent is not required. For more details, see Running as an unprivileged user on the Agent Data Security page.

To enable this feature add global.containerStrategy: single to the DatadogAgent manifest:

  apiVersion: datadoghq.com/v2alpha1
  kind: DatadogAgent
  metadata:
    name: datadog
  spec:
    global:
      containerStrategy: single
      credentials:
        apiSecret:
          secretName: datadog-secret
          keyName: api-key
    features:
      apm:
        enabled: true
      logCollection:
        enabled: true
With the above configuration, Agent pods run as single containers with three Agent processes. The default for global.containerStrategy is optimized and runs each Agent process in a separate container.

Note: Running multiple Agent processes in a single container is discouraged in orchestrated environments such as Kubernetes. Pods running multiple processes need their lifecycles to be managed by a process manager, which is not directly controllable by Kubernetes and potentially leads to inconsistencies or conflicts in the container lifecycle management.

検証

kubectl get daemonsetkubectl get pod -owide を使用して、インストールを検証します。

2 つのワーカーノードを持つクラスターでは、それぞれのノードに Agent ポッドが作成されているのが確認できるはずです。

$ kubectl get daemonset
NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
datadog-agent   2         2         2       2            2           <none>          5m30s

$ kubectl get pod -owide
NAME                                         READY   STATUS    RESTARTS   AGE     IP            NODE
agent-datadog-operator-d897fc9b-7wbsf        1/1     Running   0          1h      10.244.2.11   kind-worker
datadog-agent-k26tp                          1/1     Running   0          5m59s   10.244.2.13   kind-worker
datadog-agent-zcxx7                          1/1     Running   0          5m59s   10.244.1.7    kind-worker2

クリーンアップ

以下のコマンドは、本ガイドで作成したすべての Kubernetes リソースを削除します。

kubectl delete datadogagent datadog
helm delete my-datadog-operator

その他の参考資料