EKS Fargate
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

EKS Fargate

Agent Check Check de l'Agent

Supported OS: Linux Mac OS Windows

Présentation

Amazon EKS sur AWS Fargate est un service Kubernetes géré qui permet d’automatiser certains aspects du déploiement et de la maintenance de n’importe quel environnement Kubernetes standard. Les nœuds Kubernetes sont gérés par AWS Fargate, les utilisateurs n’ont donc plus besoin de s’en occuper.

Configuration

Ces étapes décrivent comment configurer l’Agent Datadog 7.17 ou ultérieur dans un conteneur au sein d’Amazon EKS sur AWS Fargate. Consultez la documentation relative à l’intégration Datadog/Amazon EKS si vous n’utilisez pas AWS Fargate.

Les pods AWS Fargate ne sont pas des pods physiques. Ils excluent donc les checks système basés sur des hosts, comme les checks liés au processeur, à la mémoire, etc. Pour recueillir des données à partir de vos pods AWS Fargate, vous devez exécuter l’Agent en tant que sidecar du pod de votre application avec un RBAC personnalisé. Cette configuration vous permet de bénéficier des fonctionnalités suivantes :

  • Collecte de métriques Kubernetes à partir du pod exécutant les conteneurs de votre application et l’Agent
  • Autodiscovery
  • Configuration de checks custom d’Agent pour cibler les conteneurs dans le même pod
  • APM et DogStatsD pour les conteneurs dans un même pod

Nœud EC2

Si vous ne spécifiez pas, via le profil AWS Fargate, que vos pods doivent s’exécuter sur Fargate, ils peuvent avoir recours à des machines EC2 classiques. Dans ce cas, consultez la configuration de l’intégration Datadog/Amazon EKS pour recueillir des données à partir des machines. Cette collecte passe par l’exécution de l’Agent en tant que charge de travail EC2. La configuration de l’Agent est identique à celle de l’Agent Kubernetes et vous disposez de l’ensemble des options. Pour déployer l’Agent sur des nœuds EC2, utilisez la configuration DaemonSet pour l’Agent Datadog.

Installation

Pour accroître votre visibilité lors de la surveillance de charges de travail dans AWS EKS Fargate, installez les intégrations Datadog pour :

Configurez également des intégrations pour tout autre service AWS que vous exécutez avec EKS (par exemple, ELB).

Installation manuelle

Pour procéder à l’installation, téléchargez la version 7.17 ou une version ultérieure de l’image de l’Agent personnalisé datadog/agent.

Si l’Agent s’exécute en tant que sidecar, il peut communiquer uniquement avec des conteneurs sur le même pod. Exécutez donc un Agent pour chaque pod que vous souhaitez surveiller.

Configuration

Pour recueillir des données à partir de vos applications qui s’exécutent dans AWS EKS Fargate sur un nœud Fargate, suivez les étapes suivantes :

RBAC AWS EKS Fargate

Utilisez le RBAC d’Agent suivant lors du déploiement de l’Agent en tant que sidecar dans AWS EKS Fargate :

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: datadog-agent
rules:
  - apiGroups:
      - ""
    resources:
      - nodes/metrics
      - nodes/spec
      - nodes/stats
      - nodes/proxy
      - nodes/pods
      - nodes/healthz
    verbs:
      - get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: datadog-agent
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: datadog-agent
subjects:
  - kind: ServiceAccount
    name: datadog-agent
    namespace: default
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: datadog-agent
  namespace: default

Exécution de l’Agent en tant que sidecar

Pour commencer à recueillir les données de votre pod Fargate, déployez la version 7.17 ou une version ultérieure de l’Agent Datadog en tant que sidecar de votre application. Vous trouverez ci-dessous la configuration minimale requise pour recueillir des métriques à partir de votre application s’exécutant dans le pod. Vous remarquerez que nous avons ajouté DD_EKS_FARGATE=true dans le manifeste pour déployer le sidecar de votre Agent Datadog.

apiVersion: apps/v1
kind: Deployment
metadata:
 name: "<NOM_APPLICATION>"
 namespace: default
spec:
 replicas: 1
 template:
   metadata:
     labels:
       app: "<NOM_APPLICATION>"
     name: "<NOM_POD>"
   spec:
     serviceAccountName: datadog-agent
     containers:
     - name: "<NOM_APPLICATION>"
       image: "<IMAGE_APPLICATION>"
     ## Exécution de l'Agent en tant que sidecar
     - image: datadog/agent
       name: datadog-agent
       env:
       - name: DD_API_KEY
         value: "<VOTRE_CLÉ_API_DATADOG>"
         ## Définir DD_SITE sur « datadoghq.eu » pour envoyer les
         ## données de votre Agent au site européen de Datadog
       - name: DD_SITE
         value: "datadoghq.com"
       - name: DD_EKS_FARGATE
         value: "true"
       - name: DD_KUBERNETES_KUBELET_NODENAME
         valueFrom:
           fieldRef:
             apiVersion: v1
             fieldPath: spec.nodeName
      resources:
          requests:
            memory: "256Mi"
            cpu: "200m"
          limits:
            memory: "256Mi"
            cpu: "200m"

Remarque : n’oubliez pas de remplacer <VOTRE_CLÉ_API_DATADOG> par la clé d’API Datadog de votre organisation.

Collecte de métriques

Métriques des intégrations

Utilisez les étiquettes Autodiscovery avec le conteneur de votre application pour commencer à recueillir ses métriques pour les intégrations d’Agent prises en charge.​

apiVersion: apps/v1
kind: Deployment
metadata:
 name: "<NOM_APPLICATION>"
 namespace: default
spec:
 replicas: 1
 template:
   metadata:
     labels:
       app: "<NOM_APPLICATION>"
     name: "<NOM_POD>"
     annotations:
      ad.datadoghq.com/<NOM_CONTENEUR>.check_names: '[<NOM_CHECK>]'
      ad.datadoghq.com/<IDENTIFICATEUR_CONTENEUR>.init_configs: '[<CONFIG_INIT>]'
      ad.datadoghq.com/<IDENTIFICATEUR_CONTENEUR>.instances: '[<CONFIG_INSTANCE>]'
   spec:
     serviceAccountName: datadog-agent
     containers:
     - name: "<NOM_APPLICATION>"
       image: "<IMAGE_APPLICATION>"
     ## Exécution de l'Agent en tant que sidecar
     - image: datadog/agent
       name: datadog-agent
       env:
       - name: DD_API_KEY
         value: "<VOTRE_CLÉ_API_DATADOG>"
         ## Définir DD_SITE sur « datadoghq.eu » pour envoyer les
         ## données de votre Agent au site européen de Datadog
       - name: DD_SITE
         value: "datadoghq.com"
       - name: DD_EKS_FARGATE
         value: "true"
       - name: DD_KUBERNETES_KUBELET_NODENAME
         valueFrom:
           fieldRef:
             apiVersion: v1
             fieldPath: spec.nodeName
      resources:
          requests:
            memory: "256Mi"
            cpu: "200m"
          limits:
            memory: "256Mi"
            cpu: "200m"

Remarques :

  • N’oubliez pas de remplacer <VOTRE_CLÉ_API_DATADOG> par la clé d’API Datadog de votre organisation.
  • Les métriques de conteneur ne sont pas disponibles dans Fargate. En effet, il est impossible de monter le volume cgroups du host sur l’Agent.

DogStatsD

Configurez le port de conteneur 8125 pour votre conteneur d’Agent afin d’envoyer des métriques DogStatsD à Datadog depuis le conteneur de votre application.

apiVersion: apps/v1
kind: Deployment
metadata:
 name: "<NOM_APPLICATION>"
 namespace: default
spec:
 replicas: 1
 template:
   metadata:
     labels:
       app: "<NOM_APPLICATION>"
     name: "<NOM_POD>"
   spec:
     serviceAccountName: datadog-agent
     containers:
     - name: "<NOM_APPLICATION>"
       image: "<IMAGE_APPLICATION>"
     ## Exécution de l'Agent en tant que sidecar
     - image: datadog/agent
       name: datadog-agent
       ## Activation du port 8125 pour la collecte de métriques DogStatsD
       ports:
        - containerPort: 8125
          name: dogstatsdport
          protocol: UDP
       env:
       - name: DD_API_KEY
         value: "<VOTRE_CLÉ_API_DATADOG>"
         ## Définir DD_SITE sur « datadoghq.eu » pour envoyer les
         ## données de votre Agent au site européen de Datadog
       - name: DD_SITE
         value: "datadoghq.com"
       - name: DD_EKS_FARGATE
         value: "true"
       - name: DD_KUBERNETES_KUBELET_NODENAME
         valueFrom:
           fieldRef:
             apiVersion: v1
             fieldPath: spec.nodeName
      resources:
          requests:
            memory: "256Mi"
            cpu: "200m"
          limits:
            memory: "256Mi"
            cpu: "200m"

Remarque : n’oubliez pas de remplacer <VOTRE_CLÉ_API_DATADOG> par la clé d’API Datadog de votre organisation.

Collecte de traces

Configurez le port de conteneur 8126 pour votre conteneur d’Agent afin de recueillir des traces à partir du conteneur de votre application. En savoir plus sur la configuration du tracing.

apiVersion: apps/v1
kind: Deployment
metadata:
 name: "<NOM_APPLICATION>"
 namespace: default
spec:
 replicas: 1
 template:
   metadata:
     labels:
       app: "<NOM_APPLICATION>"
     name: "<NOM_POD>"
   spec:
     serviceAccountName: datadog-agent
     containers:
     - name: "<NOM_APPLICATION>"
       image: "<IMAGE_APPLICATION>"
     ## Exécution de l'Agent en tant que sidecar
     - image: datadog/agent
       name: datadog-agent
       ## Activation du port 8126 pour la collecte de traces
       ports:
        - containerPort: 8126
          name: traceport
          protocol: TCP
       env:
       - name: DD_API_KEY
         value: "<VOTRE_CLÉ_API_DATADOG>"
         ## Définir DD_SITE sur « datadoghq.eu » pour envoyer les
         ## données de votre Agent au site européen de Datadog
       - name: DD_SITE
         value: "datadoghq.com"
       - name: DD_EKS_FARGATE
         value: "true"
       - name: DD_APM_ENABLED
         value: "true"
       - name: DD_KUBERNETES_KUBELET_NODENAME
         valueFrom:
           fieldRef:
             apiVersion: v1
             fieldPath: spec.nodeName
      resources:
          requests:
            memory: "256Mi"
            cpu: "200m"
          limits:
            memory: "256Mi"
            cpu: "200m"

Remarque : n’oubliez pas de remplacer <VOTRE_CLÉ_API_DATADOG> par la clé d’API Datadog de votre organisation.

Collecte d’événements

Pour recueillir des événements depuis votre serveur d’API AWS EKS Fargate, exécutez un Agent de cluster Datadog sur un pod AWS EKS EC2 dans votre cluster Kubernetes :

  1. Configurez l’Agent de cluster Datadog.
  2. Activez la collecte d’événements pour votre Agent de cluster.

Outre la configuration de l’Agent de cluster Datadog, vous pouvez également choisir de déployer des exécuteurs de checks de cluster afin de faciliter leur activation.

Remarque : vous pouvez également recueillir des événements si vous exécutez l’Agent de cluster Datadog dans un pod dans Fargate.

Données collectées

Métriques

Le check eks_fargate envoie une métrique de pulsation eks.fargate.pods.running avec les tags pod_name et virtual_node. Cela vous permet de surveiller le nombre de pods en cours d’exécution.

Checks de service

eks_fargate n’inclut aucun check de service.

Événements

eks_fargate n’inclut aucun événement.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.