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

docker-compose у Kubernetes маніфести

Перетворіть сервіси docker-compose у маніфести Kubernetes Deployment та Service.

Введення
Вихід

docker-compose у Kubernetes маніфести

Вставте файл docker-compose.yml, і цей інструмент перетворить кожен сервіс у готові до використання маніфести Kubernetes: Deployment і, якщо сервіс відкриває порт, відповідний Service. Він створений для розробників, які переносять стек на основі Compose в кластер, розробляють Helm-чарт вручну або просто хочуть отримати перший варіант YAML замість написання кожного поля з нуля.

Встановіть простір імен і загальні мітки для застосування до кожного генерованого ресурсу, виберіть кількість реплік для кожного Deployment. Порти перетворюються у сервіс типу ClusterIP або NodePort залежно від вашого вибору, змінні середовища стають ConfigMap або Secret, а томи стають PersistentVolumeClaim або emptyDir — залежно від того, як ви плануєте запускати навантаження. Увімкніть readiness та liveness перевірки для додавання базової TCP перевірки проти першого порту контейнера, і увімкніть генерацію Ingress для відкриття сервісів з портами поза кластером.

Обмеження ресурсів Compose під deploy.resources перекладаються у власний формат Kubernetes — 0.5 cpus стає 500m, 512M стає 512Mi — і кожен генерований шаблон пода отримує restartPolicy: Always, єдине значення, яке приймає Deployment. Сервіс без образу, портів або томів все одно створює мінімальний Deployment. Файл без розділу top-level services: або YAML, який не вдається розібрати, повертає зрозумілу помилку з указанням рядка замість порожнього результату.

Все працює у вашому браузері: файл docker-compose ніколи не покидає ваш пристрій, тому безпечно вставляти навіть робочу конфігурацію. Скопіюйте генеровані маніфести, завантажте їх як .txt файл або відправте результат назад в введення для подальшого уточнення простору імен, міток або кількості реплік.

FAQ

Чи підтримує він розширений синтаксис Compose для портів і томів?
Так. Поряд з короткими рядками на кшталт "8080:80" або "data:/var/lib/data", порти і томи, написані як відображення (target, published, source), також читаються.
Чому кожен под отримує restartPolicy: Always?
Шаблон пода Deployment приймає тільки це значення — контролер, а не середовище виконання контейнера, вирішує, як реагувати на невдалий контейнер, тому параметр перезапуску Compose не може передатися один до одного.
Чи може він генерувати Ingress для сервісу без порту?
Ні. Маніфести Service та Ingress створюються тільки для сервісів, які відкривають хоча б один порт у Compose, оскільки нема куди маршрутизувати трафік.
Що відбувається з обмеженнями пам'яті та CPU?
Блок deploy.resources Compose перетворюється на кількості ресурсів Kubernetes: десяткові значення CPU стають мілікорами (0.5 → 500m), а одиниці пам'яті на кшталт M або G стають Mi або Gi.
Чи завантажується мій файл docker-compose куди-небудь?
Ні. Перетворення виконується повністю у вашому браузері — ваш файл docker-compose та його вміст ніколи не покидають ваш пристрій.