Преминете към основното съдържание

Преместване на Entrosity Hub

Entrosity Hub и Entrosity Axis споделят едно име на хост: Hub на /, Axis на /axis, документацията на /docs (PLATFORM_DOMAIN). Преместването им на друго име е една автоматизирана със скрипт стъпка на хоста. Агентите и конекторите не са засегнати: всяко по-ранно име продължава да обслужва API на Axis за устройствата, регистрирани към него, и пренасочва браузърите към новото име.

История​

Влизането беше преместено от Axis в Hub през септември 2026 г. на три стъпки:

  1. Влизане чрез Hub. Преди Axis сам удостоверяваше потребителите на https://manage.entrosity.com (порталът под /manage). Hub беше стартиран до него на https://portal.entrosity.com, потребителите, тенантите и ролите на Axis бяха копирани там с platform-server import-rmm, а Axis премина към токените на Hub и се обслужваше на https://portal.entrosity.com/manage. manage.entrosity.com запази API за регистрираните агенти и конектори и пренасочваше браузърите.
  2. Премахване на локалното влизане. Миграцията 0013_drop_local_auth премахна паролите, сесиите, тайните за двуфакторна автентикация и поканите от базата данни на Axis (Модел на данните). Връщането към локално влизане сега означава възстановяване на резервно копие, направено преди нея.
  3. Нови адреси. Axis беше преместен от /manage на /axis (миграцията на Hub 0002_axis_path), а Hub — на hub.entrosity.com чрез стъпката move по-долу.

Етапите, използвани за първата стъпка (hub, import, switch, redirect, rollback), вече са премахнати от скрипта. import-rmm все още съществува в platform-server, но изисква база данни на Axis отпреди миграция 0013.

Продукционна среда

Докато hub.entrosity.com няма DNS запис, продукционната среда обслужва Hub на https://portal.entrosity.com, а Axis — на https://portal.entrosity.com/axis; преместването по-долу завършва превключването.

Преди да започнете​

  • DNS: запис A за новото име (например hub.entrosity.com), който сочи към хоста (93.123.16.234), в зоната entrosity.com в GoDaddy. Той може да минава през прокси (Cloudflare) или не; скриптът проверява само дали името се разрешава на хоста. Caddy получава сертификата при първата заявка (HTTP-01 на порт 80), така че записът трябва да достига до хоста.
  • Уведомете потребителите: след преместването всички влизат отново, на новия адрес (бисквитката за сесията на Hub принадлежи на име на хост). Паролите, приложенията за автентикация и ролите остават непроменени.
  • Скриптът прави резервно копие; пазете и копие на deploy/.env.

Преместване​

Изпълнете deploy/scripts/platform-cutover.sh move hub.entrosity.com (и status) на хоста, в /opt/entrosity/deploy.

Преместването към hub.entrosity.com беше изпълнено, преди продукцията да се разгръща от entrosity-infra, с ръчно стартирания работен процес platform-cutover на entrosity/RMM (.github/workflows/platform-cutover.yml), който изпълняваше скрипта чрез SSH ключа на работния процес за разгръщане и никога не се застъпваше с разгръщане. Този работен процес вече е изключен; entrosity-infra пази копие в .github/workflows-disabled/:

# исторически, в entrosity/RMM
gh workflow run platform-cutover.yml -f stage=status
gh workflow run platform-cutover.yml -f stage=move -f domain=hub.entrosity.com

move:

  1. проверява дали името се разрешава (getent hosts) и в противен случай спира;
  2. прави резервно копие (backup.sh);
  3. задава PLATFORM_DOMAIN в deploy/.env на новото име и добавя предишното в PLATFORM_OLD_DOMAINS (като премахва новото име от този списък, така че връщането обратно работи по същия начин);
  4. премахва настройките, които compose вече извежда сам или които вече не се използват: RMM_PUBLIC_URL, RMM_PORTAL_URL, RMM_CORS_ORIGINS, RMM_AUTH_MODE, RMM_EDGE, COMPOSE_PROFILES. Compose задава RMM_PUBLIC_URL и RMM_PORTAL_URL на https://<PLATFORM_DOMAIN>/axis (Конфигурация);
  5. рестартира Hub, бекендите (със същия брой реплики) и Caddy;
  6. изчаква https://<domain>/api/platform/v1/healthz и https://<domain>/axis/api/v1/healthz (което потвърждава и сертификата).

status отпечатва PLATFORM_DOMAIN, PLATFORM_OLD_DOMAINS, RMM_DOMAIN, RMM_VERSION и услугите.

За да се върнете обратно, преместете се към предишното име по същия начин.

Проверка​

curl -fsS https://hub.entrosity.com/api/platform/v1/healthz
curl -fsS https://hub.entrosity.com/axis/api/v1/healthz
curl -so /dev/null -w '%{http_code}\n' https://hub.entrosity.com/api/platform/internal/v1/jwks.json # 404
curl -so /dev/null -w '%{http_code} %{redirect_url}\n' https://portal.entrosity.com/manage/ # 308 to hub.entrosity.com/axis/
curl -fsS https://portal.entrosity.com/manage/api/v1/healthz # enrolled agents
curl -fsS https://manage.entrosity.com/api/v1/healthz # enrolled agents

След това, като потребител: влезте на https://hub.entrosity.com, отворете Entrosity Axis, отворете тенант и изпълнете скрипт на тестово устройство. В Grafana rmm_ws_connections остава на предишното ниво (агентите запазват връзките си), а rmm_platform_sync_age_seconds остава под 60.

След преместването насочете към новия хост променливите на работните процеси, които все още посочват стария хост, където е необходимо (DEPLOY_URL, RMM_API_URL, CI работни процеси); старите хостове продължават да обслужват API, така че междувременно нищо не се прекъсва.

Кои стари адреси продължават да работят​

Caddy обслужва три вида сайтове (TLS, deploy/Caddyfile):

АдресБраузъриАгенти, конектори, скриптове
https://hub.entrosity.com/ (PLATFORM_DOMAIN)Hub; Axis на /axis; документацията на /docsНовите регистрирания използват https://hub.entrosity.com/axis (/axis/api/…)
https://hub.entrosity.com/manage/…308 към /axis/…/manage/api/* все още се обслужва
https://portal.entrosity.com/… (PLATFORM_OLD_DOMAINS)308 към същия път на името на Hub (/manage/… към /axis/…)/axis/api/* и /manage/api/* все още се обслужват
https://manage.entrosity.com/… (RMM_DOMAIN)308 към https://hub.entrosity.com/axis/…; /docs към документацията на Hub/api/* и /manage/api/* все още се обслужват

Агентите и конекторите запазват URL адреса на сървъра, с който са регистрирани (пренасочване към друг хост би изгубило идентификационните им данни), така че тези пътища на API остават, докато съществуват такива устройства. Повторното инсталиране с токен за регистриране премества устройството на текущия адрес. Отметките и изпратените по имейл връзки към всяка стара страница водят до съответната страница на новия адрес.