Перейти до основного вмісту

Мережа

Кожен сервіс у Playground може бути налаштований для мережевого доступу. Платформа автоматично забезпечує маршрутизацію субдоменів, TLS-термінацію та контроль доступу через Traefik.

Маршрутизація субдоменів

Кожен відкритий сервіс отримує власний HTTPS-субдомен під кореневим доменом Playroom:

https://{subdomain}.{root_domain}

Наприклад, якщо кореневий домен вашого Playroom — dev.example.com:

СервісСубдоменURL
webwebhttps://web.dev.example.com
apiapihttps://api.dev.example.com
adminadmin-panelhttps://admin-panel.dev.example.com

Маршрутизація головного домену

Використовуйте спеціальний субдомен @ для маршрутизації кореневого домену на сервіс:

СубдоменURL
@https://dev.example.com

Субдомени за замовчуванням та перевизначення

  • Субдомен за замовчуванням визначається на Playspec (зазвичай імʼя сервісу)
  • Перевизначення субдоменів можна встановити для кожного Playground, що критично при запуску кількох Playground на одному Playroom
Конфлікти субдоменів

Два Playground на одному Playroom не можуть використовувати один субдомен. Завжди перевизначуйте субдомени при запуску кількох Playground з одного Playspec на одному Playroom.

Видимість: Internal vs External

Кожен відкритий сервіс має налаштування видимості, що контролює доступ:

ВидимістьКонтроль доступуВикористовуйте для
ExternalПублічно доступний — автентифікація не потрібнаКористувацькі додатки, API, статичні сайти
InternalЗахищений HTTP Basic AuthАдмін-панелі, бази даних, внутрішні інструменти

HTTP Basic Auth (внутрішні сервіси)

Внутрішні сервіси захищені HTTP Basic Auth:

Облікові даніЗначення
Імʼя користувачаplayground
ПарольАвтоматично згенерований для кожного Playground (видимий у детальному перегляді Playground)

Автентифікація забезпечується middleware playroom-auth у Traefik. Облікові дані потрібні тільки при доступі до URL внутрішнього сервісу через браузер — комунікація між сервісами всередині Docker-мережі не зачіпається.

Внутрішня комунікація (Docker Networking)

Сервіси всередині одного Playground спілкуються через стандартну мережу Docker Compose. Використовуйте імʼя сервісу як hostname:

services:
web:
environment:
DATABASE_URL: postgres://user:pass@db:5432/myapp
REDIS_URL: redis://redis:6379

db:
image: postgres:16

redis:
image: redis:7

У цьому прикладі сервіс web підключається до db та redis за їхніми іменами у внутрішній мережі Docker. Спеціальна конфігурація не потрібна — платформа створює ізольовану мережу для кожного Playground.

Мережева ізоляція

Кожен Playground має свою внутрішню Docker-мережу. Сервіси різних Playground не можуть спілкуватися між собою, навіть якщо вони працюють на одному Playroom. Всі Playground ділять мережу Traefik Playroom тільки для вхідної маршрутизації.

Маппінг портів

Порт, вказаний у конфігурації відкриття сервісу, визначає який порт контейнера Traefik буде маршрутизувати:

ПолеОпис
Порт відкриттяПорт всередині контейнера, що обробляє HTTP-трафік (напр., 3000, 8080)

Платформа налаштовує Traefik для перенаправлення HTTPS (443) трафіку на вказаний порт контейнера. Вам не потрібно обробляти TLS у вашому додатку — Traefik термінує TLS на вході.

Нестандартний маппінг портів

Для сервісів, яким потрібно відкрити не-HTTP порти (напр., WebSocket-сервери на іншому порті), ви можете визначити маппінг портів у Docker Compose YAML. Ці порти керуються через стандартну публікацію портів Docker Compose.