Cette section présente les particularités des principales distributions Kubernetes et propose des modèles de configuration dont vous pouvez vous servir comme de point de départ. Chacune de ces configurations peut être personnalisée afin d’intégrer des fonctionnalités Datadog.
Si vous utilisez le système d’exploitation AWS Bottlerocket sur vos nœuds, ajoutez ce qui suit pour activer la surveillance des conteneurs (check containerd) :
datadog:apiKey:<CLÉ_API_DATADOG>appKey:<CLÉ_APPLICATION_DATADOG>kubelet:tlsVerify:false# Obligatoire à partir de l'Agent 7.35. Voir la section Remarques.
Ressource Kubernetes DatadogAgent :
kind:DatadogAgentapiVersion:datadoghq.com/v2alpha1metadata:name:datadogspec:features:admissionController:enabled:trueglobal:credentials:apiKey:<CLÉ_API_DATADOG>appKey:<CLÉ_APPLICATION_DATADOG>kubelet:tlsVerify:false# Obligatoire à partir de l'Agent 7.35. Voir la section Remarques.override:clusterAgent:containers:cluster-agent:env:- name:DD_ADMISSION_CONTROLLER_ADD_AKS_SELECTORSvalue:"true"
Remarques :
Depuis la version 7.35 de l’Agent, tlsVerify: false est requis, car aucun autre nom de l’objet (Subject Alternative Name ou SAN) n’est défini pour les certificats Kubelet dans AKS.
Avec certaines configurations, il est possible que la résolution DNS pour spec.nodeName dans les nœuds ne fonctionne pas dans AKS. Ce problème a été signalé sur tous les nœuds AKS Windows, et lorsque le cluster est configuré dans un réseau virtuel avec un DNS personnalisé sur des nœuds Linux. Dans ce cas, vous devez impérativement supprimer le champ agent.config.kubelet.host (valeur par défaut : status.hostIP) et utiliser tlsVerify: false. La variable d’environnement DD_KUBELET_TLS_VERIFY=false résout également ce problème. Ces deux méthodes permettent de désactiver la vérification du certificat du serveur.
env:- name:DD_KUBELET_TLS_VERIFYvalue:"false"
La fonctionnalité Contrôleur d’admission sur AKS nécessite d’ajouter des sélecteurs pour éviter une erreur lors du rapprochement du webhook :
Il est possible de configurer deux modes d’opération pour GKE :
Standard : vous gérez l’infrastructure sous-jacente du cluster, ce qui vous fournit une plus grande flexibilité pour la configuration des nœuds.
Autopilot : GKE provisionne et gère toute l’infrastructure sous-jacente du cluster, y compris les nœuds et les pools de nœuds. Vous disposez ainsi d’un cluster optimisé pour un fonctionnement autonome.
Vous devez adapter la configuration de l’Agent Datadog en fonction du mode d’opération de votre cluster.
Depuis la version 7.26 de l’Agent, aucune spécification spécifique n’est requise pour le mode Standard de GKE (que vous utilisiez Docker ou containerd).
Remarque : si vous utilisez COS (Container Optimized OS), les checks OOM Kill et TCP Queue Length basés sur eBPF sont pris en charge à partir de la version 3.0.1 du chart Helm. Pour activer ces checks, configurez le paramètre suivant :
datadog.systemProbe.enableDefaultKernelHeadersPaths sur false.
Le mode Autopilot de GKE requiert une configuration précise, indiquée ci-dessous.
Datadog vous conseille de spécifier des limites de ressources pour le conteneur de l’Agent. La limite par défaut d’Autopilot est relativement basse (50 mCPU et 100 Mi pour la mémoire) et peut rapidement entraîner l’OOMKill du conteneur de l’Agent, en fonction de votre environnement. Le cas échéant, définissez d’autres limites de ressources pour les conteneurs de l’Agent de trace et de l’Agent de processus.
datadog:apiKey:<CLÉ_API_DATADOG>appKey:<CLÉ_APPLICATION_DATADOG>clusterName:<NOM_CLUSTER># Activer le nouveau check `kubernetes_state_core`.kubeStateMetricsCore:enabled:true# Éviter de déployer le chart kube-state-metrics.# Le nouveau `kubernetes_state_core` ne nécessite plus le déploiement de kube-state-metrics.kubeStateMetricsEnabled:falseagents:containers:agent:# Ressources pour le conteneur de l'Agentresources:requests:cpu:200mmemory:256Milimits:cpu:200mmemory:256MitraceAgent:# Ressources pour le conteneur de l'Agent de traceresources:requests:cpu:100mmemory:200Milimits:cpu:100mmemory:200MiprocessAgent:# Ressources pour le conteneur de l'Agent de processusresources:requests:cpu:100mmemory:200Milimits:cpu:100mmemory:200Miproviders:gke:autopilot:true
datadog:apiKey:<CLÉ_API_DATADOG>appKey:<CLÉ_APPLICATION_DATADOG>clusterName:<NOM_CLUSTER>criSocketPath:/var/run/crio/crio.sock# Selon votre configuration DNS/SSL, il n'est pas forcément possible de vérifier correctement le certificat.# Si vous utilisez une autorité de certification adéquate, vous pouvez définir ce paramètre sur true.kubelet:tlsVerify:falseagents:podSecurity:securityContextConstraints:create:truetolerations:- effect:NoSchedulekey:node-role.kubernetes.io/masteroperator:Exists- effect:NoSchedulekey:node-role.kubernetes.io/infraoperator:ExistsclusterAgent:podSecurity:securityContextConstraints:create:truekube-state-metrics:securityContext:enabled:false
Si vous utilisez l’Operator Datadog dans OpenShift, il est conseillé de l’installer par l’intermédiaire d’OperatorHub ou du Marketplace Redhat. La configuration ci-dessous a été conçue pour un environnement où l’Agent est installé dans le même espace de nommage que l’Operator Datadog (en raison des paramètres SCC/ServiceAccount).
TKG nécessite quelques légères modifications de la configuration, visibles ci-dessous. Par exemple, il est nécessaire de configurer une tolérance pour que le contrôleur planifie l’Agent de nœud sur les nœuds master.
datadog:apiKey:<CLÉ_API_DATADOG>appKey:<CLÉ_APPLICATION_DATADOG>kubelet:# Définir tlsVerify sur false étant donné que les certificats Kubelet sont autosignéstlsVerify:false# Désactiver l'installation du chart de la dépendance `kube-state-metrics`.kubeStateMetricsEnabled:false# Activer le nouveau check `kubernetes_state_core`.kubeStateMetricsCore:enabled:true# Ajouter une tolérance pour que l'Agent puisse être planifié sur les nœuds du plan de contrôle.agents:tolerations:- key:node-role.kubernetes.io/mastereffect:NoSchedule
Ressource Kubernetes DatadogAgent :
kind:DatadogAgentapiVersion:datadoghq.com/v2alpha1metadata:name:datadogspec:features:eventCollection:collectKubernetesEvents:truekubeStateMetricsCore:# Activer le nouveau check `kubernetes_state_core`.enabled:trueglobal:credentials:apiSecret:secretName:datadog-secretkeyName:api-keyappSecret:secretName:datadog-secretkeyName:app-keykubelet:# Définir tlsVerify sur false étant donné que les certificats Kubelet sont autosignéstlsVerify:falseoverride:nodeAgent:# Ajouter une tolérance pour que l'Agent puisse être planifié sur les nœuds du plan de contrôle.tolerations:- key:node-role.kubernetes.io/mastereffect:NoSchedule
Documentation, liens et articles supplémentaires utiles: