Si vous déployez l’Agent Datadog à l’aide du chart Helm v2.7.0+ ou de l’Operator Datadog v0.7.0+, l’Agent de cluster est désactivé par défaut.
Depuis la version 2.7.0 du chart Helm, l’Agent de cluster est activé par défaut.
Pour activer l’Agent de cluster si vous utilisez une version antérieure du chart ou un fichier datadog-values.yaml personnalisé remplaçant la clé clusterAgent, modifiez le fichier datadog-values.yaml en indiquant la configuration d’Agent de cluster suivante.
clusterAgent:# clusterAgent.enabled -- Définir sur false pour désactiver l'Agent de cluster Datadogenabled:true
Mettez ensuite à niveau votre chart Helm Datadog :
Cela modifie automatiquement les fichiers RBAC nécessaires pour l’Agent de cluster et l’Agent Datadog. Ces deux Agents utilisent la même clé d’API.
Un token aléatoire est également automatiquement généré dans un Secret commun à l’Agent de cluster et l’Agent Datadog. Il permet de sécuriser les communications. Vous pouvez définir manuellement ce token avec le paramètre clusterAgent.token. Il est également possible de faire référence au nom du Secret existant qui comporte une valeur token avec l’option clusterAgent.tokenExistingSecret.
Lorsque le token est défini manuellement, il doit être composé de 32 caractères alphanumériques.
Depuis la version 1.0.0 de l’Operator Datadog, l’Agent de cluster est activé par défaut. L’Operator crée les autorisations RBAC requises, déploie l’Agent de cluster et modifie la configuration du DaemonSet de l’Agent.
Un token aléatoire est également automatiquement généré dans un Secret commun à l’Agent de cluster et l’Agent Datadog. Il permet de sécuriser les communications. Vous pouvez définir manuellement ce token avec le champ global.clusterAgentToken. Il est également possible de faire référence au nom du Secret existant et à la clé de données contenant le token en question.
Configurer les autorisations RBAC de l’Agent de cluster
L’Agent de cluster Datadog a besoin des autorisations RBAC adéquates pour fonctionner :
Examinez les manifestes dans le dossier RBAC de l’Agent de cluster Datadog. Remarque : lorsque vous utilisez l’Agent de cluster, vos Agents de nœud ne peuvent pas interagir avec le serveur d’API Kubernetes ; seul l’Agent de cluster peut y parvenir.
Pour configurer les autorisations RBAC de l’Agent de cluster, appliquez les manifestes suivants. Il se peut que vous ayez déjà effectué cette opération lors de la configuration du daemonset de l’Agent de nœud.
Cela permet de créer les objets ServiceAccount, ClusterRole et ClusterRoleBinding appropriés pour l’Agent de cluster, et de mettre à jour l’objet ClusterRole pour l’Agent de nœud.
Si vous utilisez Azure Kubernetes Service (AKS), vous aurez besoin de permissions supplémentaires. Consultez la FAQ dédiée pour les RBAC sur AKS pour le DCA.
Sécuriser les communications entre l’Agent de cluster et l’Agent
L’Agent Datadog et l’Agent de cluster requièrent un token pour sécuriser leurs communications. Il est conseillé d’enregistrer ce token dans un Secret auquel l’Agent Datadog et l’Agent de cluster peuvent se référer par l’intermédiaire de la variable d’environnement DD_CLUSTER_AGENT_AUTH_TOKEN. Cette approche permet d’assurer une certaine cohérence et d’éviter que le token puisse être consulté dans le PodSpec.
Pour créer ce token, exécutez la commande suivante. Cela génère un Secret du nom de datadog-cluster-agent et définit un token. Remplacez le paramètre <TOKEN> par un token composé de 32 caractères alphanumériques.
Remarque : cette opération crée un Secret dans l’espace de nommage par défaut. SI vous utilisez un espace de nommage personnalisé, modifiez le paramètre namespace de la commande avant de l’exécuter.
Le fichier cluster-agent-deployment.yaml fourni par défaut pour l’Agent de cluster est configuré de sorte que ce Secret soit accessible avec la configuration de variable d’environnement suivante :
Dans le manifeste secret-api-key.yaml, remplacez PUT_YOUR_BASE64_ENCODED_API_KEY_HERE par votre clé d’API Datadog encodée en base64. Pour obtenir la version base64 de votre clé d’API, exécutez la commande suivante :
echo -n '<Your API key>'| base64
Dans le manifeste secrets-application-key.yaml, remplacez PUT_YOUR_BASE64_ENCODED_APP_KEY_HERE par votre clé d’application Datadog encodée en base64.
Par défaut, le manifeste cluster-agent-deployment.yaml récupère le token créé précédemment dans le Secretdatadog-cluster-agent. Si vous stockez ce token d’une autre façon, modifiez la configuration de la variable DD_CLUSTER_AGENT_AUTH_TOKEN en conséquence.
Déployez les ressources suivantes pour l’Agent de cluster :
Remarque : définissez dans l’Agent de cluster Datadog la variable d’environnement DD_SITE sur votre site Datadog : . Par défaut, cette valeur est définie sur le site US, à savoir datadoghq.com.
Vérification
À ce stade, vous devriez voir ce qui suit :
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
Remarque : si l’Agent Datadog est déjà en cours d’exécution, vous devrez peut-être appliquer le manifeste rbac.yaml de l’Agent pour que l’Agent de cluster puisse s’exécuter.
Configurer les communications de l’Agent Datadog
Modifiez la configuration de votre Agent Datadog de façon à ce qu’il communique avec l’Agent de cluster Datadog.
Après avoir redéployé votre DaemonSet avec cette configuration, l’Agent Datadog peut communiquer avec l’Agent de cluster. Vous pouvez vous référer au manifeste daemonset.yaml d’Agent de cluster fourni pour consulter un exemple complet de configuration.
Vérification
Pour vérifier que les pods de l’Agent Datadog et de l’Agent de cluster sont en cours d’exécution, utilisez la commande suivante :
kubectl exec -it <NOM_POD_AGENT> 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
La transmission des événements Kubernetes à votre compte Datadog commence alors. Les métriques pertinentes recueillies par vos Agents se voient assignées le tag correspondant dans les métadonnées de cluster.
Conteneurs Windows
L’Agent de cluster Datadog ne peut être déployé que sur des nœuds Linux.
Pour surveiller les conteneurs Windows, utilisez deux installations du chart Helm dans un cluster mixte. Le premier chart Helm déploie l’Agent de cluster Datadog et le DaemonSet de l’Agent pour les nœuds Linux (avec targetSystem: linux). Le deuxième chart Helm (avec targetSystem: windows) déploie l’Agent uniquement sur les nœuds Windows et se connecte à l’Agent de cluster existant déployé au sein du premier chart Helm.
Utilisez le fichier values.yaml suivant pour configurer les communications entre les Agents déployés sur les nœuds Windows et l’Agent de cluster.
targetSystem:windowsexistingClusterAgent:join:trueserviceName:"<NOM_SECRET_EXISTANT_AGENT_CLUSTER_DATADOG>"# provenant du premier chart Helm DatadogtokenSecretName:"<NOM_SERVICE_EXISTANT_AGENT_CLUSTER_DATADOG>"# provenant du premier chart Helm Datadog# Désactiver le déploiement de datadogMetrics, car il est déjà réalisé par le premier chartdatadog-crds:crds:datadogMetrics:false# Désactiver le déploiement de kube-state-metrics datadog:kubeStateMetricsEnabled:false
Pour surveiller un service AWS géré comme MSK, ElastiCache ou RDS, définissez clusterChecksRunner afin de créer un pod avec un rôle IAM attribué via l’annotation serviceAccountAnnotation dans le chart Helm. Définissez ensuite les configurations de l’intégration dans clusterAgent.confd.
clusterChecksRunner:enabled:truerbac:# clusterChecksRunner.rbac.create -- Si true, créer et utiliser des ressources RBACcreate: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
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: