Cozystack, ilmainen Kubernetesiin rakennettu PaaS-alusta, on nyt saatavilla versiossa 1.4. Projektin tavoitteena on tarjota käyttövalmis alusta hosting-palveluntarjoajille ja viitekehys yksityisten ja julkisten pilvipalveluiden rakentamiseen. Alusta asentuu suoraan palvelimille ja kattaa kaikki infrastruktuurin valmistelun osa-alueet hallittujen palveluiden toimittamista varten. Cozystackin avulla voit käynnistää ja tarjota Kubernetes-klustereita, tietokantoja ja virtuaalikoneita. Alustan koodi on saatavilla GitHubissa ja se jaetaan Apache 2.0 -lisenssillä.
Alusta sisältää avoimen lähdekoodin verkkoinfrastruktuurin (kangas) Kube-OVN:ään perustuen ja käyttää Ciliumia palveluverkon organisointiin ja MetalLB:tä palvelumainontaan. Tallennus on toteutettu LINSTORilla, joka tarjoaa ZFS:n pohjana olevana tallennuskerroksena ja DRBD:n replikointiin. Mukana on esikonfiguroitu VictoriaMetrics- ja Grafana-pohjainen valvontapino. KubeVirt-teknologiaa käytetään virtuaalikoneiden käynnistämiseen, mikä mahdollistaa klassisten virtuaalikoneiden käynnistämisen suoraan Kubernetes-konteissa. Se sisältää jo kaikki tarvittavat integraatiot Cluster API:n kanssa hallittujen Kubernetes-klusterien käynnistämiseksi bare metal Kubernetes-klusterissa. Alustan sisällä Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics ja muut palvelut voidaan ottaa käyttöön yhdellä napsautuksella.
Cozystack 1.4.0:n tärkeimmät ominaisuudet:
- Представлен новый интерфейс управления, основанный на проекте 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.
Lähde: opennet.ru
