Helm 차트 v2.7.0+ 또는 Datadog 오퍼레이터 v0.7.0+를 사용해 Datadog 에이전트를 배포하려면 클러스터 에이전트가 기본적으로 활성화되어 있어야 합니다.
Datadog 오퍼레이터 v1.0.0 이래로 클러스터 에이전트는 활성화됩니다. 오퍼레이터는 필수 RBAC를 생성하고, 클러스터 에이전트를 배포하고, 에이전트 DaemonSet 설정을 수정합니다.
오퍼레이터는 또한 일반적으로 양 클러스터 에이전트와 Datadog 에이전트가 통신을 보호하기 위해 공유하는 Secret에서 임의 토큰을 생성합니다. global.clusterAgentToken 필드를 사용해 수동으로 이 토큰을 지정할 수 있습니다. 대신 이 토큰을 포함하는 데이터 키와 기존 Secret 읾을 참조하여 이를 설정할 수도 있습니다.
clusterAgent:# clusterAgent.enabled -- Set this to false to disable Datadog Cluster Agentenabled:true
그런 다음 Datadog Helm 차트를 업그레이드합니다.
이 작업은 자동으로 클러스터 에이전트와 Datadog 에이전트의 필수 RBAC 파일을 업데이트합니다. 양 에이전트는 동일한 API 키를 사용합니다.
오퍼레이터는 또한 일반적으로 양 클러스터 에이전트와 Datadog 에이전트가 통신을 보호하기 위해 공유하는 Secret에서 임의 토큰을 생성합니다. clusterAgent.token 설정을 사용해 수동으로 이 토큰을 지정할 수 있습니다. 대신 clusterAgent.tokenExistingSecret 설정을 통해 token 값을 포함하는 기존 Secret 이름을 참조하여 이를 설정할 수도 있습니다.
이 작업은 클러스터 에이전트를 위해 적절한 ServiceAccount, ClusterRole 및 ClusterRoleBinding를 생성하고 노드 에이전트를 위해 ClusterRole를 업데이트합니다.
Azure 쿠버네티스(Kubernetes) 서비스(AKS)를 사용하는 경우 추가 권한이 필요할 수도 있습니다. AKS의 DCA용 RBAC FAQ를 참조하세요.
클러스터 에이전트 간 통신 보호
Datadog 에이전트와 클러스터 에이전트는 통신 보호를 위한 토큰을 필요로 합니다. Datadog 에이전트 및 클러스터 에이전트 모두가 환경 변수 DD_CLUSTER_AGENT_AUTH_TOKEN에서 참조할 수 있는 이 토큰을 Secret에 저장해 두는 것이 좋습니다. 그러면 일관성을 유지하고 PodSpec에서 토큰을 읽는 것을 방지할 수 있습니다.
이 토큰을 생성하려면, 이 한 줄의 명령을 실행하고 token 세트를 사용해 이름이 datadog-cluster-agent인 Secret을 생성합니다. 32개 영숫자 문자로 <TOKEN>을 교체합니다.
기본적으로 cluster-agent-deployment.yaml 매니페스트는 Secretdatadog-cluster-agent에서 이전에 생성한 토큰을 참조합니다. 다른 방법으로 이 토큰을 저장한 경우 DD_CLUSTER_AGENT_AUTH_TOKEN 환경 변수를 설정하세요.
참고: Datadog 클러스터 에이전트에서 Datadog 사이트()에 환경 변수 DD_SITE를 설정하세요. 기본적으로 US 사이트인 datadoghq.com입니다.
확인
이 시점에서 다음을 확인할 수 있습니다.
kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
datadog-cluster-agent 1111 1d
kubectl get secret
NAME TYPE DATA AGE
datadog-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 에이전트가 실행 중인 경우 클러스터 에이전트가 실행을 시작하기 전 에이전트 rbac.yaml 매니페스트를 적용해야 할 수 있습니다.
Datadog 에이전트 통신 설정
Datadog 에이전트 설정을 수정하여 Datadog 클러스터 에이전트와 통신하세요.
기존 DaemonSet 매니페스트 파일에서 환경 변수 DD_CLUSTER_AGENT_ENABLED를 true로 설정하세요. 그런 다음 클러스터 에이전트 간 통신 보호에서 사용한 동일한 구문으로 DD_CLUSTER_AGENT_AUTH_TOKEN을 설정하세요.
추가로 에이전트 상태 출력을 사용해 Datadog 에이전트가 클러스터 에이전트에 연결되어 있는지 확인할 수 있습니다.
kubectl exec -it <AGENT_POD_NAME> agent status
[...]=====================Datadog Cluster Agent===================== - Datadog Cluster Agent endpoint detected: https://10.104.246.194:5005
Successfully connected to the Datadog Cluster Agent.
- Running: 1.11.0+commit.4eadd95
쿠버네티스(Kubernetes) 이벤트가 Datadog 계정으로 들어오기 시작합니다. 에이전트가 수집한 관련 메트릭은 해당되는 클러스터 수준 메타데이터로 태그 지정됩니다.
윈도우즈(Windows) 컨테이너
Datadog 클러스터 에이전트만 리눅스(Linux) 노드에 배포할 수 있습니다.
윈도우즈(Windows) 컨테이너를 모니터링하려면 혼합된 클러스터에서 Helm 차트 두 개를 설치해야 합니다. 첫 번째 Helm 차트는 Datadog 클러스터 에이전트와 리눅스용 에이전트 DaemonSet를 배포합니다(targetSystem: linux 사용). 두 번째 Helm 차트(targetSystem: windows 사용) 윈도우즈 노드에서 에이전트만 배포하고 첫 번째 Helm 차트의 일부로 배포된 기존 클러스터 에이전트에 연결합니다.
다음 datadog-values.yaml 파일을 사용하여 Windows 노드에 배포된 Agent와 Cluster Agent 간의 통신을 설정합니다.
targetSystem:windowsexistingClusterAgent:join:trueserviceName:"<EXISTING_DCA_SECRET_NAME>"# from the first Datadog Helm charttokenSecretName:"<EXISTING_DCA_SERVICE_NAME>"# from the first Datadog Helm chart# Disable datadogMetrics deployment since it should have been already deployed with the first chart.datadog-crds:crds:datadogMetrics:false# Disable kube-state-metrics deploymentdatadog:kubeStateMetricsEnabled:false
AWS 관리형 서비스(예: Amazon Managed Streaming for Apache Kafka (MSK), ElastiCache, Relational Database Service (RDS))를 모니터링하려면 Helm 차트에서 clusterChecksRunner를 설정하세요. serviceAccountAnnotation를 통해 할당된 IAM 역할로 Pod를 생성할 수 있습니다. 그런 다음 clusterAgent.confd에서 통합 구성을 설정합니다.
datadog-values.yaml
clusterChecksRunner:enabled:truerbac:# clusterChecksRunner.rbac.create -- If true, create & use RBAC resourcescreate:truededicated:trueserviceAccountAnnotations:eks.amazonaws.com/role-arn:arn:aws:iam::***************:role/ROLE-NAME-WITH-MSK-READONLY-POLICYclusterAgent:confd:amazon_msk.yaml:|- cluster_check: true
instances:
- cluster_arn: arn:aws:kafka:us-west-2:*************:cluster/gen-kafka/*******-8e12-4fde-a5ce-******-3
region_name: us-west-2