This article is more than one year old. Older articles may contain outdated content. Check that the information in the page has not become incorrect since its publication.

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.

Новые страницы документации

Все изменения: v0.32.0, v0.32.1, v0.32.2

Большое спасибо всем участникам и особенно новым участникам:

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.

Как использовать:

Бета-поддержка 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 в конфигурациях приложения.

Новые страницы документации

Новый жизненный цикл релизов

Сообщество 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

Большое спасибо всем участникам и особенно новым участникам: