Le DatadogPodAutoscaler (DPA) est une définition de ressource personnalisée Kubernetes (CRD) qui permet l’autoscaling des charges de travail Kubernetes en utilisant Datadog Kubernetes Autoscaling (DKA). Ce guide démontre comment gérer les ressources DatadogPodAutoscaler en utilisant Terraform et le fournisseur Kubernetes de HashiCorp pour déployer une configuration d’autoscaling.
Activation de l’autoscaling à grande échelle : Pour déployer l’autoscaling sur de nombreuses charges de travail ou espaces de noms avec une politique partagée, étiquetez les charges de travail ou espaces de noms avec autoscaling.datadoghq.com/profile au lieu de rédiger un DatadogPodAutoscaler par charge de travail. Voir Profils de cluster dans l’aperçu de l’autoscaling Kubernetes.
Prérequis
Avant de commencer, assurez-vous d’avoir ce qui suit :
Cluster Kubernetes : Un cluster Kubernetes fonctionnel avec accès en utilisant kubectl
Terraform : Terraform installé (version 0.13 ou ultérieure recommandée)
Identifiants API Datadog : Clé API Datadog valide et clé d’application
Structure du projet
Ce guide utilise une approche de déploiement multi-étapes pour garantir la création correcte des dépendances pour 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
Étapes de déploiement
Une approche de déploiement multi-étapes est essentielle lors de l’utilisation des définitions de ressources personnalisées Kubernetes (CRDs) et de Terraform. Cette approche ordonnée est nécessaire pour garantir que vous créez et installez les dépendances requises pour chaque étape du processus.
Les CRDs Kubernetes doivent être installées dans le cluster avant que vous puissiez créer des ressources personnalisées qui les utilisent. La CRD DatadogPodAutoscaler est créée lorsque vous installez l’Opérateur Datadog à l’Étape 1. Terraform doit connaître ces CRDs avant de pouvoir gérer les ressources qui en dépendent.
Le fournisseur Kubernetes de Terraform découvre les types de ressources disponibles au moment de l’initialisation. Si vous essayez de créer une ressource DatadogPodAutoscaler avant que la CRD ne soit installée, Terraform échouera car il ne reconnaît pas le type de ressource personnalisée.
Étape 1 (Opérateur Datadog et CRDs) : Crée le secret Datadog, l’Opérateur et les CRDs
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}
Alternativement, définissez les variables d’environnement TF_VAR_datadog_api_key et TF_VAR_datadog_app_key dans votre shell.
cd datadogagent
terraform init
terraform apply
Vérifiez que l’agent Datadog est déployé :
kubectl get datadogagent -n datadog
Vous devriez voir la ressource personnalisée de l’agent Datadog créée. Il devrait être dans l’état Running avant de continuer. Vérifiez également que les pods de l’agent Datadog et du datadog-cluster-agent sont en cours d’exécution :
kubectl get pods -n datadog
Étape 3 : Application avec DatadogPodAutoscaler
Déployez l’application Nginx avec DatadogPodAutoscaler :
cd ../nginx-dpa
terraform init
terraform apply
Après le déploiement, vérifiez que tous les composants fonctionnent correctement.