The release of the free PaaS platform Cozystack 0.33, built on Kubernetes, is available. The project aims to provide a ready-made platform for hosting providers and a framework for building private and public clouds. The platform is installed directly on servers and covers all aspects of preparing the infrastructure for providing managed services. Cozystack allows you to launch 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 is used as the underlying technology stack. Linux and Flux CD. Images with the system, kernel, and necessary modules are pre-built and updated atomically, eliminating the need for components like dkms and a package manager, and ensuring stable operation. A simple installation method is provided in an empty data center using PXE and debian-like talos-bootstrap installer. Within the platform, you can deploy Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics, and other services with a single click.
The platform includes a free implementation network infrastructure (fabric) based on Kube-OVN, it uses Cilium for service mesh organization and MetalLB for service advertising. Storage is implemented on LINSTOR, which uses ZFS as the underlying storage layer and DRBD for replication. A pre-configured monitoring stack based on VictoriaMetrics and Grafana is included. KubeVirt technology is used to launch virtual machines, allowing classic virtual machines to run directly in Kubernetes containers and already has all the necessary integrations with the Cluster API for launching managed Kubernetes clusters within a bare-metal Kubernetes cluster.
Over the past month and a half, the project team has released new versions 0.31, 0.32 and 0.33. Among the changes in these releases:
- Unified CPU and memory allocation management. Unified configuration variables cpu-allocation-ratio and memory-allocation-ratio have been added to limit CPU resources and memory consumption in VMs managed by KubeVirt. The variables apply to all managed applications and tenant resource quotas. Presets also respect resource allocation ratios and behave the same as explicit resource definitions. When upgrading from earlier versions of Cozystack, the resource configuration in managed applications is automatically converted to the new format.
- Added a PVC backup function in tenant Kubernetes clusters, allowing administrators of both the entire platform and individual tenants to create backup copies and restore data from services running in clusters. The Velero project is used for backup, and the system itself requires external S3-compatible storage.
- Implemented support for using shared NFS storage with a new optional system module.
- Added the ability to configure available CPU sockets for virtual machines via the resources.cpu.sockets parameter, allowing you to assign specific sockets to virtual machines.
- Added support for using preloaded golden images for virtual machines, speeding up provisioning by referencing existing images instead of downloading them over HTTP.
- Implemented exposeMethod option for Ingress-NGINX in tenant clusters, which allows choosing Proxied and LoadBalancer.
- Improved support for Java applications: heap parameters are now calculated based on requests and memory limits.
- The standard package manager has been replaced - instead of Helm, a new utility cozypkg is now used (a wrapper around Helm and Flux for local development).
- Added HelmRelease synchronizer for system components, providing automatic monitoring of key configuration changes to ensure timely updates of system applications.
- Added support for registry mirror in tenant Kubernetes clusters, configuring containerd for tenant clusters.
- Implemented unified marking of child application objects for monitoring via WorkloadMonitors.
- Added cluster-domain option to override cozy.local domain.
- Added RBAC rules for port forwarding in KubeVirt (SSH via virtctl).
- Collection of events and audit logs is enabled.
- PostgreSQL backup/restore implemented.
- Added a new cozyreport tool and provided collection of reports in CI. Now all diagnostic information is saved as build artifacts.
- Updated components: 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.
- Provided the ability to install Talos in Air Gap environments.
- Added GPU support for tenant Kubernetes clusters. Platform users can run GPU workloads both in virtual machines and in Kubernetes clusters.
- Beta support for ARM architecture (cross-architecture build) is provided. The build system has been redesigned to support multi-architecture binaries and container images.
- The VerticalPodAutoscaler (VPA) has been expanded to include more Cozystack components and enables automated resource configuration. Specifically, VPA has been added for control plane tenant clusters. control panels Cozystack and etcd-operator. All Cozystack components with VPA enabled can automatically adjust their CPU and memory requests based on usage, improving stability.
- Added Gateway API support in Cilium, enabling advanced L4/L7 routing features via the Kubernetes Gateway API.
- Provided the ability to add custom parameters to Cilium configurations for tenant clusters.
- The Tenant HelmRelease Reconcile controller ensures that configuration changes are propagated to tenant workloads (ensuring that any HelmRelease defined in a tenant is in sync with platform updates).
- Added the ability to configure the CPU allocation ratio in KubeVirt (how virtual CPUs are related to physical CPUs) via the cpu-allocation-ratio value in configmap. Administrators can tune the CPU overcommit for virtual machines to achieve the desired balance between performance and density.
- KubeVirt virtual machine export has been implemented. The feature works via VirtualMachineExport in KubeVirt and allows users to create snapshots or backups of virtual machine images.
- Support for different storage classes for virtual machines is provided. The virtual-machine application allows you to select any StorageClass for the virtual machine's system disk instead of using a hard-coded PVC (see the systemDisk.storage and systemDisk.storageClass values in the application configuration).
Source: opennet.ru
