Skip to content

Commit 1a13110

Browse files
Merge branch 'main' into update-docs-v1.3.0
2 parents 9f46c3a + c88b4ec commit 1a13110

2 files changed

Lines changed: 96 additions & 0 deletions

File tree

503 KB
Loading
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
---
2+
title: "Cozystack 1.3: Storage-Aware Scheduling, LINSTOR GUI, and VM Default Images"
3+
slug: cozystack-1-3-storage-aware-scheduling-linstor-gui-and-vm-default-images
4+
date: 2026-04-23
5+
author: "Timur Tukaev"
6+
description: "Cozystack 1.3 brings storage-aware pod scheduling, a managed LINSTOR GUI, a curated VM image catalog, application-level observability, and cross-namespace VM backup restore."
7+
article_types:
8+
- release
9+
topics:
10+
- platform
11+
- storage
12+
- virtualization
13+
- observability
14+
images:
15+
- "cozystack-v1.3.0.png"
16+
---
17+
18+
{{< figure src="cozystack-v1.3.0.png" alt="Cozystack v1.3.0" width="720" >}}
19+
20+
### Cozystack 1.3: Storage-Aware Scheduling, LINSTOR GUI, and VM Default Images
21+
22+
[Cozystack v1.3.0](https://github.com/cozystack/cozystack/releases/tag/v1.3.0) is now available. The release also rolls up every fix shipped in the v1.2.1 → v1.2.4 patch line.
23+
24+
This cycle pushes the platform forward in five clear directions: smarter storage placement, a managed UI for LINSTOR, a built-in catalog of VM base images, deeper application-level observability, and a complete cross-namespace VM backup-restore experience.
25+
26+
### Main highlights
27+
28+
#### Storage-aware scheduling via the LINSTOR extender
29+
30+
The `cozystack-scheduler` now consults a **LINSTOR scheduler extender** when placing pods that declare both a `SchedulingClass` and LINSTOR-backed PVCs. Pods are preferentially scheduled to nodes where their volume replicas already live, cutting cross-node replication traffic and lowering I/O latency for storage-heavy workloads — databases, object stores, VMs.
31+
32+
It builds on the SchedulingClass system introduced in v1.2 and requires no tenant-side configuration. Operators can continue to mix storage locality with the existing data-center / hardware-generation constraints on SchedulingClass.
33+
34+
#### LINSTOR GUI: managed web console for storage administration
35+
36+
A new opt-in `linstor-gui` package deploys **LINBIT's linstor-gui** alongside the LINSTOR controller with mTLS client authentication and a non-root security context. When OIDC is configured, an optional Keycloak-protected ingress (via oauth2-proxy) exposes the UI; access is restricted to members of the `cozystack-cluster-admin` group, consistent with host-cluster admin RBAC. The CLI workflow is unchanged — the GUI is strictly additive.
37+
38+
#### VM Default Images: out-of-the-box VM provisioning
39+
40+
The new `vm-default-images` package ships a curated set of **cluster-wide VM images** (Ubuntu, Debian, CentOS Stream, and others) as pre-populated DataVolumes. Tenants can provision VMs against well-known base images without having to upload them first. The package is opt-in via the `iaas` bundle and defaults to replicated storage. The `vm-disk` chart also gains a new "disk" source type for cloning from existing vm-disks in the same namespace.
41+
42+
#### Application-level observability: WorkloadsReady, Events, and S3 metering
43+
44+
Applications now expose a **WorkloadsReady** condition on their status by aggregating their underlying WorkloadMonitor resources, giving operators a single readiness signal for Deployments, StatefulSets, DaemonSets, and PVCs. The dashboard gains a new **Events tab** showing namespace-scoped Kubernetes events per application.
45+
46+
The WorkloadMonitor reconciler is extended to track **COSI BucketClaim** objects as first-class Workloads, and the bucket controller queries SeaweedFS bucket-size metrics from VictoriaMetrics — enabling S3 billing pipelines on par with Pods and PVCs.
47+
48+
#### Cross-namespace VM backup restore and RestoreJob dashboard
49+
50+
The backup system now supports **restoring VMInstance backups into a different namespace**, with IP/MAC preservation and safe rename semantics. In-place backup and restore flows for VMDisk and VMInstance are improved across the board, and Velero failure messages now propagate to the Application status. The dashboard ships a complete **RestoreJob experience**: list view, details page, create form, and sidebar entry.
51+
52+
### Also in v1.3.0
53+
54+
- **Stricter tenant-name validation** — alphanumeric-only at the API level, plus a check that the computed ancestor-chain namespace fits the 63-character Kubernetes limit.
55+
- **VMInstance `subnets` renamed to `networks`** with a dashboard dropdown selector; the old field stays supported via migration 36.
56+
- **Custom Keycloak themes can be injected** via `initContainers`; Keycloak-Configure adds email verification and SMTP settings for self-registration flows.
57+
- **Host runtime preflight check** (`make preflight`) warns when a standalone containerd or docker is running alongside the embedded k3s runtime.
58+
- **System PostgreSQL pinned to 17.7-standard-trixie** for Grafana, Alerta, Harbor, Keycloak, and SeaweedFS — preventing drift to PostgreSQL 18.
59+
- **kube-ovn upgraded to v1.15.10** with a port-group regression fix that preserves VM LSP membership across live migration.
60+
- **All bug fixes from v1.2.1 → v1.2.4** are rolled into v1.3.0.
61+
62+
### Documentation worth knowing about
63+
64+
This release ships with a substantial documentation update. New and rewritten guides that pair directly with the v1.3 features:
65+
66+
- [Custom Keycloak themes / white-labeling](https://cozystack.io/docs/v1.3/operations/configuration/white-labeling/) — image contract, configuration, `imagePullSecrets`, and theme activation.
67+
- [Network bonding (LACP) configuration](https://cozystack.io/docs/v1.3/install/how-to/bonding/) — setting up LACP for Cozystack installations.
68+
- [Backup and restore for VMInstance and VMDisk](https://cozystack.io/docs/v1.3/virtualization/backup-and-recovery/) — updated for the v1.3 cross-namespace restore flows.
69+
- [External applications via the ApplicationDefinition API](https://cozystack.io/docs/v1.3/applications/external/) — fully rewritten guide using Minecraft server examples.
70+
- [Go types for Cozystack managed applications](https://cozystack.io/docs/v1.3/cozystack-api/go-types/) — using the generated Go module from your own controllers.
71+
- [ApplicationDefinition naming convention](https://cozystack.io/docs/v1.3/cozystack-api/application-definitions/) — how `cozystack-api` resolves kinds to their backing definitions.
72+
- [Tenant namespace layout and parent / child derivation](https://cozystack.io/docs/v1.3/guides/tenants/) — how nested-tenant namespaces are computed.
73+
- [Talos / talosctl / Cozystack version pairing matrix](https://cozystack.io/docs/v1.3/install/kubernetes/talm/) — definitive compatibility reference.
74+
- [Air-gapped tenant Kubernetes registry mirrors](https://cozystack.io/docs/v1.3/install/kubernetes/air-gapped/) — improved guidance for offline installations.
75+
76+
### Governance
77+
78+
We also welcomed two new maintainers in this cycle: **Mattia Eleuteri** ([@mattia-eleuteri](https://github.com/mattia-eleuteri)) — CSI, storage, networking and security — and **Matthieu Robin** ([@matthieu-robin](https://github.com/matthieu-robin)) — managed applications, platform quality, and benchmarking.
79+
80+
### Thank you to all contributors
81+
82+
This release was shaped by the work of [@androndo](https://github.com/androndo), [@Arsolitt](https://github.com/Arsolitt), [@BROngineer](https://github.com/BROngineer), [@IvanHunters](https://github.com/IvanHunters), [@kitsunoff](https://github.com/kitsunoff), [@kvaps](https://github.com/kvaps), [@lexfrei](https://github.com/lexfrei), [@lllamnyp](https://github.com/lllamnyp), [@mattia-eleuteri](https://github.com/mattia-eleuteri), [@myasnikovdaniil](https://github.com/myasnikovdaniil), [@sircthulhu](https://github.com/sircthulhu), and [@tym83](https://github.com/tym83).
83+
84+
A special welcome to our first-time contributor [@Arsolitt](https://github.com/Arsolitt). Thank you all.
85+
86+
### Release links
87+
88+
- [Cozystack v1.3.0 on GitHub](https://github.com/cozystack/cozystack/releases/tag/v1.3.0)
89+
- [Full changelog v1.2.0 → v1.3.0](https://github.com/cozystack/cozystack/compare/v1.2.0...v1.3.0)
90+
91+
### Join the community
92+
93+
- Telegram [group](https://t.me/cozystack)
94+
- Slack [group](https://kubernetes.slack.com/archives/C06L3CPRVN1) (Get invite at [https://slack.kubernetes.io](https://slack.kubernetes.io))
95+
- [Community Meeting Calendar](https://calendar.google.com/calendar?cid=ZTQzZDIxZTVjOWI0NWE5NWYyOGM1ZDY0OWMyY2IxZTFmNDMzZTJlNjUzYjU2ZGJiZGE3NGNhMzA2ZjBkMGY2OEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t)
96+
- [Cozysummit Virtual 2026](https://community.cncf.io/events/details/cncf-virtual-project-events-hosted-by-cncf-presents-cozysummit-virtual-2026/)

0 commit comments

Comments
 (0)