KnotRoute Agent
Agent устанавливается на управляемый сервер и сам инициирует HTTPS-соединение к Control. Открывать отдельный inbound management port на host не требуется.
Compose
Заголовок раздела «Compose»services: agent: image: ghcr.io/localzet/knotroute-agent:latest restart: unless-stopped environment: KNOTROUTE_CONTROL_URL: "https://control.example.net" KNOTROUTE_CONTROL_ENROLL_TOKEN: "${KNOTROUTE_CONTROL_ENROLL_TOKEN}" KNOTROUTE_AGENT_NAME: "prod-01" KNOTROUTE_AGENT_TAGS: "production,eu" KNOTROUTE_AGENT_DOCKER: "true" volumes: - agent-data:/data - /var/run/docker.sock:/var/run/docker.sock
volumes: agent-data:Enrollment
Заголовок раздела «Enrollment»При первом старте Agent использует enrollment token, генерирует persistent identity и регистрирует public key в Control.
После enrollment не удаляйте agent-data: иначе Agent станет новым management identity и потребует повторной регистрации.
Подпись запросов
Заголовок раздела «Подпись запросов»Heartbeat, получение jobs и отправка результатов подписываются Agent identity. Это защищает management API от простого подменённого клиента, даже если endpoint известен.
Docker mode
Заголовок раздела «Docker mode»KNOTROUTE_AGENT_DOCKER=true разрешает Agent выполнять поддерживаемые Docker deployment jobs.
/var/run/docker.sock фактически получает широкие административные возможности на host. Монтируйте socket только Agent’у, защищайте Control и не давайте этот mount knotroute-control.
Если Docker automation не нужен:
KNOTROUTE_AGENT_DOCKER=falseи socket не монтируется.
Poll interval
Заголовок раздела «Poll interval»KNOTROUTE_AGENT_POLL задаёт интервал обращения к Control. Слишком маленькое значение увеличивает management traffic без заметной пользы.
Используйте tags для классификации:
production,eu,public-relaystaging,internalhome,nasНе кладите в tags secrets.
Обновление Agent
Заголовок раздела «Обновление Agent»Agent можно обновлять обычным docker compose pull && docker compose up -d, сохраняя /data. После restart он продолжает использовать прежнюю identity.