CONTAINER APPS · РУКОВОДСТВО ПО ПАНЕЛИ
Миграция многосервисного Docker-проекта, от начала до конца, через панель
Это версия для мыши, соответствующая руководству по командной строке cdnctl. Здесь берётся тот же многосервисный проект в стиле docker-compose (веб/API-сервисы, фоновые воркеры, база данных, кеш и шина сообщений) и запускается на управляемой контейнерной платформе CDN.com.tr — целиком из панели управления. У каждого шага ниже есть эквивалент в командной строке; используйте тот, который вам удобнее.
Уже есть docker-compose.yml? Вкладка контейнеров может импортировать его за один шаг — откройте Import from Docker Compose, просмотрите план предпросмотра и подтвердите. См. руководство по импорту Docker Compose или справочник cdnctl compose. Ручные шаги ниже остаются актуальными для всего, что не покрывает импорт compose.
1 · Концепции
- Аккаунт = проект. Один аккаунт может содержать множество container app; сколько приложений вы можете запускать, определяет ваш пакет.
- App = один образ контейнера (сервис). У каждого app есть порт, health check, ресурсы, переменные окружения и секреты; он может масштабироваться до N реплик.
- Управляемые аддоны — это stateful-бэкенды —
postgres(PostgreSQL/TimescaleDB),mysql,redisиnats(JetStream) — которые вы подключаете к app. Данные подключения (включая сгенерированный пароль) внедряются напрямую в это app; пароль никогда не отображается снова. - Service discovery. Приложения в вашем аккаунте разделяют приватную сеть и обращаются друг к другу по имени app, точно как сервис docker-compose —
http://<имя-app>:<порт>. Назовите apphot-data-storeна порту8082, иhttp://hot-data-store:8082разрешится автоматически. - Публичный доступ. Любое app можно опубликовать на субдомене CDN.com.tr или на вашем собственном домене. Каждый опубликованный сервис получает собственное имя хоста; воркеры и базы данных остаются приватными.
2 · Откройте вкладку Container Apps
Войдите в систему, откройте CDN Accounts, нажмите на значок настроек у аккаунта, которым хотите управлять, затем выберите вкладку Platforms. Вверху вы увидите типы платформ — выберите Container Apps (и в первый раз нажмите Activate).
Экран Container Apps открывается с обзором (количество app, аддоны, исходящий трафик edge), кнопками Create App и Usage Details, за которыми следует список Your apps. Каждое app — это строка, показывающая его статус, с действием Create Test Copy (preprod) и ссылкой Manage →. Нажмите Manage, чтобы открыть страницу деталей этого app, где вы настраиваете всё для сервиса.
3 · Создайте и свяжите сервис
Нажмите Create App и заполните форму — одно app на сервис:
- App name — это же и внутрисетевое имя хоста, которое используют другие app (держите его равным имени сервиса в вашем compose).
- Image + Tag — соберите каждый сервис под
linux/amd64и запушьте его в registry, который платформа сможет забрать. - Port, Replicas, Plan и Healthcheck path — оставьте порт пустым для фонового воркера, который ничего не слушает.
- Registry credential — выберите сохранённые учётные данные для приватных образов или добавьте их прямо в строке Private registry credential (токен хранится зашифрованным и больше никогда не показывается).
- Env values (по одному
KEY=valueна строку) и Secrets — секреты хранятся как зашифрованные секреты Kubernetes и не показываются после сохранения.
Отметьте Managed Redis, Managed DB или Object Storage в форме, чтобы подключить их при создании app, либо добавьте их позже со страницы деталей app (шаг 4).
4 · Добавьте управляемые базы данных, кеш и шину сообщений
Откройте app (Manage →), затем его вкладку Add-ons, и используйте действия, чтобы включить Redis, базу данных (PostgreSQL/MySQL) или NATS. Аддон предоставляется для этого app, и его подключение внедряется автоматически:
# auto-injected into the app the addon is enabled on:
DATABASE_HOST, DATABASE_PORT, DATABASE_NAME, DATABASE_USER # env
DATABASE_PASSWORD, DATABASE_URL # secrets (full postgres:// URL)
REDIS_URL # redis://<redis-host>:6379/0
NATS_URL # nats://<nats-host>:4222
Общий доступ к бэкенду между приложениями. Бэкенды без пароля — NATS и Redis в этой конфигурации — доступны и из ваших других app: задайте NATS_URL/REDIS_URL как env на каждом потребителе, используя хост аддона. SQL-база данных, защищённая паролем, внедряется только в то app, которое ею владеет (пароль никогда не показывается), поэтому не пытайтесь повторно использовать её из второго app — пусть одно app владеет базой данных, а остальные обращаются к нему, либо запустите собственный образ базы данных с паролем, который вы сами задаёте.
5 · Задеплойте, проверьте статус и логи
Сохранение app ставит деплой в очередь. Индикатор статуса переходит в running — как в списке Your apps, так и на странице деталей app — когда контейнер здоров. На странице деталей используйте кнопки действий для просмотра статуса / рантайма, логов и активности, а меню Operations (верхняя панель) — чтобы отследить каждый деплой до завершения. Если ваши app выполняют миграции при запуске, сначала задеплойте сервис, инициализирующий схему базы данных.
Счётчик running / replicas в обзоре и заголовок Your apps отражают состояние в реальном времени — app переходит там в running, как только его под готов.
6 · Опубликуйте сервисы вовне
На странице деталей app нажмите Expose on cdn.com.tr, чтобы создать собственный неизменяемый субдомен app <uid>.cdn.com.tr (HTTPS настраивается за вас). Маршрут app затем покажет боевой адрес. Публикуйте столько сервисов, сколько нужно — один аккаунт, много публичных имён хостов. Чтобы использовать собственный домен, добавьте его через DNS Management и направьте на app.
Публикуйте только те сервисы, которые должны быть публичными. Фоновые воркеры и базы данных остаются приватными. Добавляйте аутентификацию к любому публикуемому HTTP-сервису.
7 · Наблюдаемость (единая панель)
Запускайте свой стек мониторинга как обычные app: сборщик метрик, который опрашивает ваши сервисы (собранный с встроенной конфигурацией опроса, остающийся внутренним) и дашборд, который вы публикуете вовне. Создайте оба как любое другое app (шаг 3), свяжите дашборд со сборщиком по имени app (http://<имя-сборщика>:<порт>), затем опубликуйте (Expose) только дашборд. Он опрашивает сборщик по приватной сети и доступен на своём субдомене cdn.com.tr.
8 · Редактируйте, масштабируйте, перезапускайте и удаляйте
Откройте app (Manage →); его страница деталей содержит следующие действия:
- Edit () — измените образ/тег, порт, реплики, health check, env и секреты, затем передеплойте.
- Restart и scale — установите реплики в
0, чтобы остановить сервис, и обратно в1+, чтобы запустить его. - Delete () — удаляет app и его публичный субдомен. Отключение аддона данных по умолчанию сохраняет его том; удаление данных требует явного подтверждения.
Предпочитаете терминал? Каждое действие здесь соответствует один в один команде cdnctl.