Το Cozystack, μια δωρεάν πλατφόρμα PaaS που βασίζεται στο Kubernetes, είναι τώρα διαθέσιμη στην έκδοση 1.4. Το έργο στοχεύει στην παροχή μιας έτοιμης προς χρήση πλατφόρμας για παρόχους φιλοξενίας και ενός πλαισίου για τη δημιουργία ιδιωτικών και δημόσιων cloud. Η πλατφόρμα εγκαθίσταται απευθείας σε διακομιστές και καλύπτει όλες τις πτυχές της προετοιμασίας υποδομής για την παροχή διαχειριζόμενων υπηρεσιών. Το Cozystack σάς επιτρέπει να εκκινείτε και να παρέχετε clusters, βάσεις δεδομένων και εικονικές μηχανές Kubernetes. Ο κώδικας της πλατφόρμας είναι διαθέσιμος στο GitHub και διανέμεται με την άδεια Apache 2.0.
Η πλατφόρμα περιλαμβάνει μια υποδομή δικτύου ανοιχτού κώδικα (fabric) βασισμένη στο Kube-OVN και χρησιμοποιεί το Cilium για την οργάνωση του πλέγματος υπηρεσιών και το MetalLB για τη διαφήμιση υπηρεσιών. Η αποθήκευση υλοποιείται στο LINSTOR, το οποίο προσφέρει το ZFS ως υποκείμενο επίπεδο αποθήκευσης και το DRBD για την αναπαραγωγή. Περιλαμβάνεται μια προδιαμορφωμένη στοίβα παρακολούθησης βασισμένη στο VictoriaMetrics και το Grafana. Η τεχνολογία KubeVirt χρησιμοποιείται για την εκκίνηση εικονικών μηχανών, επιτρέποντας την εκκίνηση κλασικών εικονικών μηχανών απευθείας σε κοντέινερ Kubernetes και περιλαμβάνει ήδη όλες τις απαραίτητες ενσωματώσεις με το Cluster API για την εκκίνηση διαχειριζόμενων συμπλεγμάτων Kubernetes μέσα σε ένα bare-metal σύμπλεγμα 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.
Πηγή: opennet.ru
