y-ohgi's blog

TODO: ここになにかかく

GKE-autopilotへhelmでdatadog-agentを導入

TL;DR

  • GKE-autopilot環境下へhelmでdatadog-agentをインストールする

概要

helmを利用してdatadog-agentの導入を行います

Versions

  • GKE-autopilot
    • 1.27.3-gke.100
  • helm
    • v3.13.0
  • datadog(helm)
    • 3.39.1
      • 2023/10/10時点のlatestです。理由は後述します。
    • 3.34.3
  • macOS
    • 13.5.2

How To

初期設定

GKE-autopilotの作成を行います。
今回は初期設定で良かったため、コンソール上でポチポチしました。

GKEを操作するためのプラグイン、zoneとregionを東京に指定します。

gcloud components install gke-gcloud-auth-plugin
gcloud config set compute/zone asia-northeast1
gcloud config set compute/region asia-northeast1

GKEのクレデンシャルを取得します

$ gcloud container clusters get-credentials ${CLUSTER_NAME}

brewからインストール可能なため、素直にインストールを行います。

$ brew install helm

datadogのインストール

公式のインストールガイドに則ってインストールを行います。
Google Kubernetes Engine, Agent

helmのrepositoryをローカルに追加します。

$ helm repo add datadog https://helm.datadoghq.com
$ helm repo update

helmのrepositoryがローカルに追加されていること、v3.39.1であることを確認。

$ helm search repo
NAME                                    CHART VERSION   APP VERSION     DESCRIPTION
datadog/datadog                         3.39.1          7               Datadog Agent
datadog/datadog-crds                    1.2.0           1               Datadog Kubernetes CRDs chart
datadog/datadog-operator                1.2.1           1.2.0           Datadog Operator
datadog/extendeddaemonset               v0.2.2          v0.7.0          Extended Daemonset Controller
datadog/observability-pipelines-worker  1.5.1           1.5.1           Observability Pipelines Worker
datadog/synthetics-private-location     0.15.17         1.39.0          Datadog Synthetics Private Location

datadogデフォルトコンフィグの確認

helmで追加したdatadogのデフォルトコンフィグを確認します。

$ helm inspect values datadog/datadog | less

datadogのイメージは7.47.1を使用していることを確認

    # agents.image.tag -- Define the Agent version to use
    tag: 7.47.1

デフォルトだとapmが無効になっていることを確認

  ## Enable apm agent and provide custom configs
  apm:
    # datadog.apm.socketEnabled -- Enable APM over Socket (Unix Socket or windows named pipe)

    ## ref: https://docs.datadoghq.com/agent/kubernetes/apm/
    socketEnabled: true

    # datadog.apm.portEnabled -- Enable APM over TCP communication (port 8126 by default)

    ## ref: https://docs.datadoghq.com/agent/kubernetes/apm/
    portEnabled: false

    # datadog.apm.enabled -- Enable this to enable APM and tracing, on port 8126
    # DEPRECATED. Use datadog.apm.portEnabled instead

    ## ref: https://github.com/DataDog/docker-dd-agent#tracing-from-the-host
    enabled: false

autopilotには対応していないことを確認

providers:
  gke:
    # providers.gke.autopilot -- Enables Datadog Agent deployment on GKE Autopilot
    autopilot: false

datadogのインストール

helmでGKEへdatadogをインストールを行います。
また、上述したとおり、apmが使用できなかったり、autopilotに対応していない点なども対応していきます。

namespaceの作成

namespaceを定義するmanifestを作成し、applyします。

apiVersion: v1
kind: Namespace
metadata:
  name: datadog
  labels:
    env: datadog
$ kubectl apply -f namespace.yaml

namespaceが作成されていることを確認します。

$ kubectl get namespace
NAME                       STATUS   AGE
datadog                    Active   24s
default                    Active   29m
 :

インストール

ここで課題です。
現行バージョン(3.39.2)の場合、datadog podが動作しないため、下記issueに従いバージョン 3.34..3 を使用します。
ref: [BUG] · Issue #18100 · DataDog/datadog-agent

$ helm install datadog-agent \
  --namespace datadog \
  --set datadog.apiKey=${DATADOG_API_KEY} \
  --set datadog.appKey=${DATADOG_APP_KEY} \
  --set clusterAgent.enabled=true \
  --set clusterAgent.metricsProvider.enabled=true \
  --set providers.gke.autopilot=true \
  --set datadog.logs.enabled=true \
  --set datadog.apm.enabled=true \
  datadog/datadog \
  --version 3.34.3

蛇足ですが、以前にもlatestバージョンを使用し動作しなかったことがあるため、バージョンの変更を考慮することも検討すると良いかと思います。
datadogのhelmバージョンが更新される毎に適宜更新する必要がありますが、latestの場合動作しない可能性があるため手順書やmanifestなどには --version <VERSION> をしていすることを意識したいです。

動作確認

下記datadogコンソールからclusterのイベントが受け付けられていることを確認します。
https://app.datadoghq.com/event/explorer

所感

datadogのhelmを使用する場合、バージョンの指定で躓くことが過去にもあったためこの記事を書くことにしました。
何かの一助になれば幸いです。