Открыть сервис

Red Hat OpenShift Serverless

Red Hat OpenShift Serverless — это платформа для разработки, развёртывания и управления бессерверными (serverless) приложениями и функциями, работающая поверх кластера Red Hat OpenShift. Она основана на проекте с открытым исходным кодом Knative и предоставляет средства для автоматического масштабирования контейнерных приложений до нуля реплик в отсутствие нагрузки, а также для запуска кода в ответ на события.

История

Развитие технологии serverless-вычислений в экосистеме OpenShift началось с интеграции проекта Knative, который был анонсирован компанией Google совместно с IBM, Pivotal, Red Hat и другими в 2018 году. Red Hat, как один из ключевых участников сообщества Knative, начала работы по включению его компонентов в состав платформы OpenShift.

В 2019 году на конференции KubeCon + CloudNativeCon North America была представлена первая публичная версия оператора OpenShift Serverless. Решение было доступно как технологическая предварительная версия (Technology Preview). В 2020 году, с выходом OpenShift 4.5, функциональность стала общедоступной (General Availability). С тех пор платформа развивается в рамках каждого нового релиза OpenShift, получая обновления компонентов Knative, улучшения производительности и расширение интеграций с другими сервисами экосистемы Red Hat, такими как Red Hat AMQ Streams (на базе Apache Kafka) и Red Hat OpenShift Service Mesh.

Архитектура и компоненты

Red Hat OpenShift Serverless построена на модульной архитектуре, центральным элементом которой является оператор (Operator), управляющий жизненным циклом компонентов Knative в кластере OpenShift.

Knative Serving

Knative Serving отвечает за развёртывание и автоматическое масштабирование контейнерных приложений. Ключевые понятия:

  • Serviceабстракция, управляющая всем жизненным циклом приложения. Service автоматически создаёт Configuration, Revision и Route.
  • Configuration — описание желаемого состояния приложения (образ контейнера, переменные окружения, ресурсы). При каждом изменении Configuration создаётся новое Revision.
  • Revision — неизменяемый снимок состояния приложения, соответствующий определённой версии кода и конфигурации. Revision может быть активным или отключённым.
  • Route — определяет, как трафик распределяется между различными Revision (например, 90% на стабильную версию и 10% на канареечную).

Масштабирование до нуля (Scale-to-Zero) реализовано через механизм Knative, который отслеживает входящие запросы. При отсутствии трафика в течение заданного времени (по умолчанию 30 секунд) количество реплик приложения сокращается до нуля. При поступлении нового запроса активируется «холодный старт»: запускается новый под, что может занять от нескольких миллисекунд до нескольких секунд в зависимости от размера образа и сложности приложения.

Knative Eventing

Knative Eventing обеспечивает событийно-ориентированную архитектуру. Он позволяет создавать источники событий (Event Sources), обрабатывать их с помощью брокеров (Brokers) и триггеров (Triggers), а также доставлять события в бессерверные приложения (Sinks).

Основные компоненты:

  • Event Source — сущность, генерирующая события. Примеры: PingSource (периодическая отправка событий по расписанию), ApiServerSource (отслеживание изменений в ресурсах Kubernetes), KafkaSource (чтение сообщений из Apache Kafka).
  • Brokerпромежуточный узел, принимающий события от источников и маршрутизирующий их к триггерам. В OpenShift Serverless по умолчанию используется InMemoryChannel, но для production-сред рекомендуется KafkaChannel, обеспечивающий персистентность и гарантии доставки.
  • Trigger — правило, связывающее Broker с Sink-ом. Trigger может фильтровать события по атрибутам (например, по типу события).
  • Sink — конечная точка, куда доставляются события. В качестве Sink-а может выступать Knative Service, Kubernetes Service, URI или другой компонент.

Оператор OpenShift Serverless

Оператор (Operator) — это основной способ установки и управления OpenShift Serverless. Он устанавливается из маркетплейса OpenShift OperatorHub. Оператор автоматизирует развёртывание компонентов Knative (Serving, Eventing), настройку сетевых политик, интеграцию с Service Mesh (если включена) и обновление версий.

Классификация и виды

Red Hat OpenShift Serverless не имеет формальной классификации, но можно выделить несколько типов рабочих нагрузок, которые на ней развёртываются:

  • Бессерверные приложения (Serverless Apps) — полноценные веб-приложения или микросервисы, написанные на любом языке (Go, Java, Python, Node.js и т.д.), упакованные в контейнер. Они автоматически масштабируются до нуля в отсутствие запросов.
  • Функции (Functions) — более лёгкая модель, где разработчик пишет только бизнес-логику в виде функции, а платформа автоматически создаёт контейнер с необходимым рантаймом. Red Hat OpenShift Serverless включает поддержку функций через проект func (CLI-инструмент).
  • Событийно-управляемые конвейеры (Event-Driven Pipelines) — последовательности обработки событий, где каждый шаг реализован как отдельная функция или сервис, запускаемые по событию.

Применение

OpenShift Serverless применяется в сценариях, где важна экономия ресурсов, эластичность и реакция на события:

  • Обработка событий в реальном времени — например, обработка изменений в базе данных, загрузка файлов, сообщения из очередей.
  • Периодические задачи (Cron jobs) — использование PingSource для запуска функции по расписанию.
  • API-шлюзы и веб-хуки — развёртывание лёгких API-сервисов, которые простаивают большую часть времени.
  • CI/CD-пайплайны — запуск тестов или сборок в ответ на события в репозитории кода.
  • Интеграция с Apache Kafka — построение потоковых приложений, где функция обрабатывает каждое сообщение из топика.

Преимущества и ограничения

Преимущества

  • Экономия ресурсов — приложения не потребляют память и CPU, когда не используются, так как масштабируются до нуля.
  • Автоматическое масштабирование — платформа сама увеличивает количество реплик при росте нагрузки, основываясь на количестве параллельных запросов.
  • Интеграция с экосистемой OpenShift — единая консоль управления, единая система аутентификации и авторизации (RBAC), встроенные мониторинг (Prometheus/Grafana) и логирование (Elasticsearch/Fluentd/Kibana).
  • Поддержка Service Mesh — возможность использовать Istio для управления трафиком, безопасности и наблюдаемости.
  • Открытый исходный код — базируется на Knative, что гарантирует переносимость между разными Kubernetes-платформами.

Ограничения

  • Холодный старт — при первом запросе после периода простоя требуется время на запуск пода (от 0.5 до 5 секунд и более). Для приложений, критичных к задержкам, может потребоваться настройка минимального количества реплик (minScale).
  • Сложность отладки — из-за эфемерной природы подов и отсутствия постоянного логирования на уровне контейнера (логи доступны только во время жизни пода) отладка распределённых событийных систем может быть затруднена.
  • Ограничения на длительность выполнения — по умолчанию время ожидания ответа от приложения составляет 300 секунд. Для длительных задач (например, обработка больших файлов) требуется настройка тайм-аутов.
  • Зависимость от кластера — для работы требуется функционирующий кластер OpenShift, что может быть избыточно для простых сценариев.

Интересные факты

  • OpenShift Serverless является частью стратегии Red Hat по предоставлению гибридных облачных решений. Платформа может работать как в локальном дата-центре (on-premises), так и в публичных облаках (AWS, Azure, GCP) через OpenShift Dedicated или Azure Red Hat OpenShift.
  • Проект Knative, лежащий в основе, был принят в инкубатор Cloud Native Computing Foundation (CNCF) в 2019 году, а в 2021 году стал выпускным проектом (graduated).
  • Red Hat активно участвует в развитии Knative: инженеры компании входят в технический комитет (TOC) и комитет по управлению (Steering Committee) проекта.

Источники

  • Документация Red Hat OpenShift Serverless (официальный сайт Red Hat)
  • Knative Documentation (knative.dev)
  • OpenShift Blog: «Introducing OpenShift Serverless» (2020)
  • Cloud Native Computing Foundation (CNCF) — Knative Graduation Announcement (2021)
  • Red Hat Knowledgebase — статьи по установке и настройке OpenShift Serverless

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →