Выпуск Cozystack 0.37, открытой PaaS-платформы на базе Kubernetes

Доступен выпуск свободной PaaS-платформы Cozystack 0.37, построенной на базе Kubernetes. Проект нацелен на предоставление готовой платформы для хостинг-провайдеров и фреймворка для построения частных и публичных облаков. Платформа устанавливается напрямую на серверы и охватывает все аспекты подготовки инфраструктуры для предоставления управляемых сервисов. Cozystack позволяет запускать и предоставлять кластеры Kubernetes, базы данных и виртуальные машины. Код платформы доступен на GitHub и распространяется под лицензией Apache-2.0.

В качестве базового стека технологий используется Talos Linux и Flux CD. Образы с системой, ядром и необходимыми модулями формируются заранее, и обновляются атомарно, что позволяет обойтись без таких компонентов как dkms и пакетный менеджер, и гарантировать стабильную работу. Предоставляется простой метод установки в пустом дата-центре с помощью PXE и debian-подобного установщика talos-bootstrap. В рамках платформы можно по клику разворачивать Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics и другие сервисы.

Платформа включает свободную реализацию сетевой инфраструктуры (fabric) на базе Kube-OVN, и использует Cilium для организации сервисной сети, MetalLB для анонса сервисов наружу. Хранилище реализовано на LINSTOR, где предлагается использование ZFS в качестве базового слоя для хранилища и DRBD для репликации. Имеется преднастроенный стек мониторинга на базе VictoriaMetrics и Grafana. Для запуска виртуальных машин используется технология KubeVirt, которая позволяет запускать классические виртуальные машины прямо в контейнерах Kubernetes и уже имеет все необходимые интеграции с Cluster API для запуска управляемых Kubernetes-кластеров внутри “железного” Kubernetes-кластера.

За последние полтора месяца команда проекта выпустила новые версии 0.36 и 0.37. Среди изменений в данных выпусках:

  • С нуля переписан интерфейс пользователя. В качестве основы задействован проект openapi-ui.

  • В интерфейсе появился селектор кластера. Сейчас дашборд работает в режиме одного кластера (по одному дашборду на кластер). В будущем этот же интерфейс будет использоваться для мультикластерного режима.
  • На экране кластера теперь сразу видны все доступные пространствам имё. Список формируется через агрегирующий слой Kubernetes (tenant namespace), поэтому показаны только те пространства, к которым есть доступ.
  • Создание ресурсов теперь идёт через формы, автоматически сгенерированные из Kubernetes OpenAPI. Комментарии из YAML не нужны: поля и валидация берутся напрямую из спецификаций.
  • Спецификация новых приложений формируется из Helm-чартов с помощью cozy-values generator, а введённые поля в форме синхронно отражаются в итоговом YAML.
  • Модули управления tenent-ами переехали в секцию администрирования: здесь можно создавать субтенанты и ставить для них специфические модули/приложения (доступ зависит от роли и прав пользователя).
  • Запланировано добавление вкладки с VNC-консолью для виртуальных машин. Для некоторых типов ресурсов будут добавлены специальные вкладки/поля (например, для KubeVirt-ВМ).
  • Стабилизирован механизм управления ресурсами для tenent-ов Cozystack. Администраторы платформы теперь могут задавать явные лимиты CPU, памяти и хранилища для каждого tenant-namespace в спецификации tenent-а. Таким образом ни один из tenent-ов не может «съесть» всё, оставив другие tenent-ы без ресурсов.
  • Добавлен компонент Kube-OVN Plunger для непрерывного отслеживания состояния центрального управляющего кластера сети Kube-OVN. Внешний агент собирает статус кластера OVN и информацию о консенсусе, показывает метрики Prometheus и поток событий через SSE (Server-Sent Events).
  • Дополнение CoreDNS теперь разворачивается через Helm-чарт и настраивается в спецификации кластера (автомасштабирование, число реплик, сервисный IP и др.). CoreDNS можно конфигурировать как в дашборде, так и через API Cozystack.
  • S3-хранилище на базе SeaweedFS стало более гибким на уровне компонентов. Helm-чарт позволяет независимо настраивать каждый компонент и его ресурсы: master-узлы, volume-серверы (с поддержкой множества зон), базу данных и S3-шлюз. Администраторы могут задавать для каждого компонента количество реплик, лимиты CPU/памяти и объём хранилища.
  • Интегрирована ФС SeaweedFS 3.97 с поддержкой серверного шифрования бакетов S3 (SSE-C, SSE-KMS, SSE-S3). При обновлении Cozystack будет обновлена версия SeaweedFS, а спецификация сервисов — автоматически преобразована к новому формату.
  • NGINX-контроллер теперь настраивается на уровне каждой реплики: можно задавать запросы/лимиты CPU и памяти напрямую или выбирать один из готовых пресетов.
  • Если у виртуальной машины назначен внешний IP, он всегда используется для egress-трафика, независимо от метода назначения этого IP.
Release. Ссылка here.