Окружения приложения
Каждый ресурс приложения относится к одному окружению. На странице окружения собрано то, что общее для его ресурсов: ноды, которые они могут использовать, переменные и секреты, которые получает каждая рабочая нагрузка, режим обслуживания для всех его маршрутов и продвижение из другого окружения или в другое окружение. Откройте её на вкладке Overview или в блоке Environments на вкладке Settings приложения.


Разрешённые ноды
Заголовок раздела «Разрешённые ноды»Окружение создаёт ресурсы только на тех нодах, которые оно разрешает. Новое окружение не разрешает ни одной. Чтобы добавить ноду, используйте Allow node на странице окружения; вкладка Nodes приложения показывает разрешённые ноды каждого окружения.
Правило действует везде, а не только в консоли: REST API, MCP и AI-ассистент отказываются создавать контейнер, Deployment, проект Compose, управляемую базу данных, управляемое хранилище, маршрут или проект Pages окружения на ноде, которую оно не разрешает; так же поступают миграция, Workload Availability и восстановление резервной копии в новую базу данных. Если окружение не разрешает ни одной ноды нужного типа, запрос отклоняется с no allowed node; если в запросе указана неразрешённая нода — с node not allowed.
Убрать ноду из списка можно в любой момент. В подтверждении показано, сколько ресурсов окружения на ней работает; они продолжают работать, но новые на ней создать уже нельзя.
Переменные и секреты
Заголовок раздела «Переменные и секреты»Блок Variables задаёт значения, которые получает каждый контейнер, Deployment и служба Compose окружения. Secrets работают так же, но только на запись: после сохранения видны только их ключи и время изменения. И те, и другие зашифрованы при хранении. В окружении может быть до 200 ключей, каждое значение — до 32 КиБ, и ключ является либо переменной, либо секретом, но не тем и другим сразу. Проекты Pages переменных не получают.
Если ключ задан в нескольких местах, побеждает более конкретное значение, от низшего приоритета к высшему:
- собственный
ENVобраза; - переменные окружения;
- секреты окружения;
- собственные переменные среды ресурса (или переменные проекта Compose);
- собственные секреты ресурса.
Вкладка Environment контейнера отмечает ключи, полученные из окружения. Значения окружения никогда не копируются в собственные настройки ресурса, поэтому их последующее изменение меняет то, что получает ресурс. Служба Compose получает каждый ключ окружения, который она не задаёт сама; значения не записываются в файл Compose.
Save или Save and recreate
Заголовок раздела «Save или Save and recreate»Работающие рабочие нагрузки не перезапускаются при изменении значений окружения. После Save уведомление сообщает, сколько рабочих нагрузок получат новые значения при следующем пересоздании или развёртывании.
Чтобы применить их сразу, используйте More → Save and recreate N workloads. Рабочие нагрузки пересоздаются по одной: контейнеры пересоздаются, Deployments проходят обычный выпуск, а проекты Compose применяются. Диалог показывает ход работы для каждой рабочей нагрузки и останавливается на первом сбое, называя его; следующие рабочие нагрузки не затрагиваются.
Рабочая нагрузка, перенесённая в другое окружение, получает значения нового окружения при следующем пересоздании, а ключи старого окружения удаляются. Рабочая нагрузка, выведенная из приложения, теряет ключи окружения при следующем пересоздании.
Режим обслуживания
Заголовок раздела «Режим обслуживания»Maintenance на странице окружения переводит в режим обслуживания сразу все маршруты окружения: они возвращают страницу обслуживания (HTTP 503), пока вы его не выключите. Собственная настройка режима обслуживания каждого маршрута сохраняется и после этого снова действует. Блок показывает Off, Maintenance или число маршрутов, у которых включён собственный режим обслуживания, пока переключатель окружения выключен.
Maintenance for the whole app на вкладке Settings приложения делает то же для всех маршрутов всех окружений и перекрывает переключатель каждого окружения; страница окружения тогда показывает Overridden by the app. При выключении восстанавливается собственное состояние каждого окружения.
Затрагиваются только маршруты, которые перенаправляют запросы на вышестоящий сервер, — как и для собственного переключателя маршрута. Страница маршрута показывает, откуда взялся его режим обслуживания.
Код доступа на время обслуживания
Заголовок раздела «Код доступа на время обслуживания»Чтобы пропустить одного человека, пока маршруты находятся в режиме обслуживания, откройте меню действий окружения (или приложения) и выберите Create Maintenance Access Code. Код действует 5 минут и один раз открывает каждый маршрут этого окружения (или всего приложения), находящийся в режиме обслуживания. Передавайте его только тому, кому нужен доступ. Маршруты должны работать на ноде Ingress, которая поддерживает коды доступа, и код никогда не работает, пока приложение изолировано. Как вводить код, описано в разделе Списки доступа и режим обслуживания.
Продвижение
Заголовок раздела «Продвижение»Блок Promote запускает в другом окружении ровно то, что работает в этом, ничего не собирая заново. Так проверенный staging переходит в production.
- На странице исходного окружения выберите
Promote to <environment>. Если окружений больше двух, сначала выберите целевое. - Шаг 1 перечисляет, что работает в исходном окружении и чем это отличается от целевого: Same, Changed или Not promotable с причиной. Выключите то, что продвигать не нужно.
- Шаг 2 показывает, что произойдёт в целевом окружении для каждого элемента.
- Подтвердите. Элементы выполняются один за другим; сбой одного не останавливает остальные. Диалог показывает ход работы для каждого.
Что продвигается:
- Контейнеры и Deployments: образ по его дайджесту, поэтому в целевом окружении работает побайтно тот же образ. Deployment использует обычный выпуск. Образ, собранный из Git, продвигается как тот же артефакт сборки, без новой сборки.
- Проекты Compose: файл Compose исходной ревизии, где образ каждой службы закреплён по дайджесту, который работает в исходном окружении. Целевое окружение сохраняет свои переменные и секреты.
- Проекты Pages: активное развёртывание исходного проекта копируется в целевой проект и становится там активным.
Базы данных, хранилища, их данные и схема никогда не продвигаются.
Ресурсы сопоставляются по имени: то же имя или исходное имя без суффикса -<environment> в конце (shop-api-staging в staging сопоставляется с shop-api в production). Исходный ресурс без пары отображается как отсутствующий в целевом окружении. Пара ресурсов разных типов, например Deployment и контейнер, продвигаться не может.
При подтверждении предпросмотр проверяется ещё раз; если за это время что-то изменилось, Opfield просит проверить его снова. Каждое продвижение записывается на вкладке Activity приложения вместе с тем, что изменилось, а блок Promote окружения показывает, когда в него в последний раз что-то продвигали.
Права доступа
Заголовок раздела «Права доступа»Для управления разрешёнными нодами, переменными, секретами, режимом обслуживания и кодами доступа нужна роль Developer в окружении (apps:env:manage). Для продвижения нужна роль Deployer в целевом окружении (apps:promote). Для режима обслуживания всего приложения нужна роль Operator в приложении. Для самой страницы окружения нужен apps:view на это окружение; пользователь, который видит окружение только через его ресурсы, возвращается на страницу приложения. См. Права доступа к приложениям.