Главное в релизе Cozystack 1.3 — мы добавили планирование нагрузок с учетом расположения данных через LINSTOR scheduler extender, управляемый веб-интерфейс для LINSTOR с интеграцией с Keycloak, каталог готовых образов виртуальных машин и заметно расширили возможности резервного копирования и восстановления VMInstance. Отдельно стоит отметить улучшения в наблюдаемости: у приложений появился новый статус WorkloadsReady, в дашборде появилась вкладка с событиями, а для S3-бакетов добавлен учет потребления для задач биллинга.
Что такое Cozystack
Cozystack — это Open Source-платформа для построения облака на bare metal. Она позволяет разворачивать managed Kubernetes, Database as a Service, Applications as a Service и виртуальные машины на базе KubeVirt. Внутри платформы можно запускать базы данных, объектные хранилища, брокеры сообщений, Kubernetes-кластеры и другие сервисы через единый API и интерфейс управления. Проект входит в CNCF Sandbox и распространяется под лицензией Apache 2.0.
Главные нововведения в Cozystack 1.3.0
Планирование с учетом расположения данных через LINSTOR extender
В cozystack-scheduler добавлен LINSTOR scheduler extender. Если нагрузка использует SchedulingClass и PVC на базе LINSTOR, планировщик теперь учитывает, на каких узлах уже находятся реплики томов, и старается запускать приложение ближе к данным.
Для операторов это означает меньше межузлового трафика и более предсказуемую производительность для чувствительных к I/O сервисов: баз данных, объектных хранилищ и виртуальных машин. При этом от тенанта не требуется отдельная настройка логики размещения: механизм начинает работать автоматически, как только для нагрузки задан SchedulingClass.
LINSTOR GUI: управляемый веб-интерфейс для хранилища
В релизе появился новый опциональный системный пакет linstor-gui, который разворачивает веб-интерфейс для управления LINSTOR. По умолчанию он поднимается как внутренний сервис, а при наличии OIDC может быть опубликован через ingress с защитой через Keycloak и oauth2-proxy.
Это упрощает администрирование стораджа для команд, которым удобнее работать через браузер, а не только через CLI. При этом доступ ограничен администраторами кластера, а существующий linstor CLI никуда не исчезает: GUI выступает как дополнительный, а не обязательный инструмент.
VM Default Images: готовые базовые образы для виртуальных машин
Появился пакет vm-default-images, который добавляет в кластер набор предзагруженных образов виртуальных машин. Речь идет о типовых базовых ОС вроде Ubuntu, Debian и CentOS Stream, которые можно использовать сразу при создании ВМ.
Для платформенных команд это снижает порог входа в работу с виртуальными машинами: больше не нужно сначала отдельно загружать и подготавливать образы вручную. Вдобавок в подсистеме дисков появилась возможность клонировать диски из существующих vm-disk в том же namespace.
Наблюдаемость: WorkloadsReady, Events и учет S3-бакетов
В Cozystack 1.3 приложения получили новый статус WorkloadsReady, который показывает, в каком состоянии находятся связанные workload-ресурсы. Это делает поведение приложений заметно прозрачнее: оператору проще понять, действительно ли сервис целиком готов к работе, а не просто создан в API.
В дашборде также появилась вкладка Events, где можно смотреть Kubernetes-события по приложению в пределах namespace. Это полезно для первичной диагностики без необходимости сразу уходить в kubectl describe и ручной разбор событий на уровне кластера.
Отдельно была расширена интеграция с биллингом и учетом ресурсов. WorkloadMonitor теперь умеет отслеживать COSI BucketClaim, а bucket-controller собирает метрики размера бакетов SeaweedFS через VictoriaMetrics. В результате S3-бакеты становятся полноценным объектом учета ресурсов наравне с pod’ами и PVC.
Резервное копирование виртуальных машин и новый RestoreJob flow
Система резервного копирования получила важное развитие для сценариев с виртуальными машинами. Теперь VMInstance можно восстанавливать в другой namespace, то есть использовать резервные копии не только для аварийного восстановления, но и для переносов, тестовых копий и клонирования окружений.
Кроме того, улучшен сам процесс restore: корректнее обрабатываются связанные HelmRelease и DataVolume, а сообщения об ошибках из Velero лучше пробрасываются в статус приложения. В дашборде появился полноценный интерфейс для RestoreJob: список, карточка, форма создания и отдельный пункт навигации.
Другие улучшения
Усилена валидация tenant-конфигурации: теперь API запрещает дефисы в именах tenant’ов и дополнительно проверяет, не превысит ли вычисляемое имя namespace ограничение Kubernetes в 63 символа.
В
VMInstanceполеsubnetsпереименовано в более понятноеnetworks, а в дашборде появился выпадающий список доступных сетей. Старое поле сохраняется для обратной совместимости.Для Keycloak добавлены механизмы кастомизации: теперь можно подключать собственные темы оформления, а также настраивать self-registration, верификацию email и SMTP.
В платформе улучшено поведение пакетов: отключение установленного пакета больше не должно приводить к его автоматическому удалению, что возвращает ожидаемую и более безопасную модель управления.
MariaDB теперь всегда разворачивается с репликацией, даже в сценариях с одной репликой, что делает именование сервисов более единообразным и упрощает работу дашборда и механизмов резервного копирования.
Для диагностики и инсталляции добавлены дополнительные служебные инструменты, включая preflight-проверку конфликтов с внешним container runtime и скрипт для отслеживания готовности ключевых компонентов платформы.
Исправления и обновления компонентов
Помимо новых возможностей, релиз 1.3.0 включает большой объем стабилизационных изменений и фактически собирает в себе ключевые исправления из ветки 1.2.1-1.2.4.
Исправлен сценарий миграции для ACME HTTP-01 и перехода на
ingressClassName, что помогает избежать конфликтов в cert-manager.Исправлены сетевые проблемы в Cilium и Kube-OVN, в том числе сценарии с внешними VM LoadBalancer-сервисами и нехваткой RBAC-прав у служебных компонентов.
Закрыт ряд сложных edge-case’ов в Multus и LINSTOR/DRBD, влияющих на создание pod’ов, стабильность сетевого стека и восстановление storage после сбоев.
Обновлены зависимости:
kube-ovnдоv1.15.10,victoria-metrics-operatorдоv0.68.4,piraeus-server/LINSTORдоv1.33.2, а также обновлен Kamaji.
Документация
Вместе с релизом заметно усилили и документацию, причем не только в объеме, но и в практической полезности.
Появилась матрица совместимости версий Talos,
talosctlи Cozystack, что помогает избежать ошибок на этапе установки и обновления.Добавлено описание структуры namespace’ов и правил формирования parent/child namespace, что особенно полезно для мультитенантных инсталляций.
Существенно переработан гайд по
ApplicationDefinition APIи внешним приложениям, что упрощает добавление собственных управляемых приложений в платформу.Появилась документация по кастомным темам Keycloak, а также обновлены материалы по backup/restore для
VMInstanceиVMDisk.
Подробности
Подробности по релизу и документации:
Cozystack v1.3.0: https://github.com/cozystack/cozystack/releases/tag/v1.3.0
Полный changelog v1.3.0: https://github.com/cozystack/cozystack/compare/v1.2.0...v1.3.0
Документация Cozystack: https://cozystack.io/docs/
Присоединяйтесь к нашему сообществу
Telegram: https://t.me/cozystack
Slack: https://kubernetes.slack.com/archives/C07JQ694WPE (сначала необходимо добавиться в пространство https://slack.kubernetes.io/)
YouTube: https://www.youtube.com/@cozystack