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

Доступен выпуск свободной PaaS-платформы Cozystack 0.33, построенной на базе 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.31, 0.32 и 0.33. Среди изменений в данных выпусках:

  • Унифицировано управление выделением ресурсов CPU и памяти. Добавлены единые переменные конфигурации cpu-allocation-ratio и memory-allocation-ratio для ограничения ресурсов CPU и потребления памяти в виртуальных машинах под управлением KubeVirt. Переменные применяются ко всем управляемым приложениям и квотам ресурсов tenant-ов. Предустановки также учитывают коэффициенты выделения ресурсов и ведут себя так же, как явные определения ресурсов. При обновлении с более ранних версий Cozystack конфигурация ресурсов в управляемых приложениях автоматически конвертируется в новый формат.
  • Добавлена функция резервного копирования PVC в tenant-ных Kubernetes-кластерах, позволяющая администраторам как всей платформы, так и отдельных tenant-ов, создавать резервные копии и восстанавливать данные запущенных в кластерах сервисов. Для резервного копирования задействован проект Velero, а сама система требует внешнего S3-совместимого хранилища.
  • Реализована поддержка использования общих NFS-хранилищ с новым опциональным системным модулем.
  • Добавлена возможность настройки доступных CPU-сокетов для виртуальных машин через параметр resources.cpu.sockets, что позволяет назначать виртуальным машинам конкретные сокеты.
  • Добавлена поддержка использования предзагруженных golden-образов для виртуальных машин, ускоряющая подготовку за счёт ссылок на существующие образы вместо загрузки по HTTP.
  • Реализована опция exposeMethod для Ingress-NGINX в tenant-ных кластерах, которая позволяет выбирать Proxied и LoadBalancer.
  • Улучшенная поддержка Java-приложений: параметры “heap” теперь рассчитываются на основе запросов и лимитов памяти.
  • Заменён стандартный менеджер пакетов — вместо Helm теперь используется новая утилита cozypkg (обёртка вокруг Helm и Flux для локальной разработки).
  • Добавлен синхронизатор HelmRelease для системных компонентов, обеспечивающий автоматический контроль ключевых изменений конфигурации для своевременного обновления системных приложений.
  • Добавлена поддержка registry mirror в tenant-ных Kubernetes-кластерах, настраивающего containerd для tenant-ных кластеров.
  • Реализована единая маркировка дочерних объектов приложений для мониторинга через WorkloadMonitors.
  • Добавлена опция cluster-domain для переопределения домена cozy.local.
  • Добавлены правила RBAC для проброса портов в KubeVirt (SSH через virtctl).
  • Включён сбор событий и аудит-логов.
  • Реализовано резервное копирование/восстановление PostgreSQL.
  • Добавлен новый инструмент cozyreport и обеспечен сбор отчетов в CI. Теперь вся диагностическая информация сохраняется в виде сборочных артефактов.
  • Обновлены компоненты: cozykpg v1.1.0, flux-operator 0.23.0, Flux 2.6.x, Talos Linux v1.10.3, Cilium 1.17.4, MetalLB 0.15.2, Kube-OVN 1.13.13, cozy-proxy 0.2.0, Kafka Operator 0.45.1-rc1.
  • Предоставлена возможность установки Talos в Air Gap-окружениях.
  • Добавлена поддержка GPU для tenant-ных Kubernetes-кластеров. Пользователи платформы могут запускать GPU-ворклоады как в виртуальных машинах, так и в Kubernetes-кластерах.
  • Обеспечена бета-поддержка архитектуры ARM (кросс-архитектурная сборка). Система сборки переработана для поддержки мультиархитектурных бинарных файлов и контейнерных образов.
  • Расширен VerticalPodAutoscaler (VPA), который включён для большего количества компонентов Cozystack и позволяет проводить автоматическую настройку ресурсов. В частности, VPA был добавлен для control plane tenant-ных кластеров, панели управления Cozystack и etcd-operator. Все компоненты Cozystack с включенным VPA могут автоматически корректировать свои запросы CPU и памяти на основе их использования, что повышает стабильность.
  • Добавлена поддержка Gateway API в Cilium, позволяющая использовать расширенные функции маршрутизации L4/L7 через Kubernetes Gateway API.
  • Предоставлена возможность добавления собственных параметров в конфигурации Cilium для tenent-ных кластеров.
  • В контроллере Tenant HelmRelease Reconcile обеспечено распространение изменений конфигурации на рабочие нагрузки tenant-ов (гарантирует, что любой HelmRelease, определённый в tenant-е, синхронизирован с обновлениями платформы).
  • Добавлена возможность настройки коэффициента выделения CPU в KubeVirt (то, как виртуальные CPU соотносятся с физическими) через значение cpu-allocation-ratio в configmap. Администраторы могут настраивать overcommit CPU для виртуальных машин, соблюдая необходимый баланс между производительностью и плотностью.
  • Реализован экспорт виртуальных машин KubeVirt. Функция работает через VirtualMachineExport в KubeVirt и позволяет пользователям создавать снапшоты или резервные копии образов виртуальных машин.
  • Обеспечена поддержка различных классов хранилищ (storage classes) для виртуальных машин. Приложение virtual-machine позволяет выбирать любой StorageClass для системного диска виртуальной машины вместо использования жёстко заданного PVC (cм. значения systemDisk.storage и systemDisk.storageClass в конфигурации приложения).
Release. Ссылка here.