Loading...

CONTAINER APPS · РУКОВОДСТВО ПО ПАНЕЛИ

Миграция многосервисного Docker-проекта, от начала до конца, через панель

Это версия для мыши, соответствующая руководству по командной строке cdnctl. Здесь берётся тот же многосервисный проект в стиле docker-compose (веб/API-сервисы, фоновые воркеры, база данных, кеш и шина сообщений) и запускается на управляемой контейнерной платформе CDN.com.tr — целиком из панели управления. У каждого шага ниже есть эквивалент в командной строке; используйте тот, который вам удобнее.

Быстрый путь: импортируйте docker-compose.yml напрямую

Уже есть 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>:<порт>. Назовите app hot-data-store на порту 8082, и http://hot-data-store:8082 разрешится автоматически.
  • Публичный доступ. Любое app можно опубликовать на субдомене CDN.com.tr или на вашем собственном домене. Каждый опубликованный сервис получает собственное имя хоста; воркеры и базы данных остаются приватными.

2 · Откройте вкладку Container Apps

Войдите в систему, откройте CDN Accounts, нажмите на значок настроек у аккаунта, которым хотите управлять, затем выберите вкладку Platforms. Вверху вы увидите типы платформ — выберите Container Apps (и в первый раз нажмите Activate).

Вкладки типов платформы с выбранным Container Apps
Вкладки платформы. Зелёная точка отмечает активную платформу для этого аккаунта.

Экран Container Apps открывается с обзором (количество app, аддоны, исходящий трафик edge), кнопками Create App и Usage Details, за которыми следует список Your apps. Каждое app — это строка, показывающая его статус, с действием Create Test Copy (preprod) и ссылкой Manage →. Нажмите Manage, чтобы открыть страницу деталей этого app, где вы настраиваете всё для сервиса.

Обзор Managed Container Apps и список Your apps
Сверху карточки обзора; ниже — список Your apps: по строке на каждое app с индикатором статуса, действием Create Test Copy и ссылкой Manage →. Откройте app, чтобы попасть на его маршрут, действие Expose on cdn.com.tr и разделы Add-ons / Imports / Jobs / Storage / Env.

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 и не показываются после сохранения.
Форма создания container app
Форма создания app. Переменные env видны в конфигурации app; секреты доступны только для записи. Для сервиса, владеющего аддоном, не нужно вручную вводить строку подключения — см. шаг 4.

Отметьте Managed Redis, Managed DB или Object Storage в форме, чтобы подключить их при создании app, либо добавьте их позже со страницы деталей app (шаг 4).

4 · Добавьте управляемые базы данных, кеш и шину сообщений

Откройте app (Manage →), затем его вкладку Add-ons, и используйте действия, чтобы включить Redis, базу данных (PostgreSQL/MySQL) или NATS. Аддон предоставляется для этого app, и его подключение внедряется автоматически:

Панель управляемых аддонов с действиями включения/отключения
Панель Add-ons на странице деталей app. Включение аддона передеплоивает 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.