Configurez un private action runner dans le Datadog Agent.

Présentation

L’exécution du private action runner dans le Datadog Agent est la méthode recommandée pour les nouveaux déploiements. Si vous exécutez déjà le Datadog Agent, activez le runner avec un seul configuration flag et gérez-le via le cycle de vie de l’Agent.

La configuration du runner se fait en trois étapes :

  1. Installez le runner, en utilisant l’option de déploiement adaptée à votre environnement.
  2. Enrôlez le runner, ce qui définit sa propriété et le modèle d’autorisation qu’il utilise.
  3. Mettez à jour le runner dans le cadre de vos mises à niveau de l’Agent.

Pour déployer le runner en tant que binaire séparé à la place, consultez Configurez un private action runner autonome.

Prérequis

  • Un host Linux ou Windows avec Datadog Agent 7.81.0 ou version ultérieure, ou un cluster Kubernetes avec Datadog Operator v1.28.0 ou version ultérieure ou le Datadog Helm chart 3.231.6 ou version ultérieure.
  • Remote Configuration activée pour votre organisation.
  • Accès réseau à Datadog sur https://.

Installez le runner

Le runner dans le Datadog Agent offre trois options de déploiement, selon l’endroit où il doit agir :

Option de déploiementMode d’exécutionDéployer avecIdéal pour
HostUn processus séparé à côté du Datadog Agent sur un host Linux ou Windows.Installation sur le hostActions ciblant un host spécifique.
Agent de nœud KubernetesUn conteneur dans l’Agent de nœud, utilisant le même binaire de runner que le processus du host.Helm, OperatorActions locales au nœud dans un cluster Kubernetes.
Kubernetes Cluster AgentExécuté in-process à l’intérieur du Cluster Agent, sans binaire séparé. Un runner dessert l’ensemble du cluster.Helm, OpérateurActions Kubernetes à l’échelle du cluster.

Vous avez la possibilité d’installer avec Fleet Automation, un flux piloté par l’interface utilisateur qui enrôle le runner comme détenu, ou Installation manuelle, où vous choisissez vous-même le type d’enrôlement.

Le flux d’installation de Fleet Automation est le même sur toutes les plateformes.

  1. Accédez à la page d’installation de Fleet Automation et sélectionnez votre plateforme. Pour Kubernetes, sélectionnez également Helm Chart ou Datadog Operator comme méthode d’installation, afin de correspondre à l’onglet Installation manuelle que vous prévoyez de suivre.
  2. Dans Personnalisez votre couverture d’Agent, accédez à la section Optimisation et remédiation et activez Autoriser l’Agent à effectuer des actions. Cela crée une clé d’application avec le périmètre on_prem_runner_write et enrôle le runner comme détenu, autorisé avec Connections. Pour inscrire plutôt un runner sans propriétaire, autorisé avec Politiques d’exécution, utilisez Installation manuelle.
  3. Suivez les instructions restantes dans le panneau d’installation pour ajouter une clé d’API et terminer l’installation.
  4. Après l’installation, accédez à Private Action Runners pour vérifier que votre runner apparaît dans la liste.

Installation manuelle

Définissez les variables d’environnement suivantes lors de l’installation ou de l’exécution de l’Agent. Sur le host, les paramètres du runner utilisent le préfixe DD_PRIVATE_ACTION_RUNNER_* :

DD_API_KEY=<API_KEY> \
DD_APP_KEY=<APP_KEY> \
DD_SITE="<span class="js-region-param region-param" data-region-param="dd_site"></span>" \
DD_PRIVATE_ACTION_RUNNER_ENABLED=true \
DD_PRIVATE_ACTION_RUNNER_ACTIONS_ALLOWLIST=com.datadoghq.kubernetes.*,com.datadoghq.remoteaction.* \
bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"

DD_APP_KEY enrôle le runner comme détenu, tout comme Fleet Automation. La clé d’application nécessite le périmètre on_prem_runner_write. DD_PRIVATE_ACTION_RUNNER_ACTIONS_ALLOWLIST accepte une liste séparée par des virgules. Utilisez des caractères génériques de bundle pour autoriser les actions qu’un runner dans le Datadog Agent peut exécuter : com.datadoghq.kubernetes.* et com.datadoghq.remoteaction.*. Pour utiliser plutôt les actions par défaut intégrées du runner (actions Remote Action en lecture seule, ainsi qu’un ensemble d’actions Kubernetes en lecture seule sur le Cluster Agent), laissez la liste d’autorisation non définie.

Après l’installation, accédez à Private Action Runners pour vérifier que votre runner apparaît dans la liste.

Installez ou mettez à niveau vers le Datadog Agent 7.81.0 ou une version ultérieure, puis modifiez C:\ProgramData\Datadog\datadog.yaml :

app_key: <YOUR_APP_KEY>

private_action_runner:
  enabled: true
  self_enroll: true
  actions_allowlist:
    - "com.datadoghq.kubernetes.*"
    - "com.datadoghq.remoteaction.*"

app_key enrôle le runner comme détenu, de la même manière que Fleet Automation ci-dessus ; la clé d’application nécessite le périmètre on_prem_runner_write.

Redémarrez l’Agent pour appliquer la configuration :

Restart-Service -Force datadogagent

Une fois l’Agent redémarré, accédez à Private Action Runners pour vérifier que votre runner apparaît dans la liste.

Le processus du host exécute le runner node Agent. Pour exécuter un runner dans le Cluster Agent, utilisez l’onglet Kubernetes (Helm) ou Kubernetes (Operator).

Le Datadog Helm chart peut activer le runner à deux endroits :

  • Le runner node Agent, en tant que conteneur sidecar. Le runner node Agent est uniquement disponible sur Linux.
  • Le runner Cluster Agent, en cours d’exécution. Le runner Cluster Agent est disponible uniquement via Helm ou l’Operator (il n’existe pas de binaire autonome), et il nécessite une élection de leader afin que l’identité soit coordonnée entre les réplicas du Cluster Agent.

Créez une clé d’API avec la fonctionnalité Private Action Runner dans Organization Settings, puis stockez-la dans un secret Kubernetes que le chart lit via apiKeyExistingSecret :

kubectl create secret generic datadog-secret \
  --from-literal api-key=<DD_API_KEY>

Cet exemple enrôle le runner comme sans propriétaire (apiKeyOnlyEnrollment: true, en utilisant uniquement la clé d’API), ce qui l’autorise avec des politiques d’exécution. Pour d’autres options d’enrôlement et pour savoir comment fonctionne la propriété, consultez Enrollment and ownership.

Les paramètres Helm utilisent la clé privateActionRunner.* en camelCase. Créez un values.yaml :

datadog:
  apiKeyExistingSecret: datadog-secret
  site: <span class="js-region-param region-param" data-region-param="dd_site"></span>
  clusterName: <YOUR_CLUSTER_NAME>
  remoteConfiguration:
    enabled: true
  privateActionRunner:
    enabled: true
    apiKeyOnlyEnrollment: true
    actionsAllowlist:
      - "com.datadoghq.remoteaction.*"
      - "com.datadoghq.script.*"
clusterAgent:
  enabled: true
  privateActionRunner:
    enabled: true
    apiKeyOnlyEnrollment: true
    actionsAllowlist:
      - "com.datadoghq.kubernetes.*"
      - "com.datadoghq.script.*"

Pour toutes les options de configuration disponibles du runner, consultez datadog.privateActionRunner et clusterAgent.privateActionRunner dans le Datadog Helm chart. Installez le chart :

helm repo add datadog https://helm.datadoghq.com
helm repo update
helm install datadog-agent datadog/datadog -f values.yaml

Après l’installation, accédez à Private Action Runners pour vérifier que votre runner apparaît dans la liste.

Le Datadog Operator active le runner via des annotations sur la ressource DatadogAgent. La configuration du runner dans l’annotation -configdata utilise la clé private_action_runner.* en snake_case. L’Operator peut activer à la fois le node Agent runner et le Cluster Agent runner.

Créez une clé d’API avec la fonctionnalité Private Action Runner dans Organization Settings, puis stockez-la dans un secret Kubernetes que la ressource DatadogAgent lit via son credentials :

kubectl create secret generic datadog-secret \
  --from-literal api-key=<DD_API_KEY>

Cet exemple enrôle le runner comme sans propriétaire (api_key_only_enrollment: true, en utilisant uniquement la clé d’API), ce qui l’autorise avec des [politiques d’exécution][5]. Pour d’autres options d’enrôlement et pour savoir comment fonctionne la propriété, consultez Enrollment and ownership.

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
  annotations:
    agent.datadoghq.com/private-action-runner-enabled: "true"
    agent.datadoghq.com/private-action-runner-configdata: |
      private_action_runner:
        enabled: true
        api_key_only_enrollment: true
        actions_allowlist:
          - "com.datadoghq.remoteaction.*"
          - "com.datadoghq.script.*"
    cluster-agent.datadoghq.com/private-action-runner-enabled: "true"
    cluster-agent.datadoghq.com/private-action-runner-configdata: |
      private_action_runner:
        enabled: true
        api_key_only_enrollment: true
        actions_allowlist:
          - "com.datadoghq.kubernetes.*"
          - "com.datadoghq.script.*"
spec:
  global:
    clusterName: <YOUR_CLUSTER_NAME>
    site: <span class="js-region-param region-param" data-region-param="dd_site"></span>
    credentials:
      apiSecret:
        secretName: datadog-secret
        keyName: api-key

Appliquez le manifeste :

kubectl apply -f datadog-agent.yaml

Comme pour Helm, le Cluster Agent runner nécessite une élection de leader, et le node Agent runner est réservé à Linux. Après avoir appliqué le manifeste, accédez à Private Action Runners pour vérifier que votre runner apparaît dans la liste.

Noms des champs de configuration

Les paramètres du runner suivent les conventions de configuration standard du Datadog Agent pour chaque méthode d’installation :

  • Variables d’environnement sur un host.
  • Clés CamelCase sous privateActionRunner dans Helm.
  • Clés snake_case sous private_action_runner dans l’Operator.

Pour le tableau de correspondance des noms de champs pour les trois méthodes d’installation et la liste complète des clés de configuration et des valeurs par défaut, consultez la Référence du Private Action Runner.

Enregistrez le runner

L’enrôlement enregistre le runner auprès de votre organisation Datadog et définit sa propriété, ce qui détermine le modèle d’autorisation. Un runner sans propriétaire, enrôlé avec une clé d’API disposant de la fonctionnalité Private Action Runner, utilise des politiques d’exécution. Un runner possédé, enrôlé avec une clé d’application, utilise Connections. Comme le modèle est fixé lors de l’enrôlement, décidez lequel vous souhaitez avant de déployer.

Pour plus d’informations sur le processus, consultez Inscription et propriété.

Gérer le runner

Modifier la liste d’autorisation

Pour modifier la liste d’autorisation d’un runner dans le Datadog Agent :

  1. Modifiez la section private_action_runner.actions_allowlist dans /etc/datadog-agent/datadog.yaml.
  2. Redémarrez l’Agent : sudo systemctl restart datadog-agent.
  1. Modifiez la section private_action_runner.actions_allowlist dans C:\ProgramData\Datadog\datadog.yaml.
  2. Redémarrez l’Agent : Restart-Service -Force datadogagent.
  1. Mettez à jour actions_allowlist dans les deux annotations du manifeste DatadogAgent : agent.datadoghq.com/private-action-runner-configdata et cluster-agent.datadoghq.com/private-action-runner-configdata.
  2. Appliquez le manifeste mis à jour : kubectl apply -f datadog-agent.yaml.
  1. Mettez à jour privateActionRunner.actionsAllowlist (node Agent) ou clusterAgent.privateActionRunner.actionsAllowlist (Cluster Agent) dans values.yaml.
  2. Appliquez le chart mis à jour : helm upgrade datadog-agent datadog/datadog -f values.yaml.

Suppression automatique des runners inactifs

Pour libérer des ressources inutilisées, Datadog supprime automatiquement les private action runners basés sur le node Agent qui utilisent une configuration à clé d’API uniquement (sans propriétaire) après 35 jours d’inactivité. Ce nettoyage automatique ne s’applique pas aux runners avec propriétaire ni au Cluster Agent runner.

Si votre runner est supprimé en raison d’une inactivité, le redémarrer entraîne une erreur. Vous devez réinscrire le runner en répétant les étapes d’installation.

Débogage avec les logs

cat /var/log/datadog/private-action-runner.log
Get-Content C:\ProgramData\Datadog\logs\private-action-runner.log
kubectl logs -l app.kubernetes.io/component=cluster-agent --tail=1000 | grep private

Mettez à jour le runner

Mettez à jour le runner dans le Datadog Agent pour rester à jour avec toutes les mises à niveau de l’Agent.

Mettez à niveau le Datadog Agent vers la dernière version. Le runner est fourni avec l’Agent.

sudo apt-get update && sudo apt-get install datadog-agent

Ou pour RHEL/CentOS :

sudo yum update datadog-agent

Redémarrez l’Agent après la mise à niveau :

sudo systemctl restart datadog-agent

Pour des instructions de mise à niveau détaillées, consultez Mise à niveau vers l’Agent v7.

Téléchargez le dernier programme d’installation MSI de l’Agent depuis la page de téléchargement du Datadog Agent et exécutez-le, ou utilisez PowerShell :

# Download the latest installer
Invoke-WebRequest -Uri "https://s3.amazonaws.com/ddagent-windows-stable/ddagent-cli-latest.msi" -OutFile ddagent-cli-latest.msi

# Run the installer
Start-Process -Wait -PassThru msiexec -ArgumentList '/qn /i ddagent-cli-latest.msi'

Redémarrez l’Agent après la mise à niveau :

Restart-Service -Force datadogagent

Mettez à jour les versions de l’image du Datadog Operator et de l’Agent dans votre manifeste DatadogAgent.

  1. Mettez à jour le Datadog Operator :

    helm repo update
    helm upgrade datadog-operator datadog/datadog-operator \
        --set image.repository=registry.datadoghq.com/operator \
        --set image.tag=latest
    

    Vous pouvez fixer une version spécifique. Pour parcourir les tags disponibles, utilisez Docker Hub.

  2. Mettez à jour les versions de l’image de l’Agent dans votre manifeste datadog-agent.yaml :

    override:
      nodeAgent:
        image:
          name: registry.datadoghq.com/agent:<NEW_AGENT_VERSION>
      clusterAgent:
        image:
          name: registry.datadoghq.com/cluster-agent:<NEW_AGENT_VERSION>
    
  3. Appliquez le manifeste mis à jour : kubectl apply -f datadog-agent.yaml.

  4. Vérifiez la mise à jour :

    kubectl get pods
    kubectl logs -l app.kubernetes.io/component=cluster-agent --tail=100 | grep private
    

Le Cluster Agent runner conserve son identité lors de la mise à jour, car il la stocke dans un secret Kubernetes partagé. Le node Agent runner stocke son identité dans un fichier : si ce chemin n’est pas supporté par un volume persistant, une mise à jour peut effacer l’identité et forcer le runner à se réinscrire. Consultez Stockage de l’identité sur Kubernetes.

La mise à jour du runner fait partie du processus standard de mise à niveau du Datadog Agent Helm chart.

helm repo update
helm upgrade datadog-agent datadog/datadog -f values.yaml

Pour des instructions de mise à niveau détaillées, consultez Mise à niveau de Datadog Helm.

Mettez à jour les variables de version dans votre configuration Terraform :

locals {
  helm_operator_version = "<NEW_OPERATOR_VERSION>"
  agent_version         = "<NEW_AGENT_VERSION>"
  # ...
}

Appliquez les changements :

terraform plan
terraform apply -var="datadog_api_key=<YOUR_API_KEY>" -var="datadog_app_key=<YOUR_APP_KEY>"

Pour aller plus loin