Вышел Cozystack v1.6.0. Релиз опубликован 22 июля 2026 года и включает все исправления, ранее вышедшие в патч-релизах v1.5.1–v1.5.3. Ниже — перевод официального анонса, дополненный главными исправлениями из патч-релиза v1.6.1 от 5 августа.
В этом выпуске изменилось несколько важных частей платформы. Рабочие узлы тенантных кластеров Kubernetes теперь работают на Talos Linux вместо Ubuntu, тенанты могут включать аутентификацию OIDC для Kubernetes и Grafana, а новый API SecurityGroup даёт более безопасный интерфейс для управления сетевыми политиками приложений.
Кроме того, Cozystack 1.6 вводит иерархические квоты ресурсов, завершает переход etcd-operator на API v1alpha2, расширяет возможности Keycloak по безопасности и резервному копированию, а удаление приложений теперь стабильно освобождает занятое ими хранилище.
Объём изменений при обновлении больше обычного — перед установкой релиза стоит внимательно прочитать раздел об обновлении.
Что такое Cozystack
Cozystack — это Open Source-платформа, которая позволяет строить облако на bare metal для быстрого развертывания managed Kubernetes, database as a service, applications as a service и виртуальных машин на базе KubeVirt. В рамках платформы можно по клику разворачивать Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics и другие сервисы. Кроме того, платформа поддерживает работу с GPU в виртуальных машинах и K8s-кластерах. Cozystack — проект CNCF Sandbox, существует под лицензией Apache 2.0.
Talos Linux на рабочих узлах тенантных кластеров
Рабочие узлы тенантных кластеров Kubernetes больше не используют Ubuntu и kubeadm. Теперь Cozystack разворачивает их на Talos Linux через Cluster API Bootstrap Provider Talos. Узлы загружаются из образа Talos, который доставляется через CDI, и используют один системный диск под управлением Talos вместо раздельных дисков под систему и kubelet.
Существующие тенантные кластеры мигрируют автоматически: при первом цикле согласования (reconciliation) после обновления платформы старые рабочие машины постепенно заменяются узлами на Talos.
Пересоздавать кластеры тенантам не придётся, но операторам стоит быть готовыми к полной замене пула рабочих узлов: диски узлов создаются заново, а образы контейнеров скачиваются повторно.
Также по умолчанию включено автоматическое восстановление узлов через MachineHealthCheck: Cluster API теперь сам заменяет неисправные узлы, порог maxUnhealthy установлен в 50%. Те, кто предпочитает прежнее поведение, могут временно выставить 0% — пока парк машин переезжает на Talos.
Единый вход по OIDC для тенантных Kubernetes и Grafana
В Cozystack 1.6 появилась настраиваемая тенантом аутентификация OIDC для управляемых кластеров Kubernetes и отдельных инстансов Grafana.
Каждый ресурс приложения Kubernetes теперь поддерживает три режима аутентификации:
-
System— используется платформенный Keycloak; -
CustomConfig— принимается конфигурация аутентификации Kubernetes, предоставленная тенантом; -
None— OIDC отключён.
В режиме System тенант может выдавать отдельным пользователям права администратора или наблюдателя. Cozystack сам создаёт нужные привязки ролей и отдаёт через дашборд готовый kubeconfig с настроенным kubectl oidc-login.
Grafana устроена по той же модели: тенант может подключить инстанс к платформенному realm Keycloak и назначать пользователям роли Admin, Editor или Viewer без настройки на уровне платформы. Локальная учётная запись администратора Grafana сохраняется как аварийный доступ.
SecurityGroup: файрвол-API для тенантов
В Cozystack появился ресурс SecurityGroup уровня пространства имён (namespace-scoped) в API sdn.cozystack.io/v1alpha1. Он позволяет тенантам управлять сетевым доступом между своими приложениями, не имея прямого доступа к ресурсам Cilium.
В одну SecurityGroup можно включить несколько управляемых приложений. Cozystack помечает их поды и генерирует соответствующую CiliumNetworkPolicy. Правила могут ссылаться на другие SecurityGroup, так что доступ описывается на уровне групп приложений, а не отдельных селекторов подов.
Например, тенант может разрешить группе frontend обращаться к группе API, а к группе баз данных пустить только группу API.
В v1.6 правила SecurityGroup только добавляют разрешённый трафик. Пустой список правил не создаёт политику «запрещено всё»: связность по-прежнему вычисляется из всех политик, выбирающих поды. Поведение default-deny запланировано отдельно.
Иерархические квоты ресурсов
Квоты ресурсов теперь следуют иерархии тенантов.
Раньше квота каждого тенанта действовала только внутри его собственного неймспейса. Администратор тенанта мог создать дочерний тенант с большей квотой — или вовсе без неё — и потреблять больше ресурсов, чем выделено родителю.
В Cozystack 1.6 квота тенанта — это бюджет всего поддерева под ним. Дочерний тенант с собственной квотой резервирует часть остатка родительского бюджета; дочерний тенант без квоты делит родительский пул. Квота, превышающая доступный бюджет родителя, отклоняется на этапе admission.
Контроллер также отслеживает суммарное потребление по поддереву и поддерживает дополнительные объекты ResourceQuota, обеспечивающие соблюдение общего лимита в рантайме.
Существующие многоуровневые структуры тенантов стоит проверить до обновления. Для переподписанных деревьев генерируется событие QuotaOvercommitted, а для нагрузок, уже вышедших за новый лимит, оператор может настроить временный буфер на период раскатки.
etcd-operator v1alpha2 и принятие кластеров без пересоздания
Cozystack завершает переход на новый API etcd-operator.cozystack.io/v1alpha2.
Новый оператор управляет жизненным циклом на основе членства в кластере, а не через обычный StatefulSet. Его CRD теперь поставляются отдельным пакетом etcd-operator-crds, чтобы их можно было установить раньше контроллера.
Существующие кластеры etcd принимаются под управление на месте: миграция переписывает нужные сведения о владельцах и ресурсы до того, как новый оператор начнёт управлять кластером. Перенос данных etcd и перезапуск подов не требуются.
Перед принятием Cozystack обязательно снимает снапшот каждого «старого» кластера средствами платформенной инфраструктуры резервного копирования. Если точка назначения для снапшота недоступна, обновление останавливается. Это защищает и отдельные тенантные etcd, и кластеры etcd, обслуживающие control plane тенантных кластеров Kubernetes.
Старые настройки backup.* на уровне приложения из модуля etcd удалены. Резервное копирование теперь настраивается через BackupClass и платформенную стратегию бэкапа Etcd.
Более защищённый и управляемый Keycloak
Keycloak получил несколько независимых улучшений, каждое включается по желанию.
Опциональный прокси базы данных умеет шифровать отдельные поля БД на уровне приложения. Ключи шифрования можно задать напрямую или через Vault Transit; для подключения к Vault поддерживается аутентификация Kubernetes и AppRole.
Консоль администрирования Keycloak и его Administration REST API теперь можно вынести на отдельное имя хоста. Так публичная точка аутентификации остаётся доступной, а административный доступ прячется за приватным ingress-классом или Gateway.
Базу PostgreSQL под Keycloak можно бэкапить в S3 через Barman. Тема страницы входа настраивается через параметры брендинга (branding values), включая собственное изображение темы.
Wildcard-сертификаты по всему дереву тенантов
Cozystack 1.5 позволял оператору указать существующий wildcard-сертификат для сервисов платформы и корневого тенанта. Версия 1.6 распространяет эту модель на дочерние тенанты.
Контроллер платформы реплицирует сертификат в каждый тенантный неймспейс, где терминируется TLS. Ingress-контроллеры и Gateway тенантов подхватывают его автоматически — без доступа к секретам чужих неймспейсов и без дополнительной настройки оператором.
Оператор также может поручить Cozystack выпуск и сопровождение wildcard-сертификата через DNS-01. Один wildcard-сертификат вместо отдельного сертификата на каждое имя хоста помогает не упираться в лимиты ACME на крупных инсталляциях.
Стабильные релизы содержат ровно те артефакты, что тестировались
Конвейер релизов перестроен вокруг неизменяемых тегов образов и явного продвижения релиз-кандидатов.
Стабильный релиз больше не пересобирается заново: образы, протестированные как vX.Y.Z-rc.N, продвигаются в vX.Y.Z по digest — стабильный релиз байт в байт совпадает с релиз-кандидатом, прошедшим сквозное тестирование.
Теги релизов больше не переставляются принудительно, а плановый workflow, автоматически создававший патч-релизы, удалён. Стабильные версии теперь появляются только через явное продвижение RC в стабильный релиз.
Удаление приложения освобождает хранилище
Раньше после удаления управляемого приложения часть PVC и сгенерированных секретов оставалась в кластере.
Cozystack 1.6 добавляет обработку удаления по всему каталогу приложений. Хранилище, занятое ClickHouse, Qdrant, OpenBao, мониторингом, SeaweedFS, etcd, Harbor и рядом других управляемых сервисов, теперь освобождается при удалении приложения.
Это устраняет утечки ресурсов, но меняет семантику удаления: удаление приложения теперь необратимо уничтожает данные. Операторам и тенантам стоит делать бэкапы или снапшоты перед удалением нагрузок, данные которых ещё могут понадобиться.
И ещё в v1.6.0
Дашборд теперь показывает внешний IP-адрес, выданный сервисам LoadBalancer, прямо на вкладке Services приложения.
Kamaji работает в двух репликах контроллера с мягкой антиаффинностью. Также удалён его телеметрический admission-вебхук, что снижает задержку admission для ресурсов TenantControlPlane на мультитенантных инсталляциях.
Velero обновлён до 1.18.1: несколько бэкапов теперь обрабатываются параллельно, а механизмы переноса данных (data movers) при восстановлении могут использовать кэш-тома вместо эфемерного хранилища узлов.
В релиз также вошли исправления: именования при обновлении SeaweedFS, утечек памяти и соединений в KubeVirt, поведения сети и Gateway API в Cilium, admission-логики планировщика LINSTOR, согласования COSI BucketClaim.
Компоненты платформы
В релизе обновлён ряд ключевых компонентов.
Talos Linux переходит с v1.13.0 на v1.13.6, включая обновления ядра с исправлениями уязвимостей CVE-2026-53359 и CVE-2026-46113 (выход из гостевой системы KVM на хост).
Другие крупные обновления:
-
etcd-operator v0.5.2 с новым API v1alpha2
-
Cilium 1.19.5
-
KubeVirt 1.8.4
-
Velero 1.18.1
-
Vertical Pod Autoscaler 1.5.0
-
Harbor 2.15.1
-
Keycloak 26.6.3
-
LINSTOR 1.33.3 и linstor-csi v1.11.2
-
Оператор FoundationDB 2.30.0
-
HAMi 2.9.0
-
Оператор Percona MongoDB 1.22.0
-
OpenBao 2.5.1
-
csi-driver-nfs 4.13.3
Патч-версии управляемого Kubernetes обновлены до v1.32.13, v1.33.13, v1.34.9 и v1.35.6. Kubernetes v1.30 для тенантных кластеров больше не поддерживается.
Патч-релиз 1.6.1: что важно
5 августа вышел патч-релиз v1.6.1 с семью исправлениями. Самое заметное:
-
PostgreSQL: устранён дедлок при изменении размера PVC. Оператор CloudNativePG обновлён до 1.28.2 — исправлена взаимная блокировка при одновременном изменении ресурсов и размера хранилища у кластеров с одним инстансом.
-
etcd-operator v0.5.4. Вобрал в себя четыре исправления контроллера из апстрима: улучшено самовосстановление при циклических перезапусках (crash loop) и в случаях, когда члены кластера используют тома в памяти (memory-backed); PodDisruptionBudget переведён с
maxUnavailableнаminAvailable. -
talm v0.34.0. Инструмент декларативного управления Talos получил новые «ручки» пресетов: timeServers, extraArgs, registryMirrors, VIP и настройки сети теперь задаются декларативно. Заодно talm переехал на Helm 4 и отказался от форка Talos в пользу апстримного v1.13.7.
Обновление
У Cozystack 1.6 самый большой объём изменений при обновлении со времён v1.0. Невыполнение несклльких необходимых условий может остановить обновление, поэтому администраторам платформы стоит изучить полные примечания к релизу и выполнить прилагаемые проверки до установки нового Platform Package.
Самое важное:
-
Проверьте точку назначения бэкапов etcd. Старым кластерам etcd нужно работающее платформенное хранилище бэкапов (backup target) — без него новый оператор не примет их под управление.
-
Проведите аудит инсталляций SeaweedFS. Части кластеров, установленных или обновлявшихся через v1.5.x, может понадобиться восстановление именования нагрузок, прежде чем чарт можно будет безопасно отрендерить.
-
Переведите тенантные кластеры Kubernetes с v1.30 на новые версии. «Живые» ресурсы мигрируют на v1.31 автоматически, но ресурсы под управлением GitOps нужно обновить и в Git.
-
Проверьте StorageClass тенантов. Вручную созданный StorageClass с тем же именем, что у распространяемого класса LINSTOR, может заблокировать развёртывание тенантного CSI.
-
Запланируйте замену рабочих узлов. Существующие пулы узлов тенантов переедут с Ubuntu на Talos Linux: диски пересоздаются, образы скачиваются заново.
-
Пересмотрите настройки MachineHealthCheck. Автоматическая замена неисправных узлов теперь включена,
maxUnhealthyпо умолчанию — 50%. -
Делайте бэкап приложений перед удалением. При удалении приложения теперь удаляется и его хранилище — PVC больше не остаются.
Кластерам, обновляющимся напрямую с v1.4.x, нужно выполнить и требование v1.5: Kubernetes 1.33 или новее для управляющего кластера и для тенантных кластеров с аддоном Flux.
Благодарности
Cozystack v1.6.0 состоялся благодаря гитхаб-участникам androndo, IvanHunters, kvaps, lexfrei, lllamnyp, mattia-eleuteri, matthieu-robin, myasnikovdaniil, scooby87, shreyaabaranwal, sircthulhu и tym83.
Отдельно приветствуем первый вклад shreyaabaranwal!
Ссылки
Обсудить платформу и задать вопросы можно в Telegram-сообществе Cozystack, а также в Slack (инвайт — на slack.kubernetes.io).
ссылка на оригинал статьи https://habr.com/ru/articles/1067916/