<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Gorizond Blog</title>
        <link>https://gorizond.github.io/blog</link>
        <description>Gorizond Blog</description>
        <lastBuildDate>Tue, 06 Jan 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Release 0.5.x: HelmOp deployment, safer names, and full GitOps]]></title>
            <link>https://gorizond.github.io/blog/release-0-5-x-helmop-names</link>
            <guid>https://gorizond.github.io/blog/release-0-5-x-helmop-names</guid>
            <pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[0.5.x updates gorizond-cluster, and we rolled it out through our full GitOps stack. This post also explains how fleet-gitops bootstraps the whole platform.]]></description>
            <content:encoded><![CDATA[<p>0.5.x updates gorizond-cluster, and we rolled it out through our full GitOps stack. This post also explains how <code>fleet-gitops</code> bootstraps the whole platform.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-changed-in-gorizond-cluster-05x">What changed in gorizond-cluster 0.5.x<a href="https://gorizond.github.io/blog/release-0-5-x-helmop-names#what-changed-in-gorizond-cluster-05x" class="hash-link" aria-label="Direct link to What changed in gorizond-cluster 0.5.x" title="Direct link to What changed in gorizond-cluster 0.5.x" translate="no">​</a></h3>
<ul>
<li class="">Switched Fleet deployment to HelmOp for headscale/k3s with automatic namespace creation.</li>
<li class="">Hardened name handling for downstream resources to fit DNS-1123 (max 63 chars) and avoid invalid Rancher names.</li>
<li class="">Added validation for gorizond cluster names to prevent invalid provisioning clusters.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="compatibility-and-cleanup-notes">Compatibility and cleanup notes<a href="https://gorizond.github.io/blog/release-0-5-x-helmop-names#compatibility-and-cleanup-notes" class="hash-link" aria-label="Direct link to Compatibility and cleanup notes" title="Direct link to Compatibility and cleanup notes" translate="no">​</a></h3>
<ul>
<li class="">0.5.x is backward compatible with clusters provisioned via 0.4.x.</li>
<li class="">The headscale/k3s cleanup format changed: instead of a Fleet Bundle we now use HelmOp.</li>
<li class="">When deleting older clusters, manually clean up the legacy Fleet Bundle. Ideally, replace old clusters fully to avoid mixed cleanup paths.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="gitops-backbone-fleet-gitops">GitOps backbone: fleet-gitops<a href="https://gorizond.github.io/blog/release-0-5-x-helmop-names#gitops-backbone-fleet-gitops" class="hash-link" aria-label="Direct link to GitOps backbone: fleet-gitops" title="Direct link to GitOps backbone: fleet-gitops" translate="no">​</a></h3>
<p>We use <a href="https://github.com/gorizond/fleet-gitops" target="_blank" rel="noopener noreferrer" class="">fleet-gitops</a> as a bootstrap repository for Fleet. It is a Helm chart that renders Fleet <code>GitRepo</code> and <code>HelmOp</code> resources from <code>values.yaml</code>, so one repo becomes the single source of truth for everything from the runtime cluster to core services and databases.</p>
<p>How it is structured today:</p>
<ul>
<li class=""><code>fleet-local</code> repos for platform control plane: <code>fleet-gorizond-cluster</code> (gorizond-cluster controller + charts), <code>fleet-workspace-controller</code>, <code>fleet-cert-manager</code>, <code>yookassa-url-generator</code>, <code>docusaurus</code>, <code>jspolicy-for-autoscaler</code>, and <code>fleet-clusters</code>.</li>
<li class=""><code>fleet-default</code> repos for shared runtime workloads: <code>fleet-cert-manager</code> and <code>fleet-gorizond-database</code>.</li>
<li class="">HelmOps for infra charts like <code>jspolicy</code> and <code>longhorn</code>.</li>
</ul>
<p>Operational details we rely on:</p>
<ul>
<li class="">Fleet targets clusters by labels like <code>&lt;name&gt;=enabled</code>, plus optional cluster selectors/groups for extra scoping.</li>
<li class=""><code>paths</code> allows pointing GitRepos directly at chart or policy subfolders.</li>
<li class="">Drift correction is enabled in the generated Fleet resources.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-upgrade">How to upgrade<a href="https://gorizond.github.io/blog/release-0-5-x-helmop-names#how-to-upgrade" class="hash-link" aria-label="Direct link to How to upgrade" title="Direct link to How to upgrade" translate="no">​</a></h3>
<ul>
<li class="">In your GitOps/Fleet bundle set <code>chartVersion</code> of <code>gorizond-cluster-controller</code> to <code>0.5.x</code> (tag <code>v0.5.x</code>).</li>
<li class="">If you manage infrastructure via <code>fleet-gitops</code>, update the controller bundle values there and let Fleet reconcile.</li>
<li class="">Roll out via Fleet/Helm and wait for <code>BundleDeployment</code> to reach <code>Ready</code> and controller pods to restart.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-verify">How to verify<a href="https://gorizond.github.io/blog/release-0-5-x-helmop-names#how-to-verify" class="hash-link" aria-label="Direct link to How to verify" title="Direct link to How to verify" translate="no">​</a></h3>
<ul>
<li class="">New headscale/k3s namespaces are created automatically by HelmOp for fresh clusters.</li>
<li class="">Creating a cluster with an invalid name is rejected before provisioning.</li>
<li class="">Controller logs show clean reconcile and Rancher resources use DNS-1123-safe names.</li>
</ul>]]></content:encoded>
            <category>Gorizond</category>
        </item>
        <item>
            <title><![CDATA[Release 0.4.x: safer billing and workspace deletes]]></title>
            <link>https://gorizond.github.io/blog/release-0-4-x-data-safety</link>
            <guid>https://gorizond.github.io/blog/release-0-4-x-data-safety</guid>
            <pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[In 0.3.0 we warned that deleting Billing or all Fleet workspaces could permanently wipe balances and even drop Fleet UI. The 0.4.x line fixes this with billing finalizers and safer Fleet resource handling.]]></description>
            <content:encoded><![CDATA[<p>In 0.3.0 we warned that deleting Billing or all Fleet workspaces could permanently wipe balances and even drop Fleet UI. The 0.4.x line fixes this with billing finalizers and safer Fleet resource handling.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-changed">What changed<a href="https://gorizond.github.io/blog/release-0-4-x-data-safety#what-changed" class="hash-link" aria-label="Direct link to What changed" title="Direct link to What changed" translate="no">​</a></h3>
<ul>
<li class="">v0.4.0 — Billing finalizer blocks deletion until balance is transferred; controller moves the remaining amount and keeps related Cluster resources consistent. This prevents losing funds when deleting billing.</li>
<li class="">v0.4.1 — Reworked FleetBundle reconcile: only targeted objects are updated, unrelated resources are left intact so Fleet UI/extension stays available when cleaning workspaces.</li>
<li class="">v0.4.2 — K3S/Headscale chart versions are configurable via environment; upgrade to the latest 0.4.2 patch is recommended.</li>
</ul>
<p>Full notes: <a href="https://github.com/gorizond/gorizond-cluster/releases/tag/v0.4.0" target="_blank" rel="noopener noreferrer" class="">v0.4.0</a>, <a href="https://github.com/gorizond/gorizond-cluster/releases/tag/v0.4.1" target="_blank" rel="noopener noreferrer" class="">v0.4.1</a>, <a href="https://github.com/gorizond/gorizond-cluster/releases/tag/v0.4.2" target="_blank" rel="noopener noreferrer" class="">v0.4.2</a>; diff <a href="https://github.com/gorizond/gorizond-cluster/compare/v0.3.0...v0.4.2" target="_blank" rel="noopener noreferrer" class="">v0.3.0…v0.4.2</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-upgrade">How to upgrade<a href="https://gorizond.github.io/blog/release-0-4-x-data-safety#how-to-upgrade" class="hash-link" aria-label="Direct link to How to upgrade" title="Direct link to How to upgrade" translate="no">​</a></h3>
<ul>
<li class="">In your GitOps/Fleet bundle set <code>chartVersion</code> of <code>gorizond-cluster-controller</code> to <code>0.4.2</code> (tag <code>v0.4.2</code>).</li>
<li class="">Roll out via Fleet/Helm and wait for <code>BundleDeployment</code> to reach <code>Ready</code> and controller pods to restart.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-verify">How to verify<a href="https://gorizond.github.io/blog/release-0-4-x-data-safety#how-to-verify" class="hash-link" aria-label="Direct link to How to verify" title="Direct link to How to verify" translate="no">​</a></h3>
<ul>
<li class="">When attempting to delete a Billing with balance, the resource stays <code>Terminating</code> until the controller transfers the balance; funds are preserved.</li>
<li class="">After deleting a test Fleet workspace, the Fleet extension in Rancher remains available; other workspaces can still be created/deleted.</li>
<li class="">Controller logs are clean for Billing/FleetBundle reconcile; probes/metrics stay green.</li>
</ul>]]></content:encoded>
            <category>Gorizond</category>
        </item>
        <item>
            <title><![CDATA[Release 0.3.0]]></title>
            <link>https://gorizond.github.io/blog/release-0.3.0</link>
            <guid>https://gorizond.github.io/blog/release-0.3.0</guid>
            <pubDate>Mon, 07 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Simple billing]]></description>
            <content:encoded><![CDATA[<p>Simple billing</p>
<p>Add billing CRDs and controller logic for handling billing events and cluster billing status updates. This includes:</p>
<ol>
<li class="">New CRDs for Billing and BillingEvent resources</li>
<li class="">Controller logic to:<!-- -->
<ul>
<li class="">Track cluster billing status</li>
<li class="">Generate periodic billing events</li>
<li class="">Process billing events to update balances</li>
</ul>
</li>
<li class="">Configuration options to enable/disable billing controller</li>
<li class="">Dependency updates and cleanup</li>
</ol>
<p>Current Issues:</p>
<ul>
<li class="">You can delete billing and lose the entire balance, including both positive and negative balances.</li>
<li class="">When deleting all fleet workspaces, the user loses the fleet UI, resulting in the inability to create or delete fleet workspaces anymore.</li>
</ul>]]></content:encoded>
            <category>Gorizond</category>
        </item>
        <item>
            <title><![CDATA[First Blog Post]]></title>
            <link>https://gorizond.github.io/blog/first-blog-post</link>
            <guid>https://gorizond.github.io/blog/first-blog-post</guid>
            <pubDate>Fri, 30 May 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Alpha version]]></description>
            <content:encoded><![CDATA[<p>Alpha version</p>
<p>Today the first alpha version of gorizond was released, cluster creation and version update are available, there may be many errors, but this is normal)</p>]]></content:encoded>
            <category>Gorizond</category>
        </item>
    </channel>
</rss>