Aller au contenu

Installer avec Docker

Sur cette page
  1. Lancer l'agent
  2. Docker Compose
  3. Plusieurs agents sur un hôte
  4. Contrôles de santé et plateformes de conteneurs
  5. Réglages
  6. Gérer le conteneur

L'agent est publié sous forme d'image Docker onagreio/agent. Il n'a besoin que de son jeton et d'un accès sortant, rien d'autre : aucun volume, aucun port exposé.

x64 uniquement

L'image est construite pour linux/amd64. Sur les hôtes ARM64, utilisez l'installateur automatique ou le binaire Linux.

Lancer l'agent#

Terminal
docker run -d \
    --name onagre-agent \
    --restart=always \
    --ulimit nofile=65536:65536 \
    -e "TOKEN=<YOUR_TOKEN>" \
    onagreio/agent
Option Pourquoi
--restart=always L'agent redémarre avec Docker et après toute défaillance.
--ulimit nofile=65536:65536 Permet à l'agent de garder de nombreux contrôles ouverts simultanément.
-e "TOKEN=…" Le jeton de l'agent. Préférez --env-file avec un fichier lisible par vous seul, pour que le jeton ne figure pas dans l'historique de votre shell.

Le conteneur atteint ce que le réseau de l'hôte atteint. Pour contrôler des services qui écoutent sur l'hôte lui-même (localhost), ajoutez --network host.

Les images sont étiquetées avec la version de l'agent (par exemple onagreio/agent:2.8.4.112) et latest. Fixez une version sur les hôtes de production, pour que les mises à jour restent délibérées.

Docker Compose#

YAML
services:
  onagre-agent:
    image: onagreio/agent:latest
    restart: always
    env_file: ./onagre-agent.env     # TOKEN=<YOUR_TOKEN>
    ulimits:
      nofile: { soft: 65536, hard: 65536 }

Les logs vont sur la sortie du conteneur : docker logs onagre-agent.

Plusieurs agents sur un hôte#

L'installateur Linux fait tourner un agent par machine. Pour faire tourner plusieurs agents sur le même hôte — par exemple un par réseau ou par environnement — lancez un conteneur par agent, chacun avec son propre jeton (créez un agent par conteneur dans Onagre) :

YAML
services:
  agent-prod:
    image: onagreio/agent:2.9.0.0
    restart: always
    env_file: ./agent-prod.env       # TOKEN=<JETON_DE_L_AGENT_PROD>
  agent-staging:
    image: onagreio/agent:2.9.0.0
    restart: always
    env_file: ./agent-staging.env    # TOKEN=<JETON_DE_L_AGENT_STAGING>

Ne donnez jamais le même jeton à deux conteneurs : le second est refusé (Another agent is already connected with this token).

Contrôles de santé et plateformes de conteneurs#

L'agent sert /health, /ready et /status sur le port 27520 — voir Endpoints de santé. Par défaut, ils n'écoutent qu'à l'intérieur du conteneur (127.0.0.1) : un HEALTHCHECK Docker exécuté dans le conteneur fonctionne tel quel, mais les sondes venant de l'extérieur du conteneur exigent HTTP_API_BIND=any.

Sur Kubernetes ou une plateforme de conteneurs managée (Scaleway Serverless Containers, Cloud Run, Azure Container Apps…) :

  • définissez HTTP_API_BIND=any, puis pointez la sonde liveness vers /health et la sonde readiness vers /ready ;
  • la variable PORT de la plateforme, lorsqu'elle en définit une, est utilisée par l'agent ;
  • gardez exactement une instance en marche : pas de mise à l'échelle à zéro — l'agent maintient une connexion permanente avec le Hub — ni de seconde réplique — une seconde instance avec le même jeton est refusée (Another agent is already connected with this token). Besoin de deux agents ? Créez deux agents dans Onagre ;
  • aucune route entrante n'est nécessaire : les endpoints ne servent qu'aux sondes de la plateforme.

Réglages#

Variable Défaut Rôle
TOKEN (obligatoire) Le jeton de l'agent.
PORT 27520 Port des endpoints de santé (le PORT propre d'une plateforme est prioritaire).
HTTP_API_BIND 127.0.0.1 any pour accepter les sondes venant de l'extérieur du conteneur.
HTTP_API activé 0 pour désactiver les endpoints de santé.
LOG_FORMAT texte json pour écrire les logs en lignes JSON compactes, pour les plateformes qui indexent le JSON.

Tous les réglages : Configuration de l'agent.

Gérer le conteneur#

Tâche Commande
Logs docker logs -f onagre-agent
Redémarrer docker restart onagre-agent
Mettre à jour docker pull onagreio/agent:latest, puis supprimez le conteneur et relancez-le
Supprimer docker rm -f onagre-agent