Выпуск Cozystack 0.17.0, открытой PaaS-платформы на базе Kubernetes

Опубликован выпуск свободной PaaS-платформы Cozystack 0.17.0, построенной на базе Kubernetes. Проект нацелен на предоставление готовой платформы для хостинг-провайдеров и фреймворка для построения частных и публичных облаков. Платформа устанавливается напрямую на серверы и охватывает все аспекты подготовки инфраструктуры для предоставления управляемых сервисов. Cozystack позволяет запускать и предоставлять кластеры Kubernetes, базы данных и виртуальные машины. Код платформы доступен на GitHub и распространяется под лицензией Apache-2.0.

В качестве базового стека технологий используется Talos Linux и Flux CD. Образы с системой, ядром и необходимыми модулями формируются заранее, и обновляются атомарно, что позволяет обойтись без таких компонентов как dkms и пакетный менеджер, и гарантировать стабильную работу. Предоставляется простой метод установки в пустом дата-центре с помощью PXE и debian-подобного установщика talos-bootstrap.

Платформа включает свободную реализацию сетевой инфраструктуры (fabric) на базе Kube-OVN, и использует Cilium для организации сервисной сети, MetalLB для анонса сервисов наружу. Хранилище реализовано на LINSTOR, где предлагается использование ZFS в качестве базового слоя для хранилища и DRBD для репликации. Имеется преднастроенный стек мониторинга на базе VictoriaMetrics и Grafana. Для запуска виртуальных машин используется технология KubeVirt, которая позволяет запускать классические виртуальные машины прямо в контейнерах Kubernetes и уже имеет все необходимые интеграции с Cluster API для запуска управляемых Kubernetes-кластеров внутри “железного” Kubernetes-кластера.

В новой версии:

  • В платформе появилась возможность создавать виртуальные машины с несколькими дисками, производить установку с CD-ROM и переключать диски из одной виртуальной машины в другие. Старое приложение “Virtual Machine” разделено на два отдельных “vm-disk” (Virtual Machine Disk) и “vm-instance” (Virtual Machine Instance). Приложение vm-disk поддерживает загрузку образов с HTTP или локальных накопителей, при создании диска можно указать источник и тип образа — CD-ROM или классический. Приложение vm-instance позволяет запустить виртуальную машину из созданных дисков. Возможность использования старого приложения Virtual Machine сохранена для совместимости.
  • Добавлены опции instanceType и instanceProfile, а также набор инстансов по умолчанию и профилей для Ubuntu, RHEL, Alpine и Windows. Предоставлена возможность настроить виртуальную машину с оптимальными параметрами в зависимости от ОС (например включить TPM и virtio-устройства, использовать tablet-pointer), а вместо указания ресурсов для виртуальной машины можно использовать стандартизированные инстансы, специально предназначенные для конкретного типа нагрузки. Типы инстансов распространяются так же и на Kubernetes, что позволяет более грамотно планировать свои node-группы.
  • В ingress добавлена опция включения проксирования для загрузки образов с локальных машин, а также обновлён CDI для более корректной работы с блочными устройствами. Реализована возможность загрузки образов для LINSTOR с помощью утилиты virtctl.
  • Добавлена поддержка виртуальных машин с Windows. С использованием новых vm-disk и vm-instance протестирована установка Windows 10 и Windows Server 2k15 из ISO с последующим переключением на драйверы VirtIO.
  • При заказе S3-бакетов реализовано автоматическое развёртывание web-интерфейса для доступа к ним. Через web-интерфейс можно загружать и удалять файлы, а также генерировать временные ссылки для публичного доступа. Интерфейс построен на основе s3manager, распространяемого под лицензией Apache 2.0.

  • Добавлены алерты для FluxCD, отображающие состояние релизов. Алерты структурированы и теперь разбиваются по категориям, кроме того, в поле Resource теперь отображается проблемный ресурс.
  • Появилась возможность доставки алертов в Telegram с дедупликацией и кнопками для управления жизненным циклом каждого алерта.
  • В Cluster API включен контроллер MachineHealthChecks, который будет следить за состоянием узлов в кластере Kuberrnetes. В случае возникновения проблем узлы будут автоматически перезаказаны.
  • Добавлен компонент external-dns, который позволяет автоматически настраивать DNS-записи в Cloudflare. Кроме того, реализована возможность заказа сертификатов через API Cloudflare с использованием метода DNS.
  • Добавлен external-secrets-operator, позволяющий синхронизировать секреты с внешними системами.
  • Введены опциональные компоненты, которые по умолчанию отключены, но доступны для включения при помощи опции bundle-enable в конфигурации Cozystack.
  • Улучшены работы (job) для инициализации PostgreSQL и FerretDB, которые теперь ожидают, когда база поднимется, прежде чем производить какие-либо действия с конфигурацией.
  • Повышена стабильность Kube-OVN. Отключена возможность коммуникации с NetworkManager. На некоторых системах эта проблема блокировала запуск контроллеров OVN.
  • Добавлена настройка логов для Clickhouse. Логи вынести в отдельный раздел и настроить ротацию.
  • Обновлены компоненты: LINSTOR 1.29.1, Talos Linux 1.8.1 и Cilium 1.16.3.
Release. Ссылка here.