Kubernetes に Datadog Agent をインストールする

概要

このページでは、Kubernetes 環境に Datadog Agent をインストールする手順を説明します。

AWS EKS (Elastic Kubernetes Service)、AKS (Azure Kubernetes Service)、GKE (Google Kubernetes Engine)、Red Hat OpenShift、Rancher、OKE (Oracle Container Engine for Kubernetes) など主要な Kubernetes ディストリビューションの専用ドキュメントやサンプルは Kubernetes ディストリビューション に掲載されています。

Kubernetes のコントロールプレーンをモニターするための専用のドキュメントと例については、Kubernetes のコントロールプレーンのモニター を参照してください。

Kubernetes と Datadog Agent の最小バージョン

Kubernetes の後期バージョンに関連する一部の機能では、Datadog Agent の最低バージョンが必要です。

Kubernetes バージョンAgent バージョンCluster Agent バージョン理由
1.16.0+7.19.0+1.9.0+Kubelet メトリクスの非推奨化
1.21.0+7.36.0+1.20.0+Kubernetes リソースの非推奨化
1.22.0+7.37.0+7.37.0+動的サービスアカウントトークンをサポート
1.25.0+7.40.0+7.40.0+v1 API グループをサポート
1.33.0+7.67.0+7.67.0+/pods 出力の Kubernetes AllocatedResources との非互換性の修正

最適な互換性を得るために、Datadog では Cluster Agent と Agent のバージョンを同じにすることを推奨しています。

インストール

Datadog の Kubernetes でのインストール ページを利用すると、インストールプロセスの説明が表示されます。

  1. インストール方法を選択する

    以下のインストール方法のいずれかを使用します。

SSI (Single Step Instrumentation) を使用して Kubernetes 環境に APM を実装する予定の場合は、独自のネームスペースに Datadog Agent をインストールしてください。SSI は、Datadog Agent と同じネームスペースに Pod をインスツルメントしません。
Helmkubectl CLI が必要です。
  1. Datadog Operator をインストールする

    現在のネームスペースに Datadog Operator をインストールするには、以下を実行します。

    helm repo add datadog https://helm.datadoghq.com
    helm install datadog-operator datadog/datadog-operator
    kubectl create secret generic datadog-secret --from-literal api-key=<DATADOG_API_KEY>
    
  2. datadog-agent.yaml を構成する

    以下の内容を含む、datadog-agent.yaml というファイルを作成します。

    apiVersion: datadoghq.com/v2alpha1
    kind: DatadogAgent
    metadata:
      name: datadog
    spec:
      global:
        clusterName: <CLUSTER_NAME>
        site: <DATADOG_SITE>
        credentials:
          apiSecret:
            secretName: datadog-secret
            keyName: api-key
    
    • <CLUSTER_NAME> をご使用のクラスターの名前に置き換えます。
    • <DATADOG_SITE>をご使用の Datadog サイト に置き換えます。ご使用のサイトは、 です (右側で正しいサイトが選択されていることを確認してください)。
  3. 上記の構成ファイルを使用して Agent をデプロイする

    次を実行します。

    kubectl apply -f datadog-agent.yaml
    
Helm が必要です。
  1. Datadog Helm リポジトリを追加する

    次を実行します。

    helm repo add datadog https://helm.datadoghq.com
    helm repo update
    kubectl create secret generic datadog-secret --from-literal api-key=<DATADOG_API_KEY>
    
  2. datadog-values.yaml を構成する

    以下の内容を含む、datadog-values.yaml というファイルを作成します。

    datadog:
     apiKeyExistingSecret: datadog-secret
     clusterName: <CLUSTER_NAME>
     site: <DATADOG_SITE>
    
    • <CLUSTER_NAME> をご使用のクラスターの名前に置き換えます。
    • <DATADOG_SITE>をご使用の Datadog サイト に置き換えます。ご使用のサイトは、 です (右側で正しいサイトが選択されていることを確認してください)。
  3. 上記の構成ファイルを使用して Agent をデプロイする

    次を実行します。

    helm install datadog-agent -f datadog-values.yaml datadog/datadog
    
    Windows の場合は、 --set targetSystem=windowshelm install コマンドに追加します。
  1. Agent のインストールを確認する

    Agent Pod (app.kubernetes.io/component:agent というタグが付いています) が、Datadog の Containers ページに表示されていることを確認します。Agent Pod はデプロイ後、数分以内に検出されます。

<CLUSTER_NAME> では、ホストとクラスターチェックのスコープを設定できます。この一意の名前はドットで区切られたトークンであり、以下の制限に従う必要があります。

  • アルファベットの小文字、数字、ハイフンのみで構成されている必要があります。
  • 文字で始まる必要があります。
  • 末尾は数字または文字である必要があります。
  • 80 文字以内である必要があります。

非特権インストール

非特権インストールを実行するには、必要な <USER_ID> および <GROUP ID> に関連する設定に、以下の securityContext を追加します。

  • <USER_ID> を Datadog Agent を実行する UID に置き換えます。Datadog では、Datadog Agent v7.48 以上の 既存の dd-agent ユーザーに対し、この値を 100 に設定することを推奨しています。
  • <GROUP_ID> を Docker または containerd ソケットを所有するグループ ID に置き換えます。

これにより、Agent の Pod レベルで securityContext が設定されます。

非特権インストールを実行するには、datadog-agent.yaml に以下を追加します。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    clusterName: <CLUSTER_NAME>
    site: <DATADOG_SITE>
    credentials:
      apiSecret:
        secretName: datadog-secret
        keyName: api-key

  override:
    nodeAgent:
      securityContext:
        runAsUser:  <USER_ID>
        supplementalGroups:
          - <GROUP_ID>

続けて Agent をデプロイします。

kubectl apply -f datadog-agent.yaml

非特権インストールを実行するには、datadog-values.yaml ファイルに以下を追加します。

datadog:
  apiKeyExistingSecret: datadog-secret
  clusterName: <CLUSTER_NAME>
  site: <DATADOG_SITE>
  securityContext:
    runAsUser: <USER_ID>
    supplementalGroups:
      - <GROUP_ID>

続けて Agent をデプロイします。

helm install datadog-agent -f datadog-values.yaml datadog/datadog

コンテナレジストリ

Datadog では、Datadog コンテナレジストリ、GAR (Google Artifact Registry)、Amazon ECR、Azure ACR、および Docker Hub にコンテナイメージを公開しています。

RegistryPath
Datadog Container Registryregistry.datadoghq.com
Google Artifact Registrygcr.io/datadoghq
Google Artifact Registry (Europe)eu.gcr.io/datadoghq
Google Artifact Registry (Asia)asia.gcr.io/datadoghq
Amazon ECRpublic.ecr.aws/datadog
Azure ACRdatadoghq.azurecr.io
Docker Hubdocker.io/datadog

デフォルトでは、Datadog Agent Helm チャートは、Datadog サイト、クラスタータイプ、および registryMigrationMode を基に Agent のイメージレジストリを決定します。これらの値と環境除外によっては、Agent イメージが Datadog コンテナレジストリ (registry.datadoghq.com) またはサイト固有のレジストリから取得される場合があります。Datadog Operator チャートは、デフォルトで Datadog Agent Helm チャートの依存関係として含まれています。Datadog Operator チャートバージョン 2.19.0 以降では、その依存関係を通じて Operator をインストールすると、Datadog Agent Helm チャートの registryMigrationMode が Operator によって管理される Agent イメージに適用されます。Operator Helm チャート自体は registryMigrationMode を定義しません。Operator Pod イメージは、Operator チャートの image.repository 値によって個別に制御されます。

Docker Hub はイメージプルレート制限の対象です。Docker Hub をご利用でない場合は、別のレジストリから取得するように Datadog Agent および Cluster Agent の構成を更新することをお勧めします。その手順については、コンテナのレジストリを変更するを参照してください。

Datadog Operator チャートバージョン 2.19.0 以降では、Datadog Agent Helm チャートの依存関係を通じて Operator がインストールされた場合、Datadog Agent Helm チャートの registryMigrationMode は Operator によって管理される Agent イメージに registry.datadoghq.com を使用できます。以前のバージョンでは、サイト固有のレジストリ (gcr.io/datadoghqeu.gcr.io/datadoghqasia.gcr.io/datadoghq、または datadoghq.azurecr.io) から Agent イメージを取得していました。このデプロイメントパスで Agent イメージを取得するために引き続き以前のサイト固有のレジストリを使用するには、Datadog Agent Helm チャートの values.yamlregistryMigrationMode: "" を設定してください。この設定は、レジストリを明示的に設定している場合は効果がありません。また、スタンドアロンの Operator Helm チャートの設定ではありません。Operator Pod イメージに別のレジストリを使用するには、Operator Helm の values.yamlimage.repository を設定してください。

別のコンテナレジストリを使用するには、datadog-agent.yamlglobal.registry を変更してください。

たとえば、Amazon ECR を使用する場合は次のようにします。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    clusterName: <CLUSTER_NAME>
    registry: public.ecr.aws/datadog
    site: <DATADOG_SITE>
    credentials:
      apiSecret:
        secretName: datadog-secret
        keyName: api-key

別のコンテナレジストリを使用するには、datadog-values.yamlregistry を変更してください。

たとえば、Amazon ECR を使用する場合は次のようにします。

registry: public.ecr.aws/datadog
datadog:
  apiKeyExistingSecret: datadog-secret
  site: <DATADOG_SITE>

詳細については、コンテナのレジストリを変更する を参照してください。

アンインストール

kubectl delete datadogagent datadog
helm delete datadog-operator

このコマンドは、Datadog Operator をインストールし、Datadog Agent をデプロイすることによって作成されたすべての Kubernetes リソースを削除します。

helm uninstall datadog-agent

次のステップ

Datadog でインフラストラクチャーをモニターする

コンテナインフラストラクチャーを可視化し、リソースメトリクスとファセット検索を利用するには、Containers ページを使用します。[Containers] ページの使用方法については、コンテナビュー を参照してください。

環境内で使用されているすべてのイメージに関する情報を得るには、コンテナイメージ ページを使用します。このページには、Cloud Security から提供される、コンテナイメージで見つかった脆弱性も表示されます。[コンテナイメージ] ページの使用方法については、コンテナイメージビュー を参照してください。

Kubernetes セクションには、すべての Kubernetes リソースの概要が表示されます。オーケストラエクスプローラー を利用すると、特定のネームスペースやアベイラビリティゾーン内の Pod、デプロイメント、およびその他の Kubernetes コンセプトの状態をモニターしたり、デプロイメント内で失敗した Pod のリソースの仕様を確認したり、ノードのアクティビティを関連するログに関連付けたりすることができます。リソース使用状況 ページでは、インフラストラクチャー全体で Kubernetes ワークロードがどのようにコンピューティングリソースを使用しているかに関する洞察が得られます。これらのページの使用方法については、[オーケストレーターエクスプローラー および Kubernetes リソース利用 を参照してください。

機能を有効にする


参考資料