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