Cozystack v0.31–0.33
Релизы Cozystack v0.31–0.33: Air Gap, система резервного копирования, AI-нагрузки в K8s, замена Helm и другие возможности
Давно мы не рассказывали об обновлениях Cozystack — пора это исправить! Мы рады представить в этом обзоре множество новых возможностей и ключевых улучшений. Ради краткости мы отобрали здесь только самые значимые изменения (все исправления и улучшения вы найдёте в примечаниях к релизам, ссылки на которые есть по всей статье).
Что такое Cozystack. Cozystack — это бесплатная PaaS-платформа и фреймворк для построения облаков, который объединяет виртуальные машины, контейнеры и рабочие нагрузки на GPU под управлением Kubernetes. Компании могут превратить оборудование в облако: предлагать пользователям или клиентам управляемые K8s, виртуальные машины, управляемые базы данных, приложения и GPU-сервисы. Благодаря интеграции с KubeVirt, мультиарендности и простоте bare-metal он позволяет предприятиям развёртывать AI, базы данных или периферийные (edge) приложения без привязки к поставщику. Cozystack — проект CNCF Sandbox.
V0.33.0: улучшенное управление распределением ресурсов, новая система резервного копирования, поддержка NFS
Cozystack 0.33.0 представляет унифицированное управление ресурсами: глобальные коэффициенты распределения CPU/памяти теперь применяются к виртуальным машинам, приложениям и квотам. Обновление приносит резервное копирование PVC на базе Velero, поддержку хранилища NFS и закрепление CPU (CPU pinning) для многосокетных систем, а также упрощает определения ресурсов благодаря автоматической миграции с устаревших конфигураций.
Унифицированное управление распределением CPU и памяти. Начиная с версии 0.31.0, Cozystack ввёл конфигурационную переменную cpu-allocation-ratio как единый источник истины, унифицировав запросы и лимиты ресурсов CPU в виртуальных машинах под управлением KubeVirt. Новый релиз 0.33.0 вводит memory-allocation-ratio и распространяет обе переменные на все управляемые приложения и квоты ресурсов арендаторов.
Пресеты ресурсов также учитывают коэффициенты распределения и ведут себя так же, как явные определения ресурсов. Новый формат определения ресурсов лаконичен и прост для пользователей платформы.
# resourcePrese
# определение ресурсов в конфигурации
resources:
cpu:
memory:
Это приводит к запросам и лимитам ресурсов Kubernetes, основанным на заданных значениях и универсальных коэффициентах распределения:
# фактические запросы и лимиты, предоставляемые приложению
resources:
limits:
cpu:
memory:
requests:
cpu:
memory:
При обновлении с более ранних версий Cozystack конфигурация ресурсов в управляемых приложениях будет автоматически перенесена в новый формат.
Резервное копирование и восстановление данных в Kubernetes арендаторов. Одна из главных возможностей релиза — возможность резервного копирования PVC в кластерах Kubernetes арендаторов. Она позволяет администраторам платформы и арендаторов создавать резервные копии и восстанавливать данные, используемые сервисами в кластерах арендаторов. Эта новая функциональность в Cozystack работает на базе Velero и требует внешнего S3-совместимого хранилища.
Поддержка хранилища NFS. Cozystack теперь поддерживает использование общего хранилища NFS с новым опциональным системным модулем. См. документацию.
Другие возможности и улучшения
- Включено резервное копирование PVC в кластерах Kubernetes арендаторов на базе Velero.
- Добавлена поддержка NFS через новый опциональный системный модуль nfs-driver.
- Настройка количества CPU-сокетов, доступных виртуальным машинам, с помощью конфигурационного значения
resources.cpu.sockets. Обновление позволяет настраивать распределение ресурсов виртуальных машин за пределами предопределённых типов инстансов, включая NUMA-совместимое закрепление CPU (CPU pinning) для многосокетных систем — обеспечивая точное назначение сокетов виртуальным машинам. - Добавлена поддержка использования предварительно импортированных дисков «золотых образов» (golden image) для виртуальных машин, что ускоряет подготовку за счёт ссылки на существующие образы вместо загрузки по HTTP.
- Добавлена возможность публиковать контроллер Ingress-NGINX в кластере Kubernetes арендатора через LoadBalancer. Новое конфигурационное значение exposeMethod предлагает выбор между Proxied и LoadBalancer.
- Учёт
cpu-allocation-ratioвresourceQuotasарендатора. Спецификации ресурсов теперь используют одинаковые единицы измерения и преобразования как в конфигурации, так и в логах ресурсов. - Улучшена поддержка Java-приложений за счёт вычисления параметров heap из запросов и лимитов памяти. Добавлена вспомогательная функция для расчёта параметров heap в Java на основе запросов и лимитов памяти.
Все изменения: v0.33.0.
Большое спасибо всем участникам.
v0.32.0: cozypkg, резервное копирование PostgreSQL, отвязка cozy.local от жёсткого кода
Последний релиз Cozystack радикально меняет управление платформой, заменяя Helm на cozypkg в качестве менеджера пакетов по умолчанию, а также вводит детальное распределение CPU в vCPU и поддержку зеркал реестра на уровне арендатора. Обновление приносит множество исправлений и модернизирует ключевые компоненты, включая Flux и Cilium, а также новую документацию по установке через OCI.
Основные возможности и улучшения
cozypkg. удобная обёртка над Helm и Flux CD для локальной разработки. Статья о новом инструменте.
Usage:
cozypkg [command]
Available Commands:
apply Upgrade or install the HelmRelease and sync status
completion Generate shell‑autocomplete script
delete Uninstall the release
diff Show live vs desired manifests
get Get one or many HelmReleases
list List HelmReleases
reconcile Trigger Flux reconciliation
resume Resume a suspended release
show Render manifests (helm template)
suspend Suspend a release (Flux stops reconciling)
version Print version
Reconciler для HelmRelease системных компонентов. Автоматический мониторинг ключевых изменений конфигурации, чтобы системные приложения оперативно обновлялись при изменении соответствующих настроек.
Возможность использования зеркал реестра контейнеров кластерами Kubernetes арендаторов. Настройка containerd для кластеров Kubernetes арендаторов.
Другие возможности и улучшения
- Возможность указывать запросы CPU в vCPU.
- Аннотирование всех дочерних объектов приложений единообразными метками для отслеживания через
WorkloadMonitors. Обеспечивает более точное отслеживание и мониторинг использования ресурсов. - Добавлена опция cluster-domain, а
cozy.localбольше не зашит в код. Ранее управляющие кластеры использовали наш нестандартный домен, тогда как DNS Kubernetes по умолчанию использовалcluster.local— что вынуждало постоянно применять обходные пути для приложений, ожидающих стандартный домен. Это изменение устраняет такие проблемы совместимости. - Добавлены правила RBAC для проброса портов в KubeVirt для SSH через virtctl.
- Добавлены события и аудит-логирование. Реализован сбор событий и журналов аудита.
- Добавлена новая функциональность для резервного копирования и восстановления в PostgreSQL.
- Рефакторинг ресурсов в управляемых приложениях.
- Параметр
extraArgsу VMAgent теперь настраиваемый. - Добавлен инструмент cozyreport и сбор отчётов в CI. Вся диагностическая информация теперь сохраняется как артефакты сборки.
Обновления компонентов
- Добавлен cozykpg, обновление до v1.1.0.
- Обновление flux-operator до 0.23.0, Flux до 2.6.x.
- Обновление Talos Linux до v1.10.3.
- Обновление Cilium до v1.17.4.
- Обновление MetalLB до v0.15.2.
- Обновление Kube-OVN до v1.13.13.
- Обновление cozy-proxy до v0.2.0.
- Обновление Kafka Operator до 0.45.1-rc1.
Новые страницы документации
- Руководство по установке в Oracle Cloud Infrastructure.
- Настройка кластера с помощью talosctl.
- Настройка зеркал реестра контейнеров для кластеров Kubernetes арендаторов.
- Описание стратегий управления приложениями и доступных версий для управляемых приложений.
- Как очистить состояние etcd.
Все изменения: v0.32.0, v0.32.1, v0.32.2
Большое спасибо всем участникам и особенно новым участникам:
- @kevin880202 внёс свой первый вклад в #948
- @mattia-eleuteri внёс свой первый вклад в #1027
v0.31: AI-нагрузки в Kubernetes, поддержка ARM, Air Gap и более умное автомасштабирование
v031 выводит на новый уровень AI/ML-нагрузки благодаря нативной поддержке GPU NVIDIA в Kubernetes, позволяя пользователям развёртывать приложения с ускорением на GPU, такие как Stable Diffusion. Обновление также приносит бета-поддержку ARM64, более умное автомасштабирование через VerticalPodAutoscaler и улучшенное управление виртуальными машинами с возможностью экспорта машин KubeVirt — и всё это на основе более надёжного цикла релизов.
Основные возможности и улучшения
Установка Talos в изолированных (air-gapped) средах. Мы подготовили новое руководство по настройке и первоначальному запуску кластеров Talos Linux в изолированных (air-gapped) средах).
Поддержка GPU для кластеров Kubernetes арендаторов. Cozystack теперь интегрирует поддержку NVIDIA GPU Operator для кластеров Kubernetes арендаторов. Пользователи платформы теперь могут запускать AI/ML-нагрузки с ускорением на GPU в виртуальных машинах и кластерах Kubernetes.
Как использовать:
- Документация для виртуальных машин.
- Запись вебинара CNCF, демонстрирующая поддержку GPU на примере запуска Stable Diffusion в Cozystack.
Бета-поддержка ARM (кросс-архитектурные сборки). Система сборки Cozystack была переработана для поддержки мультиархитектурных бинарных файлов и контейнерных образов. Это открывает путь к запуску Cozystack на серверах ARM64. Изменения включают улучшения Makefile и мультиархитектурные сборки Docker-образов.
Расширение VerticalPodAutoscaler (VPA). VerticalPodAutoscaler теперь включён для большего числа компонентов Cozystack для автоматизации настройки ресурсов. В частности, VPA был добавлен для управляющих плоскостей Kubernetes арендаторов, панели управления Cozystack и etcd-operator Cozystack. Все компоненты Cozystack с включённым VPA могут автоматически корректировать свои запросы CPU и памяти на основе фактического использования, повышая стабильность платформы и приложений.
Другие возможности и улучшения
- Теперь включена поддержка Gateway API в Cilium, что позволяет использовать продвинутые возможности маршрутизации L4/L7 через Kubernetes Gateway API.
- Cozystack теперь допускает пользовательские параметры в конфигурации Cilium кластера арендатора.
- Контроллер согласования HelmRelease арендаторов (Tenant HelmRelease Reconcile Controller). Этот контроллер распространяет изменения конфигурации на рабочие нагрузки арендаторов и гарантирует, что любой HelmRelease, определённый в арендаторе, остаётся синхронизированным с обновлениями платформы. Это повышает надёжность развёртывания управляемых приложений в Cozystack.
- Настраиваемый CPU Overcommit в KubeVirt. Коэффициент распределения CPU в KubeVirt (насколько виртуальные процессоры переподписаны относительно физических) теперь настраивается через значение
cpu-allocation-ratioв configmap Cozystack. Это означает, что администраторы Cozystack теперь могут настраивать переподписку CPU для виртуальных машин, балансируя производительность и плотность. - Экспорт виртуальных машин KubeVirt. Cozystack теперь позволяет экспортировать виртуальные машины KubeVirt. Эта возможность, реализованная через механизм VirtualMachineExport в KubeVirt, позволяет пользователям создавать снимки (snapshot) или резервные копии образов виртуальных машин.
- Поддержка различных классов хранилища в виртуальных машинах. Приложение virtual-machine (начиная с версии 0.9.2) позволяет выбрать любой
StorageClassдля системного диска виртуальной машины вместо использования жёстко заданного PVC. См. значенияsystemDisk.storageиsystemDisk.storageClassв конфигурациях приложения.
Новые страницы документации
- Установка Talos в изолированной (air-gapped) среде: новое руководство по настройке и первоначальному запуску кластеров Talos Linux в изолированных (air-gapped) средах).
- Бандлы Cozystack: новая страница в разделе обучения, объясняющая, как работают бандлы Cozystack и как выбрать бандл.
- Справочник по управляемым приложениям: набор новых страниц в документации, зеркалирующих документацию приложений из панели управления Cozystack.
- Сеть LINSTOR: руководства по настройке выделенной сети для LINSTOR и настройке сети для распределённого хранилища в конфигурации с несколькими дата-центрами.
Новый жизненный цикл релизов
Сообщество Cozystack представило новую политику релизов для платформы. Новый жизненный цикл релизов меняется, чтобы обеспечить более стабильный и предсказуемый цикл для клиентов, использующих Cozystack в критически важных средах.
- Постепенный выпуск с альфа-, бета- и релиз-кандидатами: Cozystack теперь будет публиковать предварительные версии (alpha, beta, release candidates) перед стабильным релизом. Начиная с v0.31.0, команда выпустила три релиз-кандидата перед выпуском версии v0.31.0. Это позволяет проводить больше тестирования и собирать больше отзывов перед тем, как пометить релиз как стабильный.
- Продлённая поддержка релизов с патч-версиями: после первоначального релиза vX.Y.0 будет создана долгоживущая ветка release-X.Y для бэкпортирования исправлений. Например, с выходом 0.31.0 ветка release-0.31 будет отслеживать патч-исправления (0.31.x). Эта стратегия позволяет пользователям Cozystack своевременно получать патч-релизы и обновления с минимальными рисками.
Чтобы реализовать эти изменения, мы перестроили наши процессы CI/CD и внедрили автоматизацию, обеспечивающую автоматические бэкпорты. Подробнее о том, как это реализовано, можно прочитать в разделе Development ниже.
Все изменения: v0.31.2, v0.31.1, v0.31.0
Большое спасибо всем участникам и особенно новым участникам:
- @etoshutka внёс свой первый вклад в #872
- @dtrdnk внёс свой первый вклад в #896
- @zdenekjanda внёс свой первый вклад в #924
- @gwynbleidd2106 внёс свой первый вклад в #962