Railway
Подключить
Подключите Railway из терминала. Передайте --help, чтобы увидеть флаги, которые принимает Railway, а также --no-browser для окружений без браузера.
polylane cloud connect --provider railwayАвторизация OAuth.
Railway подключается через OAuth: нажмите Continue to Railway, разрешите доступ на чтение на стороне Railway, и вы вернётесь обратно с уже запущенной синхронизацией. Токены шифруются перед сохранением, и агент никогда их не видит.
Polylane обнаруживает ваши проекты, окружения, сервисы, деплои, тома, домены и TCP-прокси. Метрики сервисов питают графики и обнаружение аномалий. Имена переменных синхронизируются для связывания между облаками; значения переменных никогда не читаются. Эфемерные окружения (для pull request'ов) пропускаются.
Webhooks деплоев и алертов
Railway отправляет изменения статуса деплоев и алерты об использовании через правила уведомлений. Если направить одно из них в Polylane, он будет поднимать алерт при неудачных или упавших деплоях, закрывать алерт при следующем успешном деплое и планировать повторную синхронизацию:
- Скопируйте URL webhook со страницы Settings облачного аккаунта в Polylane (он заканчивается ID вашего рабочего пространства Railway).
- В Railway откройте настройки Notifications вашего рабочего пространства и добавьте правило webhook, указывающее на этот URL.
- Выберите нужные события Deployment:
Deployment.deployed,Deployment.failed,Deployment.crashedиDeployment.oom_killedпокрывают процесс алертинга (событие успеха в Railway называетсяDeployment.deployed; событияDeployment.successне существует). - Добавьте события VolumeAlert и Monitor, включая
VolumeAlert.resolvedиMonitor.resolved, чтобы алерты томов и мониторов автоматически открывались и закрывались в Polylane.
Устранение неполадок
Авторизация не проходит или отменяется
- Убедитесь, что вы вошли в Railway под аккаунтом с доступом к рабочему пространству.
- Повторите с Continue to Railway; ссылка авторизации действует всего несколько минут.
Отсутствуют ресурсы
- Railway может синхронизировать всё в течение нескольких минут.
- Эфемерные окружения (для pull request'ов) не синхронизируются.
- Запустите ручную Sync из заголовка аккаунта, чтобы обновить данные.
Отключение
Отключите аккаунт в Polylane, затем отозовите OAuth-разрешение в настройках вашего аккаунта Railway и удалите правило уведомлений, если вы его создавали.
Подключите Railway из CI-задания или любого другого окружения без браузера.
Для подключения Railway браузер не нужен: тот же эндпоинт, который вызывает консоль, помещается в CI-задание. Один аутентифицированный POST создаёт подключение и запускает первую синхронизацию.
Требования
- API-ключ Polylane с областями
cloud_accounts:writeиcloud_accounts:read. См. API-ключи и OAuth. - ID вашего рабочего пространства, который начинается с
ws_. Прочитайте его изGET /v1/workspacesтем же ключом. - Токен рабочего пространства Railway из настроек вашего рабочего пространства. OAuth-процессу консоли нужен браузер; токенам рабочего пространства нет.
Создайте подключение
curl -X POST https://api.polylane.com/v1/cloud_accounts \
-H "x-api-key: $POLYLANE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": "railway",
"workspaceId": "ws_0abc123",
"token": "<railway-workspace-token>"
}'
Один вызов подключает каждое рабочее пространство Railway, доступное токену; передайте необязательный railwayWorkspaceId, чтобы подключить только одно.
Ответ перечисляет, что было подключено, с уже запущенной первой синхронизацией. Сокращён до двух полей, которые читает остальная часть процесса:
{
"success": true,
"result": {
"provider": "railway",
"accounts": [{ "id": "acc_34gky74ibc92h8t2efn8csrh", "status": "syncing" }],
"failures": []
}
}
Уже подключённый аккаунт попадает в failures, а не в accounts, поэтому повторный вызов никогда не дублирует подключение.
Дождитесь первой синхронизации
Опрашивайте каждый возвращённый аккаунт по его id, пока status не достигнет ready (new при регистрации, syncing пока ресурсы поступают):
until [ "$(curl -s "https://api.polylane.com/v1/cloud_accounts/$WORKSPACE_ID/$ACCOUNT_ID" \
-H "x-api-key: $POLYLANE_API_KEY" | jq -r '.result.status')" = "ready" ]; do
sleep 15
done
Задайте циклу предельное время, чтобы неудачное подключение проваливало задание, а не подвешивало его. Как только аккаунт в состоянии ready, его ресурсы находятся в топологии, и Polylane начал свою первую проверку.
Отключение через API
Удаление подключения останавливает все синхронизации и проверки и удаляет учётные данные, которые хранил Polylane. Вызову нужна область cloud_accounts:delete:
curl -X DELETE "https://api.polylane.com/v1/cloud_accounts/$WORKSPACE_ID/$ACCOUNT_ID" \
-H "x-api-key: $POLYLANE_API_KEY"
Затем отозовите учётные данные Railway на стороне провайдера, как описано ниже в разделе Отключение.
Отключить
Отключение останавливает все синхронизации и проверки и удаляет учётные данные, которые хранил Polylane. Polylane удаляет то, что позволяет удалить API Railway. Следующее остаётся, пока вы не удалите его сами:
- OAuth grant
polylane cloud disconnect <id>Инструменты
4Операции, которые агенты могут выполнять в тредах.
Поддерживаемые ресурсы
8Типы ресурсов, которые появляются в графе вашей инфраструктуры.