The release of the free PaaS platform Cozystack 0.33, built on Kubernetes, is now available. The project aims to provide a ready-made platform for hosting providers and a framework for building private and public clouds. The platform installs directly on servers and covers all aspects of infrastructure preparation for providing managed services. Cozystack allows you to run and provide Kubernetes clusters, databases, and virtual machines. The platform code is available on GitHub and is distributed under the Apache-2.0 license.
Talos Linux and Flux CD are used as the foundational technology stack. The images with the system, kernel, and necessary modules are pre-built and updated atomically, which eliminates the need for components like dkms and package managers, ensuring stable operation. A simple installation method is provided in an empty data center using PXE and the Debian-like talos-bootstrap installer. The platform allows deploying Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics, and other services with a single click.
The platform includes a free implementation of network infrastructure (fabric) based on Kube-OVN, and uses Cilium for organizing the service network, MetalLB for announcing services externally. Storage is implemented on LINSTOR, where ZFS is offered as the base layer for storage and DRBD for replication. There's a preconfigured monitoring stack based on VictoriaMetrics and Grafana. To run virtual machines, the KubeVirt technology is used, which allows classic virtual machines to run directly in Kubernetes containers and already has all the necessary integrations with Cluster API for launching managed Kubernetes clusters within a 'bare metal' Kubernetes cluster.
In the last month and a half, the project team has released new versions 0.31, 0.32, and 0.33. The changes in these releases include:
- Unified management of CPU and memory resource allocation. Unified configuration variables cpu-allocation-ratio and memory-allocation-ratio have been added to limit CPU resources and memory usage in virtual machines managed by KubeVirt. The variables apply to all managed applications and resource quotas of tenants. The presets also take into account resource allocation ratios and behave as explicit resource definitions. When upgrading from earlier versions of Cozystack, the resource configuration in managed applications is automatically converted to the new format.
- The function of backing up PVC in tenant-based Kubernetes clusters has been added, allowing platform administrators and individual tenants to create backups and restore data of services running in the clusters. The Velero project is used for backups, and the system requires external S3-compatible storage.
- Support for the use of shared NFS storage has been implemented with a new optional system module.
- The option to configure available CPU sockets for virtual machines has been added through the resources.cpu.sockets parameter, allowing the assignment of specific sockets to virtual machines.
- Support for the use of pre-loaded golden images for virtual machines has been added, speeding up preparation by referencing existing images instead of loading them via HTTP.
- The exposeMethod option for Ingress-NGINX in tenant clusters has been implemented, allowing selection between Proxied and LoadBalancer.
- Improved support for Java applications: the 'heap' parameters are now calculated based on requests and memory limits.
- The standard package manager has been replaced — the new utility cozypkg is now used instead of Helm (a wrapper around Helm and Flux for local development).
- A HelmRelease synchronizer for system components has been added, ensuring automatic monitoring of key configuration changes for timely updates of system applications.
- Support for registry mirror in tenant Kubernetes clusters has been added, configuring containerd for tenant clusters.
- Unified tagging of application child objects for monitoring through WorkloadMonitors has been implemented.
- The cluster-domain option has been added to override the domain cozy.local.
- RBAC rules for port forwarding in KubeVirt (SSH via virtctl) have been added.
- Event collection and audit logs have been enabled.
- Backup/restore for PostgreSQL has been implemented.
- A new tool cozyreport has been added, ensuring report generation in CI. Now all diagnostic information is saved as build artifacts.
- Components updated: cozykpg v1.1.0, flux-operator 0.23.0, Flux 2.6.x, Talos Linux v1.10.3, Cilium 1.17.4, MetalLB 0.15.2, Kube-OVN 1.13.13, cozy-proxy 0.2.0, Kafka Operator 0.45.1-rc1.
- The ability to install Talos in Air Gap environments has been provided.
- Support for GPU for tenant Kubernetes clusters has been added. Platform users can run GPU workloads in both virtual machines and Kubernetes clusters.
- Beta support for ARM architecture has been ensured (cross-architecture build). The build system has been redesigned to support multi-architecture binaries and container images.
- The Vertical Pod Autoscaler (VPA) has been expanded, now enabled for more Cozystack components, allowing for automatic resource tuning. In particular, VPA has been added for control plane tenant clusters. control panel Cozystack and etcd-operator. All Cozystack components with VPA enabled can automatically adjust their CPU and memory requests based on their usage, enhancing stability.
- Support for the Gateway API has been added in Cilium, enabling advanced L4/L7 routing features through the Kubernetes Gateway API.
- The ability to add custom parameters in Cilium configurations for tenant clusters has been provided.
- In the Tenant HelmRelease Reconcile controller, configuration changes are propagated to tenant workloads (ensuring that any HelmRelease defined in the tenant is synchronized with platform updates).
- The ability to configure the CPU allocation ratio in KubeVirt (how virtual CPUs correlate with physical ones) through the cpu-allocation-ratio value in the configmap has been added. Administrators can adjust CPU overcommit for virtual machines while maintaining the necessary balance between performance and density.
- Export of KubeVirt virtual machines has been implemented. This function operates through VirtualMachineExport in KubeVirt, allowing users to create snapshots or backups of virtual machine images.
- Support for various storage classes for virtual machines has been ensured. The virtual-machine application allows selecting any StorageClass for the virtual machine's system disk instead of using a hardcoded PVC (see systemDisk.storage and systemDisk.storageClass values in the application configuration).
Source: opennet.ru
