Архитектура
Карта сервисов и связей между ними.
Страница «Архитектура» показывает сервисы выбранной области на карте: приложения и базы PostgreSQL, сгруппированные по проектам и окружениям, а также их домены и связи.
Связи строятся по сохранённым настройкам. DeployCode не следит за реальными соединениями и трафиком между сервисами. Доступ приложения к Postgres можно проверить вручную.
Что на карте
- Сервисы — карточки приложений и баз PostgreSQL. У PostgreSQL видны тома.
- Домены и порты — как сервис доступен снаружи.
- Инфраструктура — Traefik на сервере (слой выключен по умолчанию).
- Связи — стрелки между сервисами.
Сервисы вне выбранной области, на которые ссылается сервис из области, тоже показываются — с пометкой «Вне области».
Как появляются связи
DeployCode читает переменные сервиса и проводит стрелку, если значение указывает на другой сервис:
- URL
postgres://,postgresql://,http://илиhttps://; - пара переменных
PGHOSTиPGPORTилиDB_HOSTиDB_PORT.
Адрес сопоставляется с именем сервиса Docker, его доменом или публичным IP и опубликованным портом.
Ссылки на переменные (${{environment.DATABASE_URL}}), секреты и ссылки на сервисы
сначала подставляются. Учитываются только переменные, доступные при запуске.
Если ссылку не удалось сопоставить, она попадает в «Неразрешённые ссылки» с причиной: формат не поддерживается, подходящий сервис не найден, подходят сразу несколько или переменную, на которую идёт ссылка, не удалось подставить.
Работа с картой
- Карточки можно перетаскивать — расположение запоминается в браузере.
- Кнопки масштаба и «Уместить карту».
- «Настройки карты»: показывать связи, авторасстановка, сбросить карту.
- «Слои карты»: ссылки в переменных, домены и порты, инфраструктура.
Во время развёртывания карта обновляется сама.
Панель сервиса
Клик по карточке открывает панель сервиса:
| Вкладка | Что в ней |
|---|---|
| Обзор | Состояние и конфигурация запуска в сравнении с последним развёртыванием |
| Запуски | История развёртываний (для PostgreSQL — логи) |
| Переменные | Переменные сервиса — их можно добавлять и менять здесь. Переменные окружения и проекта видны только для чтения (для PostgreSQL — данные подключения) |
| Связи | Входящие и исходящие связи |
| Настройки | Репозиторий, сборка, домены и маршруты, публикации портов (только просмотр) |
В панели есть кнопка «Развернуть» и переход на полную страницу сервиса.
Подключения к Postgres
У приложения во вкладке «Связи» есть раздел «Подключения к Postgres». В нём видны переменные приложения, через которые передаётся строка подключения к базе, и можно настроить новую.
Настроить подключение
Нажмите «Настроить подключение к Postgres»:
| Поле | Что указать |
|---|---|
| Postgres | База этого окружения и способ подключения: внутренняя сеть (приложение и база на одном сервере) или внешнее подключение через опубликованный порт |
| Переменная приложения | Имя переменной, по умолчанию DATABASE_URL |
После «Сохранить настройки» у приложения появится переменная типа «Ссылка на сервис» на строку подключения. Она доступна только при запуске, а пароль не копируется в интерфейс.
- Код приложения должен читать эту переменную.
- Настройки применятся при следующем развёртывании приложения.
- Сети и порты не изменятся. Для внешнего подключения сначала откройте внешний порт базы.
- Существующая переменная с тем же именем не перезаписывается: выберите другое имя или измените её во вкладке «Переменные».
Если в списке нет баз, добавьте Postgres в это окружение, проверьте права на его переменные и общую сеть. Для базы на другом сервере настройте внешний порт.
Проверить соединение
У каждого подключения есть кнопка «Проверить соединение». DeployCode запускает на сервере приложения
временный клиент Postgres в сети одной работающей реплики приложения и выполняет SELECT 1. Первая
проверка может занять до минуты: серверу нужно скачать образ клиента с Docker Hub.
Проверка берёт текущие сохранённые настройки Postgres, а не переменные уже запущенного приложения. Это разовая проверка, а не мониторинг.
Если соединения нет, результат подскажет причину: приложение не запущено, сервер недоступен, имя базы не разрешается в сети приложения, порт закрыт, истекло время ожидания, отклонён пароль, нет базы или прав доступа, ошибка TLS.
Для настройки нужно право записи переменных приложения, для проверки — право чтения переменных приложения и базы.