Cluster Agentのドキュメント
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

Cluster Agentのドキュメント

お使いの Kubernetes クラスタで Datadog Cluster Agent を設定するには、以下の手順に従います。

  1. Datadog Cluster Agent の設定
  2. Agent を構成し、Datadog Cluster Agent と通信します。

Datadog Cluster Agent を構成する

手順 1 - RBAC アクセス許可の構成

Datadog Cluster Agent を実行するには、適切な RBAC が必要です。

  1. Datadog Cluster Agent RBAC フォルダーにあるマニフェストを確認します。Cluster Agentを使用する場合、Kubernetes API サーバーと通信できるのは Cluster Agent だけで、Node Agent ではないことにご注意ください。

  2. Cluster Agent に対する RBAC アクセス許可を構成するには、以下のマニフェストを適用します。(Node Agent デーモンセットを設定する際に、すでに行っている可能性があります。)

kubectl apply -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/cluster-agent/rbac.yaml"
kubectl apply -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/cluster-agent/cluster-agent-rbac.yaml"

これにより、Cluster Agent に適切な ServiceAccountClusterRoleClusterRoleBinding が作成され、ノード Agent の ClusterRole が更新されます。

Azure Kubernetes Service (AKS) の場合、追加のアクセス許可が必要になる可能性もあります。DCA のため AKS で RBAC に関する「よくあるご質問」を参照してください。

手順 2 - Cluster Agent - Agent 間通信のセキュリティ保護

次のオプションを 1 つ使用して、Datadog Agent と Datadog Cluster Agent 間の通信を保護します。

  • シークレットを作成して、環境変数でアクセスします。
  • 環境変数にトークンを設定します。
  • ConfigMap でシークレットを管理します。

シークレットを作成せずに値を設定すると、トークンは PodSpec で読み込み可能となります。

  1. 以下のコマンドを実行して、シークレットトークンを作成します。

    echo -n '<ThirtyX2XcharactersXlongXtoken>' | base64
    
  2. この 1 行コマンドを実行します。

    kubectl create secret generic datadog-cluster-agent --from-literal=token='<ThirtyX2XcharactersXlongXtoken>'
    

    または、manifest/cluster-agent ディレクトリにある agent-secret.yaml ファイルのシークレットの値を変更するか、以下を使い作成します。

    kubectl create -f Dockerfiles/manifests/cluster-agent/agent-secret.yaml

  3. Cluster Agent のマニフェスト内で、環境変数 DD_CLUSTER_AGENT_AUTH_TOKEN を使用して、このシークレットを参照します。詳細は、手順 3 - Cluster Agent とそのサービスの作成) および 手順 2 - Datadog Cluster Agent の有効化をご覧ください。

  1. 以下のコマンドを実行して、シークレットトークンを作成します。

    echo -n '<ThirtyX2XcharactersXlongXtoken>' | base64
    
  2. Cluster Agent とノードベースの Agent のマニフェスト内で、環境変数 DD_CLUSTER_AGENT_AUTH_TOKEN を使用して、このシークレットを参照します。

              - name: DD_CLUSTER_AGENT_AUTH_TOKEN
                value: "<ThirtyX2XcharactersXlongXtoken>"
    
  1. 以下のコマンドを実行して、シークレットトークンを作成します。

    echo -n '<ThirtyX2XcharactersXlongXtoken>' | base64
    
  2. 選択した変数を使用して、datadog.yaml ファイルに datadog-cluster.yaml を作成し、対応する ConfigMap を作成します。

    kubectl create configmap dca-yaml --from-file datadog-cluster.yaml
    

: この設定は、Cluster Agent のマニフェストとノードエージェントのマニフェストの両方で必要です。

手順 3 - Cluster Agent とそのサービスの作成

  1. 以下のマニフェストをダウンロードします。
  1. secrets.yaml マニフェストで、PUT_YOUR_BASE64_ENCODED_API_KEY_HERE を base64 でエンコードされた Datadog API キーに置き換えます。

    echo -n '<Your API key>' | base64
    
  2. cluster-agent-deployment.yaml マニフェストで、手順 2 - Cluster Agent - Agent 間通信のセキュリティ保護のトークンを設定します。その形式は、シークレットの設定方法により異なります。手順はマニフェストを参照してください。

  3. 実行: kubectl apply -f agent-services.yaml

  4. 実行: kubectl apply -f secrets.yaml

  5. 実行: kubectl apply -f install_info-configmap.yaml

  6. 最後に Datadog Cluster Agent kubectl apply -f cluster-agent-deployment.yaml をデプロイします。

手順 4 - 検証

この時点で、次のような状態になっているはずです。

-> kubectl get deploy

NAME                    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
datadog-cluster-agent   1         1         1            1           1d

-> kubectl get secret

NAME                         TYPE                                  DATA      AGE
datadog-agent-cluster-agent  Opaque                                1         1d

-> kubectl get pods -l app=datadog-cluster-agent

datadog-cluster-agent-8568545574-x9tc9   1/1       Running   0          2h

-> kubectl get service -l app=datadog-cluster-agent

NAME                    TYPE           CLUSTER-IP       EXTERNAL-IP        PORT(S)          AGE
datadog-cluster-agent   ClusterIP      10.100.202.234   none               5005/TCP         1d

: すでに Datadog Agent を実行中の場合、agent-rbac.yaml マニフェスト を適用しないとCluster Agent が実行されない可能性があります。

Datadog Agent の構成

Datadog Cluster Agent の設定が終了したら、Datadog Agent と Datadog Cluster Agent が通信するように構成します。

セットアップ

手順 1 - ノードベースの Agent に対する RBAC アクセス許可の構成

  1. agent-rbac.yaml マニフェストをダウンロードします。: Cluster Agent を使用する場合、Kubernetes API サーバーと通信できるのは Cluster Agent だけで、Node Agent ではないことにご注意ください。

  2. 実行: kubectl apply -f agent-rbac.yaml

手順 2 - Datadog Agent の有効化

  1. daemonset.yaml マニフェストをダウンロードします。

  2. daemonset.yaml マニフェストで、<DD_SITE> を使用中の Datadog サイト(datadoghq.comdatadoghq.eu など)と置き換えます。この値の初期設定は datadoghq.com です。

  3. daemonset.yaml マニフェストで、手順 2 - Cluster Agent - Agent 間通信のセキュリティ保護のトークンを設定します。その形式は、シークレットの設定方法により異なります。手順はマニフェストを参照してください。

  4. daemonset.yaml マニフェストで、環境変数 DD_CLUSTER_AGENT_ENABLEDtrue に設定されていることを確認します。

  5. (任意) クラスターが単一環境を含む場合、agent.yaml<DD_ENV> を設定することも可能です。

  6. 次のコマンドで DaemonSet を作成します : kubectl apply -f daemonset.yaml

検証

次を実行します。

kubectl get pods | grep agent

次のようになるはずです。

datadog-agent-4k9cd                      1/1       Running   0          2h
datadog-agent-4v884                      1/1       Running   0          2h
datadog-agent-9d5bl                      1/1       Running   0          2h
datadog-agent-dtlkg                      1/1       Running   0          2h
datadog-agent-jllww                      1/1       Running   0          2h
datadog-agent-rdgwz                      1/1       Running   0          2h
datadog-agent-x5wk5                      1/1       Running   0          2h
[...]
datadog-cluster-agent-8568545574-x9tc9   1/1       Running   0          2h

Datadog アカウントに Kubernetes イベントが流れ込み始め、Agent によって収集された関連メトリクスに、それぞれに対応するクラスターレベルのメタデータがタグ付けされます。

その他の参考資料