Cozystack 1.6: воркеры на Talos, tenant SSO, группы безопасности, иерархические квоты и безопасные обновления etcd
Вышла версия Cozystack v1.6.0. Релиз был опубликован 22 июля 2026 года и включает все исправления, ранее выпущенные в патч-релизах v1.5.1, v1.5.2 и v1.5.3.
Этот релиз меняет несколько важных частей платформы. Воркеры арендаторских Kubernetes-кластеров теперь работают на Talos Linux вместо Ubuntu, арендаторы могут включать OIDC-аутентификацию для Kubernetes и Grafana, а новый API SecurityGroup предоставляет более безопасный интерфейс для управления сетевыми политиками приложений.
Cozystack 1.6 также вводит иерархические квоты ресурсов, завершает миграцию etcd-operator на v1alpha2, расширяет возможности безопасности и резервного копирования Keycloak и делает удаление приложений последовательно освобождающим занятое хранилище.
Объём изменений при обновлении больше обычного. Операторам следует изучить раздел об обновлении перед применением релиза.
Talos Linux для воркеров арендаторских Kubernetes-кластеров
Воркер-узлы арендаторских Kubernetes-кластеров больше не используют Ubuntu и kubeadm. Теперь Cozystack разворачивает их на Talos Linux через Cluster API Bootstrap Provider Talos. Воркеры загружаются с образа Talos, доставляемого через CDI, и используют единый системный диск, управляемый Talos, вместо отдельных системного диска и диска kubelet.
Существующие арендаторские кластеры мигрируются автоматически. При первом согласовании после обновления платформы старые воркер-машины постепенно заменяются воркерами на базе 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 остаются доступны как резервный способ доступа на случай сбоя (break-glass).
SecurityGroup: API межсетевого экрана для арендаторов
Cozystack теперь включает ресурс SecurityGroup с областью видимости на уровне namespace в рамках API sdn.cozystack.io/v1alpha1. Он позволяет арендаторам управлять сетевым доступом между своими приложениями без прямого доступа к ресурсам Cilium.
SecurityGroup может включать несколько управляемых приложений. Cozystack помечает их поды метками и генерирует соответствующий CiliumNetworkPolicy. Правила могут ссылаться на другие SecurityGroup, что позволяет описывать доступ на уровне групп приложений, а не работать с селекторами отдельных подов.
Например, арендатор может разрешить группе frontend подключаться к группе API, при этом разрешив доступ к группе базы данных только группе API.
В версии 1.6 правила SecurityGroup добавляют разрешённый трафик. Пустой список правил не создаёт политику запрета по умолчанию (default-deny), так как связность всё равно рассчитывается по всем политикам, выбирающим эти поды. Поведение default-deny запланировано отдельно.
Иерархические квоты ресурсов
Квоты ресурсов теперь следуют иерархии арендаторов.
Ранее квота каждого арендатора применялась только внутри его собственного namespace. Администратор арендатора мог создать субарендатора с большей квотой или без квоты вовсе и потреблять больше ресурсов, чем было выделено родительскому арендатору.
В Cozystack 1.6 квота арендатора представляет бюджет всего поддерева ниже этого арендатора. Дочерний арендатор со своей квотой резервирует часть оставшегося бюджета родителя. Дочерний арендатор без отдельной квоты делит общий пул ресурсов родителя. Квота, превышающая доступный бюджет родителя, отклоняется на этапе допуска (admission).
Контроллер также отслеживает суммарное использование по всему поддереву и поддерживает дополнительные объекты ResourceQuota для применения общего лимита во время выполнения.
Существующие многоуровневые структуры арендаторов следует проверить перед обновлением. Деревья арендаторов с перерасходом квоты генерируют событие QuotaOvercommitted, и операторы могут настроить временный буфер прокатки для нагрузок, уже превышающих новый лимит.
etcd-operator v1alpha2 с внутриплощадочным принятием
Cozystack завершает миграцию на новый API etcd-operator.cozystack.io/v1alpha2.
Новый оператор использует жизненный цикл на основе членства (membership-based) вместо управления etcd как обычным StatefulSet. Его CRD теперь поставляются через отдельный пакет etcd-operator-crds, чтобы их можно было устанавливать до контроллера.
Существующие кластеры etcd принимаются на месте (in place). Миграция перезаписывает необходимую информацию о владении и ресурсы до того, как новый оператор начинает управлять кластером. Перемещение данных etcd или перезапуск подов не требуются.
Перед принятием Cozystack делает обязательный снимок каждого устаревшего кластера с использованием платформенной инфраструктуры резервного копирования. Обновление останавливается, если недоступно место назначения для снимка. Это защищает как отдельные арендаторские экземпляры etcd, так и кластеры etcd, обслуживающие control plane арендаторских Kubernetes-кластеров.
Старые настройки backup.* для отдельных приложений удалены из модуля etcd. Резервное копирование теперь следует настраивать через BackupClass и платформенную стратегию резервного копирования Etcd.
Более безопасные и управляемые развёртывания Keycloak
Keycloak получает несколько независимых, опциональных улучшений.
Опциональный прокси базы данных может шифровать выбранные поля базы данных на уровне приложения. Ключи шифрования можно указывать напрямую или управлять ими через Vault Transit, при этом поддерживаются аутентификация Kubernetes и AppRole для подключений к Vault.
Операторы также могут предоставить консоль администрирования Keycloak и Administration REST API через отдельное имя хоста. Это позволяет оставить публичную конечную точку аутентификации доступной, разместив административный доступ за приватным ingress-классом или Gateway.
База данных PostgreSQL для Keycloak теперь может резервироваться в S3 через Barman. Тему входа платформы также можно настраивать через значения брендинга, включая пользовательское изображение темы.
Wildcard-сертификаты по всему дереву арендаторов
Cozystack 1.5 позволяла операторам предоставлять существующий wildcard-сертификат для платформенных сервисов и корневого арендатора. Версия 1.6 расширяет эту модель на дочерних арендаторов.
Платформенный контроллер копирует сертификат в каждый namespace арендатора, где происходит терминация TLS. Ingress-контроллеры и Gateway арендаторов затем могут автоматически использовать его без доступа к Secret между namespace или дополнительной настройки оператором.
Операторы также могут позволить Cozystack запрашивать и управлять wildcard-сертификатом через DNS-01. Использование одного wildcard-сертификата вместо выпуска отдельного сертификата для каждого имени хоста помогает избежать лимитов частоты запросов ACME на крупных установках.
Стабильные релизы теперь содержат именно те артефакты, что были протестированы
Конвейер релизов был перестроен вокруг неизменяемых тегов образов и явного продвижения релиз-кандидатов.
Стабильный релиз больше не собирается заново отдельно. Образы, протестированные как vX.Y.Z-rc.N, продвигаются по digest до vX.Y.Z, делая стабильный релиз побайтово идентичным релиз-кандидату, прошедшему сквозное тестирование.
Теги релизов больше не перемещаются принудительно, а запланированный workflow, автоматически создававший патч-релизы, удалён. Стабильные версии теперь создаются только через явный процесс продвижения RC в стабильную версию.
Удаление приложений теперь освобождает хранилище
Ранее удаление управляемого приложения оставляло некоторые PVC и сгенерированные Secret.
Cozystack 1.6 добавляет обработку очистки по всему каталогу приложений. Хранилище, используемое ClickHouse, Qdrant, OpenBao, мониторингом, SeaweedFS, etcd, Harbor и несколькими другими управляемыми сервисами, теперь освобождается при удалении приложения.
Это устраняет утечки ресурсов, но также меняет семантику удаления. Удаление приложения теперь является деструктивным. Операторам и арендаторам следует создавать резервные копии или снимки перед удалением нагрузок, данные которых могут ещё понадобиться.
Также в v1.6.0
Дашборд теперь отображает внешний IP, назначенный сервисам LoadBalancer, прямо на вкладке Services приложения.
Kamaji теперь работает с двумя репликами контроллера с мягкой анти-affinity. Релиз также убирает вебхук допуска телеметрии, снижая задержку допуска для ресурсов TenantControlPlane на многоарендаторских установках.
Velero переходит на версию 1.18.1. Несколько резервных копий теперь можно обрабатывать параллельно, а data mover при восстановлении могут использовать кэш-тома вместо полной зависимости от эфемерного хранилища узла.
Релиз также включает исправления для именования при обновлении SeaweedFS, утечек памяти и соединений KubeVirt, поведения сети Cilium и Gateway API, допуска планировщика LINSTOR и согласования COSI BucketClaim.
Компоненты платформы
В этом релизе обновлены несколько основных компонентов.
Talos Linux переходит с v1.13.0 на v1.13.6, включая обновления ядра, устраняющие уязвимости выхода из гостевой системы в хост через KVM CVE-2026-53359 и CVE-2026-46113.
Другие важные обновления включают:
- 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 operator 2.30.0
- HAMi 2.9.0
- Percona MongoDB operator 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 больше не поддерживается для арендаторских кластеров.
Заметки по обновлению
У Cozystack 1.6 самый большой объём изменений при обновлении с версии v1.0. Несколько предварительных условий могут остановить обновление, поэтому операторам следует изучить полные примечания к релизу и выполнить предоставленные проверки перед применением нового Platform Package.
Наиболее важные пункты:
- Проверьте место назначения резервных копий etcd. Устаревшим кластерам etcd требуется работающая платформенная цель резервного копирования, прежде чем их сможет принять новый оператор.
- Проверьте установки 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: для управляющего кластера и для арендаторских кластеров, использующих addon Flux, требуется Kubernetes 1.33 или новее.
Благодарность всем участникам
Cozystack v1.6.0 стал возможен благодаря @androndo, @IvanHunters, @kvaps, @lexfrei, @lllamnyp, @mattia-eleuteri, @matthieu-robin, @myasnikovdaniil, @scooby87, @shreyaabaranwal, @sircthulhu и @tym83.
Мы особенно рады приветствовать нашего первого нового участника — @shreyaabaranwal.
Ссылки на релиз
Присоединяйтесь к сообществу
- Cozystack на GitHub
- Telegram группа
- Slack группа (получить приглашение можно на https://slack.kubernetes.io)
- Календарь встреч сообщества