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 →