Деплой бэкенд-функций без Kubernetes
HTTP-хендлеры, задачи по расписанию и фон через функции, маршруты, контейнеры, секреты и историю вызовов — без Kubernetes как ежедневной панели управления. Функции и маршруты вместо кластерного YAML — та же изоляция, меньше ритуала.
Обновлено: 2026-06-28
Кратко
Суть ответа
Деплой бэкенд-функций без Kubernetes. Inquir держит поверхность деплоя на уровне функций и маршрутов при реальных контейнерах, секретах и истории — не «без изоляции» и не Kubernetes-манифест на каждый новый хендлер.
Когда подходит и когда нет
- Нужны HTTP, расписание и фон без ежедневного kubectl ради мелочей.
- Хотите выработать привычки небольших хендлеров заранее, ещё до перехода на полноценный оркестратор.
На что обратить внимание
- Кто-то должен владеть etcd, сетью подов и сертификатами входа до первой фичи для клиента.
- GitOps и Helm сильны, но тяжелы для чтения, когда нужно просто «запускать эту функцию каждую ночь».
Ситуация: нагрузка и где обычно ломается
Почему команды ищут функции без Kubernetes
Kubernetes — уважаемый ответ для серьёзной инфраструктуры, но большинству продуктов в первую очередь нужны HTTP-входы, запуск по расписанию и место для фоновой работы. Поэтому команды и ищут способ развернуть функции без Kubernetes, пока кластер не стал действительно необходим.
Прыжок сразу в кластер тормозит раннюю команду, а полный отказ от структуры означает, что через полгода shell-скрипты придётся переписывать в самодельные микросервисы.
Компромиссы
Почему «сначала Kubernetes» тяжело для простых бэкендов
Кто-то должен владеть etcd, сетью подов и сертификатами входа до первой фичи для клиента.
GitOps и Helm сильны, но тяжелы для чтения, когда нужно просто «запускать эту функцию каждую ночь».
Как Inquir помогает в этом сценарии
Serverless как разумная середина
Inquir держит поверхность деплоя на уровне функций и маршрутов при реальных контейнерах, секретах и истории — не «без изоляции» и не Kubernetes-манифест на каждый новый хендлер.
Если позже понадобится более мощный оркестратор, привычки небольших хендлеров и явных триггеров переносятся чище, чем монолит, нарезанный в спешке.
Что вы получаете на платформе
Что вы сохраняете без Kubernetes
Деплой функций из браузера
Правьте, сохраняйте и публикуйте хендлеры без локальной сборки Docker на каждое изменение.
API-шлюз для бэкенд-функций
Централизуйте аутентификацию и правила путей для входящего HTTP на шлюзе, а не в каждом сервисе заново.
Задачи и пайплайны для фона
Моделируйте асинхронную работу явно — задачами и шагами пайплайна, а не форками процессов.
Что сделать дальше, по шагам
Как развернуть функции без Kubernetes
Деплойте без Kubernetes в роли ежедневной панели управления: маршрутов шлюза, функций и триггеров пайплайнов достаточно.
Код
Начните с шаблонов типичных HTTP-хендлеров и фоновых воркеров и адаптируйте код под свою логику.
Настройка
Подключите маршруты шлюза или триггеры пайплайнов и привяжите секреты к функциям в продукте, а не в git.
Наблюдение
Используйте историю вызовов как обратную связь по надёжности: каждый вызов записан с логами и таймингом.
Пример кода
Фокус остаётся на хендлере
Единица деплоя — код и метаданные, а не отдельный Helm chart или Kubernetes-манифест на каждый эндпоинт. Простые маршруты используют поле path; маршруты в стиле AWS — rawPath.
export async function handler(event) { const path = event.path ?? event.rawPath ?? ''; return { statusCode: 200, body: JSON.stringify({ path }), }; }
Когда подходит и когда нет
Когда этот подход уместен
Когда это уместно
- Нужны HTTP, расписание и фон без ежедневного kubectl ради мелочей.
- Хотите выработать привычки небольших хендлеров заранее, ещё до перехода на полноценный оркестратор.
Когда лучше выбрать другое
- Уже вложились в Kubernetes как единственный стандарт организации.
Вопросы и ответы
Вопросы и ответы
Под капотом всё равно Kubernetes?
Вы работаете с интерфейсом и API Inquir; воркеры исполняют ваш код в изолированных Docker-контейнерах. Публиковать функцию не значит вести Kubernetes-манифесты или чарты Helm вручную.
Можно ли по-прежнему опираться на контейнеры?
Да: контейнер как единица изоляции, а рабочий процесс остаётся вокруг функций.
Как тестировать локально?
См. документацию по локальному вызову; старайтесь совпадать с переменными окружения, как в проде.