Доступен выпуск свободной PaaS-платформы Cozystack 0.22.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-кластера.
В новой версии добавлен cozystack-controller и новые сущности: Workload и WorkloadMonitor — которые позволяют следить за состоянием pod-ов, управляемых операторами, и оценивать уровень сервиса по заранее определённым правилам. Приложения в Cozystack управляются разными операторами, поэтому было решено создать единый формат для отображения статуса каждого сервиса.
Как это работает: При развёртывании приложения устанавливается и WorkloadMonitor, который следит за состоянием pod-ов по селектору. Как только под селектор попадает один из pod-ов, для него создаётся новая сущность Workload, которая отображает роль для каждого pod-а и его состояние. В статусе WorkloadMonitor можно увидеть количество существующих реплик и минимальное количество реплик, необходимое для обслуживания сервиса. Как только нагрузка (workload) становится меньше, чем значение minReplicas для WorkloadMonitor, сервис помечается неработающим (non-operational).
Для приложений, которым нельзя задать точное значение minReplicas (например, worker-ы Kubernetes могут масштабироваться автоматически), реализована возможность вообще не указывать это значение в WorkloadMonitor. В этом случае WorkloadMonitor просто будет считать общее количество запущенных экземпляров.
Такой механизм позволяет использовать любые операторы и механизмы управления pod-ами в Kubernetes и легко расширять платформу, предоставляя единый интерфейс для отображения текущего состояния сервиса.
WorkloadMonitor для сбора информации о репликах и их работоспособности добавлен в приложения Kubernetes, Postgres, Monitoring, VirtualMachine, VMInstance, Redis, etcd и SeaweedFS. Dashboard Cozystack теперь отображает количество реплик приложения и уровень сервиса для каждой группы Workload.
Другие изменения:
- Реализованы и опубликованы под лицензией Apache 2.0 клиент и сервер телеметрии. Сбор метрик для телеметрии осуществляется в соответствии с рекомендациями “LF Telemetry Data Collection and Usage Policy” и его можно отключить с помощью опции “telemetry-enabled: false” в конфигурации Cozystack. Сами данные анонимы и полностью обезличены. К следующим релизам платформы планируется собрать публичный Dashboard на основе данных телеметрии.
- Обновлён компонент cluster-autoscaller для Kubernetes, а также его настройки, которые позволяют более эффективно масштабировать кластеры, как вверх так и вниз.
- Обновлён файл MAINTAINERS, в котором перечислены участники, сопровождающие проект, и сферы их ответственности.
- В Cozystack добавлено сервисное приложение builder, позволяющее производить сборку платформы прямо в Kubernetes.
- Для СУБД VictoriaMetrics добавлена возможность указывать собственные параметры и повышены выставляемые по умолчанию ограничения.
- Для Grafana и Alerta реализован сбор метрик из баз данных.
- Добавлены алерты о состоянии виртуальных машин и postgres-кластеров.
- Для KubeVirt настроен сбор метрик и добавлен Grafana dashboard.
- В конфигурацию Cozystack добавлена опция extra-keycloak-redirect-uri-for-dashboard, позволяющая настроить дополнительные перенаправления для Keycloak.
- В VMInstance исправлена ошибка, блокирующая подключение VMdisks к виртуальным машинам.
- Обновлены Flux Operator 0.12.0, Flux Instance chart 0.12.0,
Cilium 1.16.5, Kube-OVN 1.13.2, CNPG PostgreSQL Operator 1.25.0, Talos Linux 1.9.1.