Aller au contenu principal

Agent Navin

L'agent Navin s'exécute sur chaque hôte géré. Il enregistre l'hôte auprès du Navin Manager, envoie des signaux de vie, des faits et des métriques, et exécute les tâches du Manager une à la fois : utilisateurs, répertoires, fichiers, artefacts, images de conteneurs, unités systemd, contrôles de santé, commandes. Cette rubrique explique son fonctionnement et comment l'installer, le configurer, le sécuriser, l'exploiter et le dépanner.

PageContenu
Installer l'agent NavinPaquets pour chaque système, enregistrement par commande, par enroll.env ou par SSH
Référence de configurationChaque clé d'agent.json, chaque option de nm-agent, enroll.env (générée)
Sécurité de l'agent NavinIdentité, TLS mutuel, signature des requêtes, garde des chemins, commandes autorisées
Exploiter l'agent NavinDémarrer, arrêter, état, journaux, mise à niveau, retrait
Dépanner l'agent NavinSymptômes, causes, corrections
Agent d'hôteFaits, proxy d'entreprise, quel agent installer
Agent de cluster KubernetesL'agent d'un cluster Kubernetes (composant distinct)

Architecture​

ÉlémentValeur
ProgrammesAgent Go navin-manager-agent-go (livré, un binaire statique) et agent Python navin-manager-agent (référence). Les deux installent /usr/bin/nm-agent.
Configuration/etc/navin-manager-agent/agent.json (référence)
État/var/lib/navin-manager-agent (mode 0700) : clé, certificats, identifiants, registre des composants
Journaux/var/log/navin-manager-agent/agent.log (20 Mo, 5 copies) et le journal de navin-manager-agent.service
Unitésnavin-manager-agent.service (s'exécute en root, KillMode=process), navin-manager-agent-enroll.service et .timer (enregistrement depuis enroll.env)
RéseauSortant uniquement : vers le Manager sur 8460/tcp (enregistrement) et 8461/tcp (API des agents et miroir). Aucun port en écoute sur l'hôte.
Pilotessystemd (unités navin-<service>-<composant>.service) ou process (processus supervisés, bac à sable sans root)

L'agent ouvre toutes les connexions. Il interroge le Manager pour obtenir la tâche suivante (attente longue de poll_wait_s secondes), l'exécute, transmet ses journaux et renvoie le résultat ; en parallèle, il envoie un signal de vie toutes les heartbeat_interval_s secondes et exécute les contrôles de santé de ses composants toutes les health_interval_s secondes. Les types de tâches sont listés dans la référence des opérations.

Les services gérés continuent de tourner quand l'agent s'arrête ou redémarre : l'unité n'arrête que le processus de l'agent.

Confiance et enrôlement​

  1. Jeton d'amorçage. Un opérateur crée un jeton dans la console (Hôtes > Ajouter des hôtes) ou avec navin-manager enroll-token --cluster <nom> --uses <n> --hours <h>. Le jeton permet à un nombre donné d'hôtes de s'enregistrer pendant une durée donnée, dans un cluster.
  2. Enregistrement. nm-agent register --server <adresse> --token <jeton> --ca-sha256 <empreinte> crée une clé EC P-256 et une demande de certificat sur l'hôte (la clé ne quitte jamais l'hôte) et appelle POST /agent/v1/register sur le port 8460 avec le jeton, les faits et la demande.
  3. Épinglage de l'autorité. Le Manager répond avec l'identifiant de l'hôte, un certificat client, le certificat de l'autorité et un secret. L'agent calcule le sha256 du certificat de l'autorité et s'arrête avec ca_mismatch s'il diffère de --ca-sha256 : rien n'est enregistré.
  4. Identifiants. L'agent publie atomiquement la chaîne de certificats et la clé privée dans agent.pem (0600), avec ca.crt et credentials.json (0600) dans son répertoire d'état, puis écrit server_url et agent_url dans agent.json. agent.crt et agent.key ne sont lus que si agent.pem est absent. Voir le contrat de migration et de retour arrière.

TLS mutuel et signatures​

Après l'enregistrement, chaque appel vise l'API des agents (port 8461) avec :

  • TLS mutuel : l'agent présente son certificat client, émis par l'autorité interne du Manager ; le Manager refuse une connexion qui n'en a pas tant que agent_client_cert_required vaut true (toujours en production) ;
  • une signature de requête : Authorization: NM-HMAC <host_id>:<ts unix>:<hmac hex>, un HMAC-SHA256 de la méthode, du chemin, de l'horodatage et du sha256 du corps avec le secret de l'agent. Un horodatage écarté de plus de 300 secondes, un hôte inconnu ou retiré, ou une signature fausse est refusé avec 401 agent_signature_invalid.

L'agent renouvelle son certificat avec POST /agent/v1/renew (une nouvelle demande de certificat) ; le Manager révoque le certificat précédent. Le transport direct rafraîchit sa CRL et vérifie l'identité pour l'API et le miroir. La livraison des tâches exige maintenant le protocole 2, avec ACK et journaux/résultats liés à une tentative ; la migration est coordonnée avec V093/V094 et les binaires agents actuels. Les détails figurent dans Sécurité de l'agent Navin.