Налична е версия 1.4 на платформата Cozystack, изградена на основата на Kubernetes. Проектът е насочен към предоставяне на готова платформа за хостинг доставчици и рамка за изграждане на частни и публични облаци. Платформата се инсталира директно на сървърите и обхваща всички аспекти на подготовката на инфраструктурата за предоставяне на управлявани услуги. Cozystack позволява стартиране и предоставяне на Kubernetes клъстери, бази данни и виртуални машини. Кодът на платформата е достъпен в GitHub и се разпространява под лицензия Apache-2.0.
Платформата включва свободна реализация на мрежова инфраструктура (система) на база 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 за виртуални машини, персонализиране на брандинга чрез ConfigMap, четене на ApplicationDefinition за каталога на приложенията и пренасочване на стари адреси /openapi-ui/*.
- За worker-узлите на тенантните клъстери е реализирано постоянно хранилище. Виртуалните машини на worker-узлите вече използват PVC-дискове чрез KubeVirt dataVolumeTemplates вместо emptyDisk. По този начин kubelet сертификати, kubeconfig и състоянието на containerd се запазват след рестартиране на виртуалната машина. Полето ephemeralStorage е променено на diskSize и е добавена настройка storageClass на ниво NodeGroup. При миграция, старите стойности автоматично се преобразуват.
- Добавена е нова схема на пресети за ресурси в съответствие с типовете виртуални машини на облачни доставчици. Пресетите се описват във формата ., където сериите 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 в тенантни клъстери. Потребителските работни натоварвания могат да искат ресурси от 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: интервал, интервал за повторно опитване, таймаут за инсталиране, таймаут за обновление и максимална история. Стратегията за повторни опити е преобразувана на RetryOnFailure, а за отделни приложения може да се задава таймаут чрез анотацията 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, средата на хоста, Application, ApplicationDefinition и Tenant-ресурсите, а също така генерира summary.txt с кратко резюме на текущите проблеми. Добавени са Grafana табла и правила за събиране на данни за мониторинг на GPU.
- Поправени са грешки в MongoDB, Kafka, бултва на тенантни Kubernetes, 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.
Източник: opennet.ru
