DatadogPodAutoscaler(DPA)는 Datadog Kubernetes Autoscaling(DKA)을 사용하여 Kubernetes 워크로드의 오토스케일링을 가능하게 하는 Kubernetes 사용자 지정 리소스 정의(CRD)입니다. 이 가이드는 Terraform 및 HashiCorp의 Kubernetes Provider를 사용하여 DatadogPodAutoscaler 리소스를 관리하고 오토스케일링 구성을 배포하는 방법을 설명합니다.
대규모 오토스케일링 활성화: 공유 정책을 사용하여 많은 워크로드 또는 네임스페이스에 오토스케일링을 배포하려면 워크로드마다 DatadogPodAutoscaler을 생성하는 대신 워크로드 또는 네임스페이스에 autoscaling.datadoghq.com/profile 레이블을 지정합니다. 자세한 내용은 Kubernetes Autoscaling 개요의 클러스터 프로필을 참조하세요.
전제 조건
시작하기 전에 다음 사항을 준비합니다.
Kubernetes 클러스터: kubectl을 사용하여 액세스 가능한 Kubernetes 클러스터
Terraform: Terraform 설치(버전 0.13 이상 권장)
Datadog API 자격 증명: 유효한 Datadog API 키 및 애플리케이션 키
프로젝트 구조
이 가이드는 Terraform의 종속성을 올바르게 생성하기 위해 다단계 배포 방식을 사용합니다.
.├──providers.tf# Provider configurations├──variables.tf# Input variables├──main.tf# Stage 1: Datadog secret and operator (CRDs)├──terraform.tfvars# Example variable values├──datadogagent/# Stage 2: DatadogAgent CRD resource│└──main.tf# DatadogAgent manifest├──nginx-dpa/# Stage 3: Nginx application with DPA│└──main.tf# Nginx namespace, deployment, and DPA
배포 단계
Kubernetes 사용자 지정 리소스 정의(CRD) 및 Terraform을 사용하는 경우 다단계 배포 방식이 필수적입니다. 이 순차적 접근 방식은 프로세스의 각 단계에 필요한 종속성을 생성하고 설치하기 위해 필요합니다.
Kubernetes CRD는 이를 사용하는 사용자 지정 리소스를 생성하기 전에 클러스터에 설치되어야 합니다. DatadogPodAutoscaler CRD는 1단계에서 Datadog Operator를 설치할 때 생성됩니다. Terraform은 이러한 CRD에 의존하는 리소스를 관리하기 전에 해당 CRD를 인식해야 합니다.
Terraform Kubernetes Provider는 초기화 시 사용 가능한 리소스 유형을 검색합니다. CRD가 설치되기 전에 DatadogPodAutoscaler 리소스를 생성하려고 하면 Terraform이 해당 사용자 지정 리소스 유형을 인식하지 못해 실패합니다.
1단계(Datadog Operator 및 CRD): Datadog 시크릿, Operator 및 CRD 생성
Helm을 사용한 Datadog Operator(CRD 생성)
2단계(Datadog Agent): Datadog Kubernetes Autoscaling용으로 구성된 Datadog Agent 배포
Datadog API 및 애플리케이션 시크릿
Cluster Agent가 활성화된 DatadogAgent 사용자 지정 리소스
3단계(오토스케일링된 워크로드): DatadogPodAutoscaler가 포함된 애플리케이션 배포
resource"helm_release" "datadog_operator" {
name="datadog-operator" namespace="datadog" repository="https://helm.datadoghq.com" chart="datadog-operator" version="2.11.1" # You can update to the latest stable version
create_namespace=true}