Kubernetes에 Datadog Agent 설치

개요

이 페이지에서는 Kubernetes 환경에 Datadog Agent를 설치하는 방법을 설명합니다.

AWS Elastic Kubernetes Service(EKS), Azure Kubernetes Service(AKS), Google Kubernetes Engine(GKE), Red Hat OpenShift, Rancher 및 Oracle Container Engine for Kubernetes(OKE)를 포함한 주요 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. 설치 방법 선택

    다음 설치 방법 중 하나를 선택합니다.

Kubernetes 환경에서 Single Step Instrumentation(SSI)을 사용하여 APM을 구현할 계획이라면 Datadog Agent를 별도의 네임스페이스에 설치하세요. SSI는 Datadog Agent와 동일한 네임스페이스에 있는 포드를 계측하지 않습니다.
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 site 값으로 바꾸세요. 사이트는 입니다. (오른쪽에서 올바른 SITE가 선택되어 있는지 확인하세요.)
  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 site 값으로 바꾸세요. 사이트는 입니다. (오른쪽에서 올바른 SITE가 선택되어 있는지 확인하세요.)
  3. 위 구성 파일을 사용하여 Agent 배포

    실행:

    helm install datadog-agent -f datadog-values.yaml datadog/datadog
    
    Windows에서는 --set targetSystem=windows 을(를) helm install 명령에 추가하세요.
  1. Agent 설치 확인

    Datadog의 Containers 페이지에서 app.kubernetes.io/component:agent 태그가 지정된 Agent 포드가 표시되는지 확인합니다. Agent 포드는 배포 후 몇 분 이내에 감지됩니다.

<CLUSTER_NAME> 은 호스트와 Cluster Check를 범위 지정하는 데 사용됩니다. 이 고유 이름은 마침표(.)로 구분된 토큰 형식이어야 하며 다음 제한 사항을 따라야 합니다.

  • 소문자, 숫자 및 하이픈(-)만 포함
  • 문자로 시작
  • 문자 또는 숫자로 끝남
  • 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의 포드 수준에서 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 Container Registry, Google Artifact Registry(GAR), 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 Container Registry(registry.datadoghq.com) 또는 사이트별 레지스트리에서 가져옵니다. Datadog Operator 차트는 기본적으로 Datadog Agent Helm 차트의 종속성으로 포함되어 있습니다. Datadog Operator 차트 버전 2.19.0부터 해당 종속성을 통해 Operator를 설치하면 Datadog Agent Helm 차트의 registryMigrationMode 설정이 Operator가 관리하는 Agent 이미지에도 적용됩니다. Operator Helm 차트 자체에는 registryMigrationMode 설정이 정의되어 있지 않으며, Operator 포드 이미지는 Operator 차트의 image.repository 값으로 별도 제어됩니다.

Docker Hub에는 이미지 풀 속도 제한이 적용됩니다. Docker Hub 고객이 아니라면 Datadog은 다른 레지스트리에서 이미지를 가져오도록 Datadog Agent 및 Cluster Agent 구성을 업데이트할 것을 권장합니다. 관련 지침은 컨테이너 레지스트리 변경을 참조하세요.

Datadog Operator 차트 버전 2.19.0부터 Datadog Agent Helm 차트의 종속성을 통해 Operator를 설치하는 경우, Datadog Agent Helm 차트의 registryMigrationMode 설정에서 Operator가 관리하는 Agent 이미지에 대해 registry.datadoghq.com를 사용할 수 있습니다. 이전 버전에서는 Agent 이미지를 사이트별 레지스트리(gcr.io/datadoghq, eu.gcr.io/datadoghq, asia.gcr.io/datadoghq 또는 datadoghq.azurecr.io)에서 가져왔습니다. 이 배포 경로에서 이전 사이트별 레지스트리를 계속 사용하려면 Datadog Agent Helm 차트의 values.yaml에서 registryMigrationMode: ""을 설정하세요. 이 설정은 레지스트리를 명시적으로 지정한 경우에는 영향을 미치지 않으며, 독립형 Operator Helm 차트의 설정 항목도 아닙니다. Operator 포드 이미지에 다른 레지스트리를 사용하려면 Operator Helm의 values.yaml에서 image.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 페이지 사용 방법은 컨테이너 보기를 참조하세요.

Container Images 페이지에서는 환경에서 사용 중인 모든 이미지에 대한 인사이트를 확인할 수 있습니다. 이 페이지에는 Cloud Security에서 컨테이너 이미지에서 발견한 취약점도 표시됩니다. Container Images 페이지 사용 방법은 컨테이너 이미지 보기를 참조하세요.

Kubernetes 섹션에서는 모든 Kubernetes 리소스에 대한 개요를 제공합니다. Orchestrator Explorer를 사용하면 특정 네임스페이스 또는 가용 영역의 포드, Deployment 및 기타 Kubernetes 리소스의 상태를 모니터링하고, Deployment 내에서 실패한 포드의 리소스 사양을 확인하며, 노드 활동을 관련 로그와 연계하는 등의 작업을 수행할 수 있습니다. 리소스 활용 페이지에서는 Kubernetes 워크로드가 인프라 전반에서 컴퓨팅 리소스를 어떻게 사용하는지에 대한 인사이트를 제공합니다. 이러한 페이지 사용 방법은 Orchestrator ExplorerKubernetes 리소스 활용을 참조하세요.

기능 활성화


추가 자료