Выпуск Cozystack 1.4, открытой PaaS-платформы на базе Kubernetes
Доступен выпуск свободной PaaS-платформы Cozystack 1.4, построенной на базе Kubernetes. Проект нацелен на предоставление готовой платформы для хостинг-провайдеров и фреймворка для построения частных и публичных облаков. Платформа устанавливается напрямую на серверы и охватывает все аспекты подготовки инфраструктуры для предоставления управляемых сервисов. Cozystack позволяет запускать и предоставлять кластеры Kubernetes, базы данных и виртуальные машины. Код платформы доступен на GitHub и распространяется под лицензией Apache-2.0.
Платформа включает свободную реализацию сетевой инфраструктуры (fabric) на базе Kube-OVN, и использует Cilium для организации сервисной сети, MetalLB для анонса сервисов наружу. Хранилище реализовано на LINSTOR, где предлагается использование ZFS в качестве базового слоя для хранилища и DRBD для репликации. Имеется преднастроенный стек мониторинга на базе VictoriaMetrics и Grafana. Для запуска виртуальных машин используется технология KubeVirt, которая позволяет запускать классические виртуальные машины прямо в контейнерах Kubernetes и уже имеет все необходимые интеграции с Cluster API для запуска управляемых Kubernetes-кластеров внутри «железного» Kubernetes-кластера. В рамках платформы можно по клику разворачивать Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics и другие сервисы.
Главные нововведения в Cozystack 1.4.0:
Представлен новый интерфейс управления, основанный на проекте cozystack-ui. Старый стек openapi-ui и BFF заменён фронтедом на React 19 и TypeScript, который работает напрямую с Kubernetes API. Кроме того, в интерфейсе появилась поддержка динамических VNC WebSocket URL для виртуальных машин, runtime-брендинга через ConfigMap, чтения ApplicationDefinition для каталога приложений и перенаправления старых адресов /openapi-ui/*.
Для worker-узлов тенантных кластеров реализовано постоянное хранилище. Виртуальные машины worker-узлов теперь используют PVC-диски через KubeVirt dataVolumeTemplates вместо emptyDisk. Благодаря этому kubelet-сертификаты, kubeconfig и состояние containerd сохраняются после перезапуска виртуальной машины. Поле ephemeralStorage переименовано в diskSize, добавлена настройка storageClass на уровне NodeGroup. В процессе миграции старые значения автоматически преобразуются.
Добавлена новая схема пресетов ресурсов по аналогии с типами виртуальны машин у облачных провайдеров. Пресеты описываются в формате ‹series›.‹size›, где серии t1, c1, s1, u1 и m1 задают разные соотношения CPU и памяти, а размеры варьируются от nano до 4xlarge. Всего доступно 40 вариантов. Старые имена пресетов сохранены как устаревающие алиасы и автоматически мигрируются без изменения фактических лимитов CPU и памяти.
Расширена система декларативного резервного копирования управляемых приложений. Контроллер backupstrategy получил стратегии для PostgreSQL, MariaDB, ClickHouse и FoundationDB. Поддерживаются BackupClass, Plan, BackupJob и RestoreJob, плановые и разовые бэкапы, восстановление на месте и восстановление в копию. Данные выгружаются в S3-совместимое объектное хранилище, а учётные данные передаются через Kubernetes Secret.
Добавлен необязательный системный пакет hami с HAMi 2.8.1 для совместного обращения к NVIDIA GPU в тенантных кластерах. Пользовательские workload’ы могут запрашивать ресурсы nvidia.com/gpu, nvidia.com/gpumem и nvidia.com/gpucores, что позволяет распределять vGPU между несколькими pod’ами. Включение выполняется через параметр hami.enabled и требует NVIDIA GPU Operator.
Появилась единая настройка publishing.proxyProtocol для включения протокола PROXY на хостах с ingress-nginx. При её активации автоматически разворачивается Ouroboros, устраняющий проблему hairpin-NAT для обращений из кластера к его публичным именам. Для тенантных кластеров предусмотрено дополнение addons.ouroboros.enabled.
В cozystack-operator добавлены настройки генерации HelmRelease: interval, retry interval, install timeout, upgrade timeout и max history. Стратегия повторных попыток переведена на RetryOnFailure, а для отдельных приложений можно задавать timeout через аннотацию release.cozystack.io/helm-install-timeout. Это устраняет ряд проблем при холодном запуске тенантных кластеров.
Для worker-узлов тенантного Kubernetes автоматически рассчитываются резервирование ресурсов kubelet для CPU и памяти. Аннотации cluster-autoscaler теперь отражают выделяемые ресурсы, а не общий объём CPU и памяти.
Обновлены базовые компоненты платформы: Talos 1.13.0, cert-manager 1.20.2, Cilium 1.19.3, NVIDIA GPU Operator 26.3.1, etcd-operator 0.4.3, KubeVirt 1.8.2, cozy-proxy 0.3.0, linstor-csi 1.10.6. Добавлены новые пакеты HAMi 2.8.1 и Ouroboros 0.7.2.
Улучшена диагностика: cozyreport теперь собирает сведения о Flux, cert-manager, host-окружении, Application, ApplicationDefinition и Tenant-ресурсах, а также формирует summary.txt с краткой сводкой текущих проблем. Добавлены Grafana-дашборды и правила сбора данных для мониторинга GPU.
- Исправлены ошибки в MongoDB, Kafka, tenant Kubernetes bootstrap, etcd, Velero, Kamaji, LINSTOR, SeaweedFS, Harbor, objectstorage-controller, API и других компонентах. В API устранена IDOR-уязвимость в обработчиках TenantNamespace Get и Watch.
При обновлении следует учитывать, что worker-узлы тенантных кластеров будут один раз последовательно заменены из-за перехода на постоянные PVC-диски. Виртуальные машины KubeVirt, запущенные до обновления платформы, потребуют холодной перезагрузки после перехода на KubeVirt 1.8.2, так как живая миграция старых virt-launcher-процессов может завершаться ошибкой из-за изменения версии QEMU. Кроме того, параметры PostgreSQL теперь типизированы и проверяются по denylist, а cert-manager 1.20 по умолчанию запускает контейнеры с UID/GID 65532.
Источник: http://www.opennet.ru/opennews/art.shtml? num=65547
© OpenNet
