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.
| Page | Contenu |
|---|---|
| Installer l'agent Navin | Paquets pour chaque système, enregistrement par commande, par enroll.env ou par SSH |
| Référence de configuration | Chaque clé d'agent.json, chaque option de nm-agent, enroll.env (générée) |
| Sécurité de l'agent Navin | Identité, TLS mutuel, signature des requêtes, garde des chemins, commandes autorisées |
| Exploiter l'agent Navin | Démarrer, arrêter, état, journaux, mise à niveau, retrait |
| Dépanner l'agent Navin | Symptômes, causes, corrections |
| Agent d'hôte | Faits, proxy d'entreprise, quel agent installer |
| Agent de cluster Kubernetes | L'agent d'un cluster Kubernetes (composant distinct) |
Architecture
| Élément | Valeur |
|---|---|
| Programmes | Agent 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és | navin-manager-agent.service (s'exécute en root, KillMode=process), navin-manager-agent-enroll.service et .timer (enregistrement depuis enroll.env) |
| Réseau | Sortant uniquement : vers le Manager sur 8460/tcp (enregistrement) et 8461/tcp (API des agents et miroir). Aucun port en écoute sur l'hôte. |
| Pilotes | systemd (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
- 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. - 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 appellePOST /agent/v1/registersur le port 8460 avec le jeton, les faits et la demande. - É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_mismatchs'il diffère de--ca-sha256: rien n'est enregistré. - Identifiants. L'agent publie atomiquement la chaîne de certificats et la clé privée dans
agent.pem(0600), avecca.crtetcredentials.json(0600) dans son répertoire d'état, puis écritserver_urletagent_urldansagent.json.agent.crtetagent.keyne sont lus que siagent.pemest 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_requiredvaut 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é avec401 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.