Достъпен е новият безплатен PaaS платформен продукт Cozystack 1.4, построен на Kubernetes. Проектът е насочен към предоставянето на готова платформа за хостинг доставчици и рамка за изграждане на частни и публични облаци. Платформата се инсталира директно на сървъри и обхваща всички аспекти на подготовката на инфраструктурата за предоставяне на управляеми услуги. Cozystack позволява стартиране и предоставяне на Kubernetes клъстери, бази данни и виртуални машини. Кодът на платформата е достъпен в GitHub и се разпространява под лицензия Apache-2.0.
Платформата включва безплатна реализация на мрежова инфраструктура (fabric) на базата на Kube-OVN, и използва Cilium за организиране на сервизна мрежа, MetalLB за анонсиране на услуги навън. Съхранението е реализирано на линстор, като се предлага използването на 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 в тенантни клъстери. Персонализираните работни натоварвания могат да искат ресурси 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, хост-окружение, Application, ApplicationDefinition и ресурси Tenant, а също така генерира summary.txt с кратко резюме на текущите проблеми. Добавени са Grafana табло и правила за събиране на данни за мониторинг на GPU.
- Отстранени са грешки в MongoDB, Kafka, стартиране на Kubernetes за tenancy, 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
