tag:github.com,2008:https://github.com/cozystack/cozystack/releases Release notes from cozystack 2026-03-17T16:41:04Z tag:github.com,2008:Repository/721858229/v1.1.3 2026-03-17T16:41:04Z v1.1.3 <p>[Backport release-1.1] [etcd] Add protective limits to defrag CronJob…</p> kvaps tag:github.com,2008:Repository/721858229/v1.0.6 2026-03-17T16:40:55Z v1.0.6 <p>[Backport release-1.0] [etcd] Add protective limits to defrag CronJob…</p> kvaps tag:github.com,2008:Repository/721858229/v1.1.2 2026-03-18T18:09:10Z v1.1.2 <h2>Fixes</h2> <ul> <li> <p><strong>[bucket] Fix S3 Manager endpoint mismatch with COSI credentials</strong>: The S3 Manager UI previously constructed an <code>s3.&lt;tenant&gt;.&lt;cluster-domain&gt;</code> endpoint even though COSI-issued bucket credentials point to the root-level S3 endpoint. This caused login failures with "invalid credentials" despite valid secrets. The deployment now uses the actual endpoint from <code>BucketInfo</code>, with the old namespace-based endpoint kept only as a fallback before <code>BucketAccess</code> secrets exist (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067563272" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2211" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2211/hovercard" href="https://github.com/cozystack/cozystack/pull/2211">#2211</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4071780876" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2215" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2215/hovercard" href="https://github.com/cozystack/cozystack/pull/2215">#2215</a>).</p> </li> <li> <p><strong>[platform] Fix spurious OpenAPI post-processing errors on cozystack-api startup</strong>: The OpenAPI post-processor was being invoked for non-<code>apps.cozystack.io</code> group versions where the base <code>Application*</code> schemas do not exist, producing noisy startup errors on every API server launch. It now skips those non-apps group versions gracefully instead of returning an error (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067763357" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2212" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2212/hovercard" href="https://github.com/cozystack/cozystack/pull/2212">#2212</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4071781855" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2217" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2217/hovercard" href="https://github.com/cozystack/cozystack/pull/2217">#2217</a>).</p> </li> </ul> <h2>Documentation</h2> <ul> <li> <p><strong>[website] Add troubleshooting for packages stuck in <code>DependenciesNotReady</code></strong>: Added an operations guide that explains how to diagnose missing package dependencies in operator logs and corrected the packages management development docs to use the current <code>make image-packages</code> target (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067942673" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/450" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/450/hovercard" href="https://github.com/cozystack/website/pull/450">cozystack/website#450</a>).</p> </li> <li> <p><strong>[website] Reorder installation docs to install the operator before the platform package</strong>: Updated the platform installation guide and tutorial so the setup sequence consistently installs the Cozystack operator first, then prepares and applies the Platform Package, matching the rest of the documentation set (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062118605" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/449" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/449/hovercard" href="https://github.com/cozystack/website/pull/449">cozystack/website#449</a>).</p> </li> <li> <p><strong>[website] Add automated installation guide for the Ansible collection</strong>: Added a full guide for deploying Cozystack with the <code>cozystack.installer</code> collection, including inventory examples, distro-specific playbooks, configuration reference, and explicit version pinning guidance (<a href="https://github.com/lexfrei"><strong>@lexfrei</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022328642" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/442" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/442/hovercard" href="https://github.com/cozystack/website/pull/442">cozystack/website#442</a>).</p> </li> <li> <p><strong>[website] Expand monitoring and platform architecture reference docs</strong>: Added a tenant custom metrics collection guide for <code>VMServiceScrape</code> and <code>VMPodScrape</code>, and documented <code>PackageSource</code>/<code>Package</code> architecture, reconciliation flow, rollback behavior, and the <code>cozypkg</code> workflow in Key Concepts (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053931018" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/444" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/444/hovercard" href="https://github.com/cozystack/website/pull/444">cozystack/website#444</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4054008889" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/445" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/445/hovercard" href="https://github.com/cozystack/website/pull/445">cozystack/website#445</a>).</p> </li> <li> <p><strong>[website] Improve operations guides for CA rotation and Velero backups</strong>: Completed the CA rotation documentation with dry-run and post-rotation credential retrieval steps, and expanded the backup configuration guide with concrete examples, verification commands, and clearer operator procedures (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3849224810" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/406" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/406/hovercard" href="https://github.com/cozystack/website/pull/406">cozystack/website#406</a>; <a href="https://github.com/androndo"><strong>@androndo</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016910688" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/440" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/440/hovercard" href="https://github.com/cozystack/website/pull/440">cozystack/website#440</a>).</p> </li> </ul> <hr> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/cozystack/cozystack/compare/v1.1.1...v1.1.2"><tt>v1.1.1...v1.1.2</tt></a></p> <p><a href="https://sourceforge.net/projects/cozystack/files/v1.1.2/" rel="nofollow"><img src="https://camo.githubusercontent.com/efcf70acc9b360a1dfbb0a1e22bf7928f651e0a239bc50b7c410f89be3659de9/68747470733a2f2f612e6673646e2e636f6d2f636f6e2f6170702f73662d646f776e6c6f61642d627574746f6e" alt="Download cozystack" data-canonical-src="https://a.fsdn.com/con/app/sf-download-button" style="max-width: 100%;"></a></p> github-actions[bot] tag:github.com,2008:Repository/721858229/v1.0.5 2026-03-18T18:09:14Z v1.0.5 <h2>Fixes</h2> <ul> <li><strong>[api] Fix spurious OpenAPI post-processing errors for non-apps group versions</strong>: The API server no longer logs false errors while generating OpenAPI specs for core and other non-<code>apps.cozystack.io</code> group versions. The post-processor now exits early when the base <code>Application</code> schemas are absent, reducing noisy startup logs without affecting application schema generation (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067763357" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2212" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2212/hovercard" href="https://github.com/cozystack/cozystack/pull/2212">#2212</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4071781848" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2216" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2216/hovercard" href="https://github.com/cozystack/cozystack/pull/2216">#2216</a>).</li> </ul> <h2>Documentation</h2> <ul> <li> <p><strong>[website] Add <code>DependenciesNotReady</code> troubleshooting and correct packages management build target</strong>: Added a troubleshooting guide for packages stuck in <code>DependenciesNotReady</code>, including how to inspect operator logs and identify missing dependencies, and fixed the outdated <code>make image-cozystack</code> command to <code>make image-packages</code> in the packages management guide (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067942673" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/450" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/450/hovercard" href="https://github.com/cozystack/website/pull/450">cozystack/website#450</a>).</p> </li> <li> <p><strong>[website] Clarify operator-first installation order</strong>: Reordered the platform installation guide and tutorial so users install the Cozystack operator before preparing and applying the Platform Package, matching the rest of the installation docs and reducing setup confusion during fresh installs (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062118605" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/449" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/449/hovercard" href="https://github.com/cozystack/website/pull/449">cozystack/website#449</a>).</p> </li> <li> <p><strong>[website] Add automated installation guide for Ansible</strong>: Added end-to-end documentation for deploying Cozystack with the <code>cozystack.installer</code> Ansible collection, including inventory examples, distro-specific playbooks, configuration reference, verification steps, and explicit version pinning guidance to help operators automate installs safely (<a href="https://github.com/lexfrei"><strong>@lexfrei</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022328642" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/442" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/442/hovercard" href="https://github.com/cozystack/website/pull/442">cozystack/website#442</a>).</p> </li> <li> <p><strong>[website] Expand CA rotation operations guide</strong>: Completed the CA rotation documentation with separate Talos and Kubernetes certificate rotation procedures, dry-run preview steps, and post-rotation guidance for fetching updated <code>talosconfig</code> and <code>kubeconfig</code> files after certificate changes (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3849224810" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/406" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/406/hovercard" href="https://github.com/cozystack/website/pull/406">cozystack/website#406</a>).</p> </li> <li> <p><strong>[website] Improve backup operations documentation</strong>: Enhanced the operator backup and recovery guide with clearer Velero enablement steps, concrete provider and bucket examples, and more useful commands for inspecting backups, schedules, restores, CRD status, and logs (<a href="https://github.com/androndo"><strong>@androndo</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016910688" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/440" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/440/hovercard" href="https://github.com/cozystack/website/pull/440">cozystack/website#440</a>).</p> </li> <li> <p><strong>[website] Add custom metrics collection guide</strong>: Added a monitoring guide showing how tenants can expose their own Prometheus exporters through <code>VMServiceScrape</code> and <code>VMPodScrape</code>, including namespace labeling requirements, example manifests, verification steps, and troubleshooting advice (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053931018" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/444" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/444/hovercard" href="https://github.com/cozystack/website/pull/444">cozystack/website#444</a>).</p> </li> <li> <p><strong>[website] Document PackageSource and Package architecture</strong>: Added a Key Concepts reference covering <code>PackageSource</code> and <code>Package</code> reconciliation flow, dependency handling, update propagation, rollback behavior, FluxPlunger recovery, and the <code>cozypkg</code> CLI for package management (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4054008889" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/445" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/445/hovercard" href="https://github.com/cozystack/website/pull/445">cozystack/website#445</a>).</p> </li> <li> <p><strong>[website] Refresh v1 application and platform documentation</strong>: Fixed the documentation auto-update flow and published a broad v1 documentation refresh covering newly documented applications, updated naming and navigation, virtualization and platform content updates, and reorganized versioned docs pages (<a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015617691" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/439" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/439/hovercard" href="https://github.com/cozystack/website/pull/439">cozystack/website#439</a>).</p> </li> </ul> <hr> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/cozystack/cozystack/compare/v1.0.4...v1.0.5"><tt>v1.0.4...v1.0.5</tt></a></p> <p><a href="https://sourceforge.net/projects/cozystack/files/v1.0.5/" rel="nofollow"><img src="https://camo.githubusercontent.com/efcf70acc9b360a1dfbb0a1e22bf7928f651e0a239bc50b7c410f89be3659de9/68747470733a2f2f612e6673646e2e636f6d2f636f6e2f6170702f73662d646f776e6c6f61642d627574746f6e" alt="Download cozystack" data-canonical-src="https://a.fsdn.com/con/app/sf-download-button" style="max-width: 100%;"></a></p> github-actions[bot] tag:github.com,2008:Repository/721858229/v1.1.1 2026-03-18T18:09:23Z v1.1.1 <h2>Fixes</h2> <ul> <li> <p><strong>[dashboard] Fix hidden MarketplacePanel resources appearing in sidebar menu</strong>: The sidebar was generated independently from MarketplacePanels, always showing all resources regardless of their <code>hidden</code> state. Fixed by fetching MarketplacePanels during sidebar reconciliation and skipping resources where <code>hidden=true</code>, so hiding a resource from the marketplace also removes it from the sidebar navigation (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044925918" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2177" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2177/hovercard" href="https://github.com/cozystack/cozystack/pull/2177">#2177</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052985024" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2203" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2203/hovercard" href="https://github.com/cozystack/cozystack/pull/2203">#2203</a>).</p> </li> <li> <p><strong>[dashboard] Fix disabled/hidden state overwritten on every MarketplacePanel reconciliation</strong>: The controller was hardcoding <code>disabled=false</code> and <code>hidden=false</code> on every reconciliation, silently overwriting any user changes made through the dashboard UI. Fixed by reading and preserving the current <code>disabled</code>/<code>hidden</code> values from the existing resource before updating (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044886896" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2176" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2176/hovercard" href="https://github.com/cozystack/cozystack/pull/2176">#2176</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052978638" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2201" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2201/hovercard" href="https://github.com/cozystack/cozystack/pull/2201">#2201</a>).</p> </li> <li> <p><strong>[dashboard] Fix External IPs factory EnrichedTable rendering</strong>: The external-IPs table displayed empty rows because the factory used incorrect <code>EnrichedTable</code> properties. Replaced <code>clusterNamePartOfUrl</code> with <code>cluster</code> and changed <code>pathToItems</code> from array to dot-path string format, consistent with all other working <code>EnrichedTable</code> instances (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044846575" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2175" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2175/hovercard" href="https://github.com/cozystack/cozystack/pull/2175">#2175</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052136701" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2193" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2193/hovercard" href="https://github.com/cozystack/cozystack/pull/2193">#2193</a>).</p> </li> <li> <p><strong>[platform] Fix VM MAC address not preserved during virtual-machine to vm-instance migration</strong>: Kube-OVN reads MAC address exclusively from the pod annotation <code>ovn.kubernetes.io/mac_address</code>, not from the IP resource <code>spec.macAddress</code>. Without the annotation, migrated VMs received a new random MAC, breaking OS-level network configurations that match by MAC (e.g. netplan). Added a Helm <code>lookup</code> for the Kube-OVN IP resource in the vm-instance chart so that MAC and IP addresses are automatically injected as pod annotations when the resource exists (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037451869" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2169" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2169/hovercard" href="https://github.com/cozystack/cozystack/pull/2169">#2169</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052132243" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2190" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2190/hovercard" href="https://github.com/cozystack/cozystack/pull/2190">#2190</a>).</p> </li> <li> <p><strong>[etcd-operator] Replace deprecated kube-rbac-proxy image</strong>: The <code>gcr.io/kubebuilder/kube-rbac-proxy</code> image became unavailable after Google Container Registry was deprecated. Replaced it with <code>quay.io/brancz/kube-rbac-proxy</code> from the original upstream author, restoring etcd-operator functionality (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049982498" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2181" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2181/hovercard" href="https://github.com/cozystack/cozystack/pull/2181">#2181</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4051182875" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2182" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2182/hovercard" href="https://github.com/cozystack/cozystack/pull/2182">#2182</a>).</p> </li> <li> <p><strong>[migrations] Handle missing RabbitMQ CRD in migration 34</strong>: Migration 34 failed with an error when the <code>rabbitmqs.apps.cozystack.io</code> CRD did not exist — which occurs on clusters where RabbitMQ was never installed. Added a CRD presence check before attempting to list resources so that migration 34 completes cleanly on such clusters (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035041111" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2168" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2168/hovercard" href="https://github.com/cozystack/cozystack/pull/2168">#2168</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049917966" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2180" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2180/hovercard" href="https://github.com/cozystack/cozystack/pull/2180">#2180</a>).</p> </li> <li> <p><strong>[keycloak] Fix Keycloak crashloop due to misconfigured health probes</strong>: Keycloak 26.x redirects all HTTP requests on port 8080 to the configured HTTPS hostname; since kubelet does not follow redirects, liveness and readiness probes failed causing a crashloop. Fixed by enabling <code>KC_HEALTH_ENABLED=true</code>, exposing management port 9000, and switching all probes to <code>/health/live</code> and <code>/health/ready</code> on port 9000. Also added a <code>startupProbe</code> for improved startup tolerance (<a href="https://github.com/mattia-eleuteri"><strong>@mattia-eleuteri</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4033185671" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2162" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2162/hovercard" href="https://github.com/cozystack/cozystack/pull/2162">#2162</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049901554" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2179" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2179/hovercard" href="https://github.com/cozystack/cozystack/pull/2179">#2179</a>).</p> </li> </ul> <hr> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/cozystack/cozystack/compare/v1.1.0...v1.1.1"><tt>v1.1.0...v1.1.1</tt></a></p> <p><a href="https://sourceforge.net/projects/cozystack/files/v1.1.1/" rel="nofollow"><img src="https://camo.githubusercontent.com/efcf70acc9b360a1dfbb0a1e22bf7928f651e0a239bc50b7c410f89be3659de9/68747470733a2f2f612e6673646e2e636f6d2f636f6e2f6170702f73662d646f776e6c6f61642d627574746f6e" alt="Download cozystack" data-canonical-src="https://a.fsdn.com/con/app/sf-download-button" style="max-width: 100%;"></a></p> github-actions[bot] tag:github.com,2008:Repository/721858229/v1.0.4 2026-03-18T18:09:10Z v1.0.4 <h2>Fixes</h2> <ul> <li> <p><strong>[system] Fix Keycloak probe crashloop with management port health endpoints</strong>: Fixed a crashloop where Keycloak 26.x was endlessly restarting because liveness and readiness probes were sending HTTP requests to port 8080. Keycloak 26.x redirects all requests on port 8080 to <code>KC_HOSTNAME</code> (HTTPS), and since kubelet does not follow redirects, probes failed, eventually triggering container restarts. The fix switches probes to the dedicated management port 9000 (<code>/health/live</code>, <code>/health/ready</code>) enabled via <code>KC_HEALTH_ENABLED=true</code>, exposes management port 9000, and adds a <code>startupProbe</code> with appropriate failure thresholds for better startup tolerance (<a href="https://github.com/mattia-eleuteri"><strong>@mattia-eleuteri</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4033185671" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2162" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2162/hovercard" href="https://github.com/cozystack/cozystack/pull/2162">#2162</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049901473" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2178" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2178/hovercard" href="https://github.com/cozystack/cozystack/pull/2178">#2178</a>).</p> </li> <li> <p><strong>[system] Fix etcd-operator deprecated kube-rbac-proxy image</strong>: Replaced the deprecated <code>gcr.io/kubebuilder/kube-rbac-proxy:v0.16.0</code> image with <code>quay.io/brancz/kube-rbac-proxy:v0.18.1</code> in the vendored etcd-operator chart. The GCR-hosted image became unavailable after March 18, 2025, causing etcd-operator pods to fail on image pull (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049982498" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2181" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2181/hovercard" href="https://github.com/cozystack/cozystack/pull/2181">#2181</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4051182873" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2183" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2183/hovercard" href="https://github.com/cozystack/cozystack/pull/2183">#2183</a>).</p> </li> <li> <p><strong>[platform] Fix VM MAC address not preserved during virtual-machine to vm-instance migration</strong>: During the <code>virtual-machine</code> → <code>vm-instance</code> migration (script 29), VM MAC addresses were not preserved. Kube-OVN reads MAC addresses exclusively from the pod annotation <code>ovn.kubernetes.io/mac_address</code>, not from <code>spec.macAddress</code> of the IP resource. Without this annotation, migrated VMs received a new random MAC address, breaking OS-level network configuration that matches by MAC (e.g., netplan). The fix adds a Helm <code>lookup</code> in the vm-instance chart template to read the Kube-OVN IP resource and automatically inject the MAC and IP addresses as pod annotations (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037451869" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2169" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2169/hovercard" href="https://github.com/cozystack/cozystack/pull/2169">#2169</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052132245" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2191" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2191/hovercard" href="https://github.com/cozystack/cozystack/pull/2191">#2191</a>).</p> </li> <li> <p><strong>[dashboard] Fix External IPs page showing empty rows</strong>: Fixed the External IPs administration page displaying empty rows instead of service data. The <code>EnrichedTable</code> configuration in the <code>external-ips</code> factory was using incorrect property names — replaced <code>clusterNamePartOfUrl</code> with <code>cluster</code> and changed <code>pathToItems</code> from array format to dot-path string format, matching the convention used by all other <code>EnrichedTable</code> instances (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044846575" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2175" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2175/hovercard" href="https://github.com/cozystack/cozystack/pull/2175">#2175</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052136660" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2192" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2192/hovercard" href="https://github.com/cozystack/cozystack/pull/2192">#2192</a>).</p> </li> <li> <p><strong>[dashboard] Fix disabled/hidden state reset on MarketplacePanel reconciliation</strong>: Fixed a bug where the dashboard controller was hardcoding <code>disabled=false</code> and <code>hidden=false</code> on every reconcile loop, overwriting changes made through the dashboard UI. Services disabled or hidden via the marketplace panel now correctly retain their state after controller reconciliation (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044886896" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2176" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2176/hovercard" href="https://github.com/cozystack/cozystack/pull/2176">#2176</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052978644" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2202" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2202/hovercard" href="https://github.com/cozystack/cozystack/pull/2202">#2202</a>).</p> </li> <li> <p><strong>[dashboard] Fix hidden MarketplacePanel resources appearing in sidebar menu</strong>: Fixed the sidebar navigation showing all resources regardless of their MarketplacePanel <code>hidden</code> state. The controller now fetches MarketplacePanels during sidebar reconciliation and filters out resources where <code>hidden=true</code>, ensuring that hiding a resource from the marketplace also removes it from the sidebar navigation. Listing failures are non-fatal — if the configuration fetch fails, no hiding is applied and the dashboard remains functional (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044925918" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2177" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2177/hovercard" href="https://github.com/cozystack/cozystack/pull/2177">#2177</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052985041" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2204" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2204/hovercard" href="https://github.com/cozystack/cozystack/pull/2204">#2204</a>).</p> </li> </ul> <h2>Documentation</h2> <ul> <li><strong>[website] Add OIDC self-signed certificates configuration guide</strong>: Added a comprehensive guide for configuring OIDC authentication with Keycloak when using self-signed certificates (the default in Cozystack). Covers Talos machine configuration with certificate mounting and host entries, kubelogin setup instructions, and a troubleshooting section. The guide is available for both v0 and v1 versioned documentation paths (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4033976145" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/443" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/443/hovercard" href="https://github.com/cozystack/website/pull/443">cozystack/website#443</a>).</li> </ul> <hr> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/cozystack/cozystack/compare/v1.0.3...v1.0.4"><tt>v1.0.3...v1.0.4</tt></a></p> <p><a href="https://sourceforge.net/projects/cozystack/files/v1.0.4/" rel="nofollow"><img src="https://camo.githubusercontent.com/efcf70acc9b360a1dfbb0a1e22bf7928f651e0a239bc50b7c410f89be3659de9/68747470733a2f2f612e6673646e2e636f6d2f636f6e2f6170702f73662d646f776e6c6f61642d627574746f6e" alt="Download cozystack" data-canonical-src="https://a.fsdn.com/con/app/sf-download-button" style="max-width: 100%;"></a></p> github-actions[bot] tag:github.com,2008:Repository/721858229/v0.41.11 2026-03-10T20:21:51Z v0.41.11 <p>Release v0.41.11 (<a class="issue-link js-issue-link" href="https://github.com/cozystack/cozystack/pull/2185">#2185</a>)</p> <p>This PR prepares the release `v0.41.11`.</p> github-actions[bot] tag:github.com,2008:Repository/721858229/v1.1.0 2026-03-18T18:43:47Z v1.1.0 <h1>Cozystack v1.1.0</h1> <p>Cozystack v1.1.0 delivers a major expansion of the managed application catalog with <strong>OpenBAO</strong> (open-source HashiCorp Vault fork) for secrets management, comprehensive <strong>tiered object storage</strong> with SeaweedFS storage pools, a new bucket <strong>user model</strong> with per-user credentials and S3 login support, <strong>RabbitMQ version selection</strong>, and <strong>MongoDB Grafana dashboards</strong>. The dashboard gains storageClass dropdowns for all stateful apps. This release also incorporates all fixes from the v1.0.x patch series.</p> <h2>Feature Highlights</h2> <h3>OpenBAO: Managed Secrets Management Service</h3> <p>Cozystack now ships <strong>OpenBAO</strong> as a fully managed PaaS application — an open-source fork of HashiCorp Vault providing enterprise-grade secrets management. Users can deploy OpenBAO instances in standalone mode (single replica with file storage) or in high-availability Raft mode (multiple replicas with integrated Raft consensus), with the mode switching automatically based on the <code>replicas</code> field.</p> <p>Each OpenBAO instance gets TLS enabled by default via cert-manager self-signed certificates, with DNS SANs covering all service endpoints and pod addresses. The Vault injector and CSI provider are intentionally disabled (they are cluster-scoped components not safe for per-tenant use). OpenBAO requires manual initialization and unsealing by design — no auto-unseal is configured.</p> <p>A full end-to-end E2E test covers the complete lifecycle: deploy, wait for certificate and API readiness, init, unseal, verify, and cleanup. OpenBAO is available in the application catalog for tenant namespaces.</p> <h3>SeaweedFS Tiered Storage Pools</h3> <p>SeaweedFS now supports <strong>tiered storage pools</strong> — operators can define separate storage pools per disk type (SSD, HDD, NVMe) in the <code>volume.pools</code> field (Simple topology) or <code>volume.zones[name].pools</code> (MultiZone topology). Each pool creates an additional Volume StatefulSet alongside the default one, with SeaweedFS distinguishing storage via the <code>-disk=&lt;type&gt;</code> flag on volume servers.</p> <p>Each pool automatically generates its own set of COSI resources: a standard <code>BucketClass</code>, a <code>-lock</code> BucketClass (COMPLIANCE mode, 365-day retention), a read-write <code>BucketAccessClass</code>, and a <code>-readonly</code> BucketAccessClass. This allows applications to place data on specific storage tiers and request appropriate access policies per pool.</p> <p>In MultiZone topology, pools are defined per zone and each zone × pool combination creates a dedicated StatefulSet (e.g., <code>us-east-ssd</code>, <code>us-west-hdd</code>), with nodes selected via <code>topology.kubernetes.io/zone</code> labels. Existing deployments with no pools defined produce output identical to previous versions — no migration is required.</p> <h3>Bucket User Model with S3 Login</h3> <p>The bucket application introduces a new <strong>user model</strong> for access management. Instead of a single implicit BucketAccess resource, operators now define a <code>users</code> map where each entry creates a dedicated <code>BucketAccess</code> with its own credentials secret and an optional <code>readonly</code> flag. The S3 Manager UI has been updated with a login screen that uses per-session credentials from the user's own secret, replacing the previous basic-auth approach.</p> <p>Two new bucket parameters are available: <code>locking</code> provisions from the <code>-lock</code> BucketClass (COMPLIANCE mode, 365-day object lock retention) for write-once-read-many use cases, and <code>storagePool</code> selects a specific pool's BucketClass for tiered storage placement. The COSI driver has been updated to v0.3.0 to support the new <code>diskType</code> parameter.</p> <p><strong><g-emoji class="g-emoji" alias="warning">⚠️</g-emoji> Breaking change</strong>: The implicit default BucketAccess resource is no longer created. Existing buckets that relied on the single auto-generated BucketAccess will need to explicitly define users in the <code>users</code> map after upgrading.</p> <h3>RabbitMQ Version Selection</h3> <p>RabbitMQ instances now support a configurable <strong>version selector</strong> (<code>version</code> field with values: <code>v4.2</code>, <code>v4.1</code>, <code>v4.0</code>, <code>v3.13</code>; default <code>v4.2</code>). The chart validates the selection at deploy time and uses it to pin the runtime image, giving operators control over the RabbitMQ release channel per instance. An automatic migration backfills the <code>version</code> field on all existing RabbitMQ resources to <code>v4.2</code>.</p> <h2>Major Features and Improvements</h2> <ul> <li> <p><strong>[apps] Add OpenBAO as a managed secrets management service</strong>: Deployed as a PaaS application with standalone (file storage) and HA Raft modes, TLS enabled by default via cert-manager, injector and CSI provider disabled for tenant safety, and a full E2E lifecycle test (<a href="https://github.com/lexfrei"><strong>@lexfrei</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3948650706" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2059" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2059/hovercard" href="https://github.com/cozystack/cozystack/pull/2059">#2059</a>).</p> </li> <li> <p><strong>[seaweedfs] Add storage pools support for tiered storage</strong>: Added <code>volume.pools</code> (Simple) and <code>volume.zones[name].pools</code> (MultiZone) for per-disk-type StatefulSets, zone overrides (<code>nodeSelector</code>, <code>storageClass</code>, <code>dataCenter</code>), per-pool COSI BucketClass and BucketAccessClass resources, and bumped seaweedfs-cosi-driver to v0.3.0 (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3987575476" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2097" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2097/hovercard" href="https://github.com/cozystack/cozystack/pull/2097">#2097</a>).</p> </li> <li> <p><strong>[apps][system] Add bucket user model with locking and storage pool selection</strong>: Replaced implicit BucketAccess with per-user <code>users</code> map, added <code>locking</code> and <code>storagePool</code> parameters, renamed COSI BucketClass suffix from <code>-worm</code> to <code>-lock</code>, added <code>-readonly</code> BucketAccessClass for all topologies, and updated S3 Manager with login screen using per-user credentials (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4002725018" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2119" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2119/hovercard" href="https://github.com/cozystack/cozystack/pull/2119">#2119</a>).</p> </li> <li> <p><strong>[rabbitmq] Add version selection for RabbitMQ instances</strong>: Added <code>version</code> field (<code>v4.2</code>, <code>v4.1</code>, <code>v4.0</code>, <code>v3.13</code>) with chart-level validation, default <code>v4.2</code>, and an automatic migration to backfill the field on existing instances (<a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3981700187" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2092" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2092/hovercard" href="https://github.com/cozystack/cozystack/pull/2092">#2092</a>).</p> </li> <li> <p><strong>[system] Add MongoDB Overview and InMemory Details Grafana dashboards</strong>: Added two comprehensive Grafana dashboards for MongoDB monitoring — Overview (command operations, connections, cursors, query efficiency, write time) and InMemory Details (WiredTiger cache, transactions, concurrency, eviction). Dashboards are registered in <code>dashboards.list</code> for automatic GrafanaDashboard CRD generation (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030236547" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2158" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2158/hovercard" href="https://github.com/cozystack/cozystack/pull/2158">#2158</a>).</p> </li> <li> <p><strong>[dashboard] Add storageClass dropdown for all stateful apps</strong>: Replaced the free-text <code>storageClass</code> input with an API-backed dropdown listing available StorageClasses from the cluster. Affects ClickHouse, Harbor, HTTPCache, Kubernetes, MariaDB, MongoDB, NATS, OpenBAO, Postgres, Qdrant, RabbitMQ, Redis, VMDisk (top-level <code>storageClass</code>), FoundationDB (<code>storage.storageClass</code>), and Kafka (<code>kafka.storageClass</code>, <code>zookeeper.storageClass</code>) (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012131971" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2131" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2131/hovercard" href="https://github.com/cozystack/cozystack/pull/2131">#2131</a>).</p> </li> <li> <p><strong>[bucket] Add readonly S3 access credentials</strong>: Added a readonly <code>BucketAccessClass</code> to the SeaweedFS COSI chart and updated the bucket application to automatically provision two sets of S3 credentials per bucket: read-write (for UI) and readonly (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3991764593" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2105" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2105/hovercard" href="https://github.com/cozystack/cozystack/pull/2105">#2105</a>).</p> </li> <li> <p><strong>[dashboard] Hide sidebar on cluster-level pages when no tenant selected</strong>: Fixed broken URLs with double <code>//</code> on the main cluster page (before tenant selection) by clearing <code>CUSTOMIZATION_SIDEBAR_FALLBACK_ID</code> so no sidebar renders when no namespace is selected (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3994150452" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2106" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2106/hovercard" href="https://github.com/cozystack/cozystack/pull/2106">#2106</a>).</p> </li> <li> <p><strong>[cert-manager] Update cert-manager to v1.19.3</strong>: Upgraded cert-manager with new CRDs moved into a dedicated CRD package, added global <code>nodeSelector</code> and <code>hostUsers</code> (pod user-namespace isolation), and renamed <code>ServiceMonitor</code> targetPort default to <code>http-metrics</code> (<a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3958894976" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2070" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2070/hovercard" href="https://github.com/cozystack/cozystack/pull/2070">#2070</a>).</p> </li> <li> <p><strong>[dashboard] Add backupClasses dropdown to Plan/BackupJob forms</strong>: Replaced free-text input for <code>backupClass</code> field with an API-backed dropdown populated with available BackupClass resources, making it easier to select the correct backup target (<a href="https://github.com/androndo"><strong>@androndo</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3990707169" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2104" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2104/hovercard" href="https://github.com/cozystack/cozystack/pull/2104">#2104</a>).</p> </li> </ul> <h2>Fixes</h2> <ul> <li> <p><strong>[platform] Fix package name conversion in migration script</strong>: Fixed the <code>migrate-to-version-1.0.sh</code> script to correctly prepend the <code>cozystack.</code> prefix when converting <code>BUNDLE_DISABLE</code> and <code>BUNDLE_ENABLE</code> package name lists, ensuring packages are properly identified during the v0.41→v1.0 upgrade (<a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016964007" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2144" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2144/hovercard" href="https://github.com/cozystack/cozystack/pull/2144">#2144</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019195559" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2148" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2148/hovercard" href="https://github.com/cozystack/cozystack/pull/2148">#2148</a>).</p> </li> <li> <p><strong>[backups] Fix RBAC for backup controllers</strong>: Updated RBAC permissions for the backup strategy controller to support enhanced backup and restore capabilities, including Velero integration and status management (<a href="https://github.com/androndo"><strong>@androndo</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016969357" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2145" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2145/hovercard" href="https://github.com/cozystack/cozystack/pull/2145">#2145</a>).</p> </li> <li> <p><strong>[kubernetes] Set explicit MTU for Cilium in tenant clusters</strong>: Set explicit MTU 1350 for Cilium in KubeVirt-based tenant Kubernetes clusters to prevent packet drops caused by VXLAN encapsulation overhead. Cilium's auto-detection does not account for VXLAN overhead (50 bytes) when the VM interface inherits MTU 1400 from the parent OVN/Geneve overlay, causing intermittent connectivity issues and HTTP 499 errors under load (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018164609" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2147" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2147/hovercard" href="https://github.com/cozystack/cozystack/pull/2147">#2147</a>).</p> </li> <li> <p><strong>[platform] Prevent cozystack-version ConfigMap from deletion</strong>: Added resource protection annotations to prevent the <code>cozystack-version</code> ConfigMap from being accidentally deleted, improving platform stability (<a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999734579" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2112" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2112/hovercard" href="https://github.com/cozystack/cozystack/pull/2112">#2112</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000704664" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2114" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2114/hovercard" href="https://github.com/cozystack/cozystack/pull/2114">#2114</a>).</p> </li> <li> <p><strong>[installer] Add keep annotation to Namespace and update migration script</strong>: Added <code>helm.sh/resource-policy: keep</code> annotation to the <code>cozy-system</code> Namespace in the installer Helm chart to prevent Helm from deleting the namespace and all HelmReleases within it when the installer release is removed. The v1.0 migration script is also updated to annotate the namespace and <code>cozystack-version</code> ConfigMap before migration (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004443290" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2122" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2122/hovercard" href="https://github.com/cozystack/cozystack/pull/2122">#2122</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004450284" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2123" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2123/hovercard" href="https://github.com/cozystack/cozystack/pull/2123">#2123</a>).</p> </li> <li> <p><strong>[dashboard] Add FlowSchema to exempt BFF from API throttling</strong>: Added a <code>cozy-dashboard-exempt</code> FlowSchema to exempt the dashboard Back-End-for-Frontend service account from Kubernetes API Priority and Fairness throttling, preventing 429 errors under load (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004412520" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2121" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2121/hovercard" href="https://github.com/cozystack/cozystack/pull/2121">#2121</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004454364" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2124" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2124/hovercard" href="https://github.com/cozystack/cozystack/pull/2124">#2124</a>).</p> </li> <li> <p><strong>[platform] Suspend cozy-proxy if it conflicts with installer release during migration</strong>: Added a check in the v0.41→v1.0 migration script to detect and suspend the <code>cozy-proxy</code> HelmRelease when its <code>releaseName</code> is set to <code>cozystack</code>, which conflicts with the installer release and would cause <code>cozystack-operator</code> deletion during the upgrade (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010885572" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2128" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2128/hovercard" href="https://github.com/cozystack/cozystack/pull/2128">#2128</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011870369" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2130" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2130/hovercard" href="https://github.com/cozystack/cozystack/pull/2130">#2130</a>).</p> </li> <li> <p><strong>[platform] Fix off-by-one error in run-migrations script</strong>: Fixed a bug in the migration runner where the first required migration was always skipped due to an off-by-one error in the migration range calculation (<a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010460352" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2126" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2126/hovercard" href="https://github.com/cozystack/cozystack/pull/2126">#2126</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012251675" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2132" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2132/hovercard" href="https://github.com/cozystack/cozystack/pull/2132">#2132</a>).</p> </li> <li> <p><strong>[system] Fix Keycloak proxy configuration for v26.x</strong>: Replaced the deprecated <code>KC_PROXY=edge</code> environment variable with <code>KC_PROXY_HEADERS=xforwarded</code> and <code>KC_HTTP_ENABLED=true</code> in the Keycloak StatefulSet. <code>KC_PROXY</code> was removed in Keycloak 26.x, previously causing "Non-secure context detected" warnings and broken cookie handling behind a reverse proxy with TLS termination (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010248814" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2125" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2125/hovercard" href="https://github.com/cozystack/cozystack/pull/2125">#2125</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012433172" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2134" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2134/hovercard" href="https://github.com/cozystack/cozystack/pull/2134">#2134</a>).</p> </li> <li> <p><strong>[dashboard] Allow clearing instanceType field and preserve newlines in secret copy</strong>: Added <code>allowEmpty: true</code> to the <code>instanceType</code> field in the VMInstance form so users can explicitly clear it to use custom KubeVirt resources without a named instance type. Also fixed newline preservation when copying secrets with CMD+C (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012470909" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2135" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2135/hovercard" href="https://github.com/cozystack/cozystack/pull/2135">#2135</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012675906" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2137" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2137/hovercard" href="https://github.com/cozystack/cozystack/pull/2137">#2137</a>).</p> </li> <li> <p><strong>[dashboard] Restore stock-instance sidebars for namespace-level pages</strong>: Restored <code>stock-instance-api-form</code>, <code>stock-instance-api-table</code>, <code>stock-instance-builtin-form</code>, and <code>stock-instance-builtin-table</code> sidebar resources that were inadvertently removed in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3994150452" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2106" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2106/hovercard" href="https://github.com/cozystack/cozystack/pull/2106">#2106</a>. Without these sidebars, namespace-level pages such as Backup Plans rendered as empty pages (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012641085" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2136" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2136/hovercard" href="https://github.com/cozystack/cozystack/pull/2136">#2136</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012679669" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2138" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2138/hovercard" href="https://github.com/cozystack/cozystack/pull/2138">#2138</a>).</p> </li> </ul> <h2>System Configuration</h2> <ul> <li><strong>[platform] Disable private key rotation in CA certs</strong>: Set <code>rotationPolicy: Never</code> for all CA/root certificates used by system components (ingress-nginx, linstor, linstor-scheduler, seaweedfs, victoria-metrics-operator, kubeovn-webhook, lineage-controller-webhook, cozystack-api, etcd, linstor API/internal) to prevent trust chain problems when CA certificates are reissued (<a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999974421" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2113" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2113/hovercard" href="https://github.com/cozystack/cozystack/pull/2113">#2113</a>).</li> </ul> <h2>Development, Testing, and CI/CD</h2> <ul> <li><strong>[ci] Add debug improvements for CI tests</strong>: Added extra debug commands for Kubernetes startup diagnostics and improved error output in CI test runs (<a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999683820" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2111" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2111/hovercard" href="https://github.com/cozystack/cozystack/pull/2111">#2111</a>).</li> </ul> <h2>Documentation</h2> <ul> <li> <p><strong>[website] Add object storage guide (pools, buckets, users)</strong>: Added a comprehensive guide covering SeaweedFS object storage configuration including storage pools for tiered storage, bucket creation with access classes, per-user credential management, and credential rotation procedures (<a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010436587" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/438" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/438/hovercard" href="https://github.com/cozystack/website/pull/438">cozystack/website#438</a>).</p> </li> <li> <p><strong>[website] Add Build Your Own Platform (BYOP) guide</strong>: Added a new "Build Your Own Platform" guide and split the installation documentation into platform installation and BYOP sub-pages, with cross-references throughout the documentation (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004504234" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/437" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/437/hovercard" href="https://github.com/cozystack/website/pull/437">cozystack/website#437</a>).</p> </li> <li> <p><strong>[website] Add white labeling guide</strong>: Added a comprehensive guide for configuring white labeling (branding) in Cozystack v1, covering Dashboard fields (<code>titleText</code>, <code>footerText</code>, <code>tenantText</code>, <code>logoText</code>, <code>logoSvg</code>, <code>iconSvg</code>) and Keycloak fields (<code>brandName</code>, <code>brandHtmlName</code>). Includes SVG preparation workflow with theme-aware template variables and portable base64 encoding (<a href="https://github.com/lexfrei"><strong>@lexfrei</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021873446" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/441" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/441/hovercard" href="https://github.com/cozystack/website/pull/441">cozystack/website#441</a>).</p> </li> <li> <p><strong>[website] Actualize backup and recovery documentation</strong>: Reworked the backup and recovery docs to be user-focused, separating operator and tenant workflows. Added tenant-facing documentation for <code>BackupJob</code> and <code>Plan</code> resources and a new Velero administration guide for operators (<a href="https://github.com/androndo"><strong>@androndo</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999801601" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/434" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/434/hovercard" href="https://github.com/cozystack/website/pull/434">cozystack/website#434</a>).</p> </li> <li> <p><strong>[website] Add step to protect namespace before upgrading</strong>: Updated the cluster upgrade guide and v0.41→v1.0 migration guide with a required step to annotate the <code>cozy-system</code> namespace and <code>cozystack-version</code> ConfigMap with <code>helm.sh/resource-policy=keep</code> before running <code>helm upgrade</code> (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004443959" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/435" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/435/hovercard" href="https://github.com/cozystack/website/pull/435">cozystack/website#435</a>).</p> </li> <li> <p><strong>[website] Replace bundles documentation with variants</strong>: Renamed the "Bundles" documentation section to "Variants" to match current Cozystack terminology. Removed deprecated variants and added new ones: <code>default</code> and <code>isp-full-generic</code> (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996877662" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/433" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/433/hovercard" href="https://github.com/cozystack/website/pull/433">cozystack/website#433</a>).</p> </li> <li> <p><strong>[website] Fix component values override instructions</strong>: Corrected the component values override documentation to reflect current configuration patterns (<a href="https://github.com/kvaps"><strong>@kvaps</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004471538" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/436" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/436/hovercard" href="https://github.com/cozystack/website/pull/436">cozystack/website#436</a>).</p> </li> </ul> <h2>Breaking Changes &amp; Upgrade Notes</h2> <ul> <li><strong>[bucket] Bucket user model now requires explicit user definitions</strong>: The implicit default <code>BucketAccess</code> resource is no longer created automatically. Existing buckets that relied on a single auto-generated credential secret will need to define users explicitly in the <code>users</code> map after upgrading. Each user entry creates its own <code>BucketAccess</code> resource and credential secret (optionally with <code>readonly: true</code>). The COSI BucketClass suffix has also been renamed from <code>-worm</code> to <code>-lock</code> (<a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4002725018" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2119" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2119/hovercard" href="https://github.com/cozystack/cozystack/pull/2119">#2119</a>).</li> </ul> <h2>Contributors</h2> <p>We'd like to thank all contributors who made this release possible:</p> <ul> <li><a href="https://github.com/androndo"><strong>@androndo</strong></a></li> <li><a href="https://github.com/IvanHunters"><strong>@IvanHunters</strong></a></li> <li><a href="https://github.com/kvaps"><strong>@kvaps</strong></a></li> <li><a href="https://github.com/lexfrei"><strong>@lexfrei</strong></a></li> <li><a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a></li> <li><a href="https://github.com/sircthulhu"><strong>@sircthulhu</strong></a></li> </ul> <hr> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/cozystack/cozystack/compare/v1.0.0...v1.1.0"><tt>v1.0.0...v1.1.0</tt></a></p> <p><a href="https://sourceforge.net/projects/cozystack/files/v1.1.0/" rel="nofollow"><img src="https://camo.githubusercontent.com/efcf70acc9b360a1dfbb0a1e22bf7928f651e0a239bc50b7c410f89be3659de9/68747470733a2f2f612e6673646e2e636f6d2f636f6e2f6170702f73662d646f776e6c6f61642d627574746f6e" alt="Download cozystack" data-canonical-src="https://a.fsdn.com/con/app/sf-download-button" style="max-width: 100%;"></a></p> github-actions[bot] tag:github.com,2008:Repository/721858229/v1.0.3 2026-03-18T18:09:12Z v1.0.3 <h2>Fixes</h2> <ul> <li><strong>[platform] Fix package name conversion in migration script</strong>: Fixed the <code>migrate-to-version-1.0.sh</code> script to correctly prepend the <code>cozystack.</code> prefix when converting <code>BUNDLE_DISABLE</code> and <code>BUNDLE_ENABLE</code> package name lists, ensuring packages are properly identified during the v0.41→v1.0 upgrade (<a href="https://github.com/myasnikovdaniil"><strong>@myasnikovdaniil</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016964007" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2144" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2144/hovercard" href="https://github.com/cozystack/cozystack/pull/2144">#2144</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019195559" data-permission-text="Title is private" data-url="https://github.com/cozystack/cozystack/issues/2148" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/cozystack/pull/2148/hovercard" href="https://github.com/cozystack/cozystack/pull/2148">#2148</a>).</li> </ul> <h2>Documentation</h2> <ul> <li> <p><strong>[website] Add white labeling guide</strong>: Added a comprehensive guide for configuring white labeling (branding) in Cozystack v1, covering Dashboard fields (<code>titleText</code>, <code>footerText</code>, <code>tenantText</code>, <code>logoText</code>, <code>logoSvg</code>, <code>iconSvg</code>) and Keycloak fields (<code>brandName</code>, <code>brandHtmlName</code>). Includes SVG preparation workflow with theme-aware template variables, portable base64 encoding, and migration notes from the v0 ConfigMap approach (<a href="https://github.com/lexfrei"><strong>@lexfrei</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021873446" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/441" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/441/hovercard" href="https://github.com/cozystack/website/pull/441">cozystack/website#441</a>).</p> </li> <li> <p><strong>[website] Actualize backup and recovery documentation</strong>: Reworked the backup and recovery docs to be user-focused, separating operator and tenant workflows. Added tenant-facing documentation for <code>BackupJob</code> and <code>Plan</code> resources and status inspection commands, and added a new Velero administration guide for operators covering storage credentials and backup storage configuration (<a href="https://github.com/androndo"><strong>@androndo</strong></a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999801601" data-permission-text="Title is private" data-url="https://github.com/cozystack/website/issues/434" data-hovercard-type="pull_request" data-hovercard-url="/cozystack/website/pull/434/hovercard" href="https://github.com/cozystack/website/pull/434">cozystack/website#434</a>).</p> </li> </ul> <hr> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/cozystack/cozystack/compare/v1.0.2...v1.0.3"><tt>v1.0.2...v1.0.3</tt></a></p> <p><a href="https://sourceforge.net/projects/cozystack/files/v1.0.3/" rel="nofollow"><img src="https://camo.githubusercontent.com/efcf70acc9b360a1dfbb0a1e22bf7928f651e0a239bc50b7c410f89be3659de9/68747470733a2f2f612e6673646e2e636f6d2f636f6e2f6170702f73662d646f776e6c6f61642d627574746f6e" alt="Download cozystack" data-canonical-src="https://a.fsdn.com/con/app/sf-download-button" style="max-width: 100%;"></a></p> github-actions[bot] tag:github.com,2008:Repository/721858229/v0.41.10 2026-03-03T23:24:21Z v0.41.10 <p>Release v0.41.10 (<a class="issue-link js-issue-link" href="https://github.com/cozystack/cozystack/pull/2139">#2139</a>)</p> <p>This PR prepares the release `v0.41.10`.</p> github-actions[bot]