<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://platz.io/news</id>
    <title>Platz Blog</title>
    <updated>2026-05-29T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://platz.io/news"/>
    <subtitle>Platz Blog</subtitle>
    <icon>https://platz.io/img/logo.svg</icon>
    <entry>
        <title type="html"><![CDATA[Version 0.7.0-beta.4 Released]]></title>
        <id>https://platz.io/news/v0.7.0-beta.4</id>
        <link href="https://platz.io/news/v0.7.0-beta.4"/>
        <updated>2026-05-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Fourth beta of the 0.7.0 line. Fixes a TLS crash on outbound HTTPS,]]></summary>
        <content type="html"><![CDATA[<p>Fourth beta of the 0.7.0 line. Fixes a TLS crash on outbound HTTPS,
restores the bots create/delete API across the OpenAPI schema and the
SDKs, and adds a new Python SDK — on top of beta.1–beta.3's OCI registry
support, local cluster mode, configurable database pool, and tunable
deployment credentials. Still beta — exercise it in non-production first.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tls-crypto-provider-fix-">TLS Crypto Provider Fix 🔒<a href="https://platz.io/news/v0.7.0-beta.4#tls-crypto-provider-fix-" class="hash-link" aria-label="Direct link to TLS Crypto Provider Fix 🔒" title="Direct link to TLS Crypto Provider Fix 🔒" translate="no">​</a></h2>
<p>With both <code>aws-lc-rs</code> and <code>ring</code> linked into rustls 0.23, neither is the
process default, so the first outbound TLS handshake panicked. <code>api</code>,
<code>chart-discovery</code>, and <code>status-updates</code> now install the <code>aws-lc-rs</code>
provider explicitly at startup, so HTTPS to registries, AWS, and OIDC
providers works reliably.</p>
<p>Thanks to <a href="https://github.com/ben-schreiber" target="_blank" rel="noopener noreferrer" class="">@ben-schreiber</a> for this
contribution!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bots-api-create-and-delete-restored-">Bots API: Create and Delete Restored 🤖<a href="https://platz.io/news/v0.7.0-beta.4#bots-api-create-and-delete-restored-" class="hash-link" aria-label="Direct link to Bots API: Create and Delete Restored 🤖" title="Direct link to Bots API: Create and Delete Restored 🤖" translate="no">​</a></h2>
<p>The bots collection exposed only list/get/update in its OpenAPI schema —
the <code>POST /bots</code> (<code>createBot</code>) and <code>DELETE /bots/{id}</code> (<code>deleteBot</code>)
operations, and the <code>NewBot</code> request body, were missing from the
generated schema and therefore from every generated SDK. The bots
collection now registers the full set, so <code>NewBot</code>, <code>createBot</code>, and
<code>deleteBot</code> are back in the OpenAPI document and the SDKs.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="python-sdk-">Python SDK 🐍<a href="https://platz.io/news/v0.7.0-beta.4#python-sdk-" class="hash-link" aria-label="Direct link to Python SDK 🐍" title="Direct link to Python SDK 🐍" translate="no">​</a></h2>
<p>There's now a Python SDK, published to PyPI as
<a href="https://pypi.org/project/platz/" target="_blank" rel="noopener noreferrer" class=""><code>platz</code></a>. Like the JavaScript SDK it's
generated from the backend's OpenAPI schema and versioned to match the
backend. Betas install with the pre-release flag:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">pip install --pre platz</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tunable-deployment-credentials-">Tunable Deployment Credentials 🔑<a href="https://platz.io/news/v0.7.0-beta.4#tunable-deployment-credentials-" class="hash-link" aria-label="Direct link to Tunable Deployment Credentials 🔑" title="Direct link to Tunable Deployment Credentials 🔑" translate="no">​</a></h2>
<p><code>k8s-agent</code> previously hard-coded the deployment credentials refresh
cadence to a fraction of a fixed token lifetime. Both numbers are now
operator-tunable via humantime durations:</p>
<ul>
<li class=""><code>PLATZ_DEPLOYMENT_CREDENTIALS_REFRESH_INTERVAL</code> — how often to refresh
per-deployment credentials. Default <code>20m</code>.</li>
<li class=""><code>PLATZ_DEPLOYMENT_CREDENTIALS_TOKEN_DURATION</code> — lifetime of issued
deployment credential tokens. Default <code>1h</code>.</li>
</ul>
<p>Both surface through the helm chart as per-instance values:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">k8sAgent</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">instances</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">deploymentCredentialsRefreshInterval</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 30m</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">deploymentCredentialsTokenDuration</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 2h</span><br></div></code></pre></div></div>
<p>The refresh loop also no longer aborts the whole batch on the first
deployment that fails to apply a credential — remaining deployments in
the same chunk now get their refresh attempt, and the error is
propagated after the chunk completes.</p>
<p>Thanks to <a href="https://github.com/ben-schreiber" target="_blank" rel="noopener noreferrer" class="">@ben-schreiber</a> for this
contribution!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="oci-registry-discovery-">OCI Registry Discovery 📦<a href="https://platz.io/news/v0.7.0-beta.4#oci-registry-discovery-" class="hash-link" aria-label="Direct link to OCI Registry Discovery 📦" title="Direct link to OCI Registry Discovery 📦" translate="no">​</a></h2>
<p><code>chart-discovery</code> can poll a generic OCI registry instead of listening
for ECR push events. Set <code>provider: oci</code> on a chart-discovery instance
and point <code>oci.registryUrl</code> at a Docker Distribution, zot, ghcr.io, or
any other registry that speaks the OCI distribution spec.</p>
<p>The poller walks the registry's <code>/v2/_catalog</code> and per-repo tag
listings, filters to helm-config-media-type artifacts, pulls each chart
with <code>helm pull</code>, and records it the same way the ECR provider does.
ECR continues to be the default, and existing deployments need no
changes.</p>
<p>New chart values:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">chartDiscovery</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">instances</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">provider</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> oci</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">oci</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">registryUrl</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://registry.platz.svc.cluster.local:5000"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">pollInterval</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 5s</span><br></div></code></pre></div></div>
<p>The <code>helm_registries</code> table gained a <code>provider</code> column to record which
backend a registry came from. The Helm pod's bootstrap script now skips
<code>aws ecr get-login-password</code> for non-ECR registries — they're expected
to be anonymously readable from the cluster running the pod.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="local-cluster-provider-mode-">Local Cluster Provider Mode 🏠<a href="https://platz.io/news/v0.7.0-beta.4#local-cluster-provider-mode-" class="hash-link" aria-label="Direct link to Local Cluster Provider Mode 🏠" title="Direct link to Local Cluster Provider Mode 🏠" translate="no">​</a></h2>
<p><code>k8s-agent</code> can register a single cluster from a kubeconfig context
instead of scanning AWS for EKS clusters. Set <code>provider: local</code> on a
k8s-agent instance and optionally pin a <code>localContext</code>; the agent
derives a synthetic <code>local:&lt;ctx&gt;</code> provider ID and writes a row through
the same code path EKS discovery uses.</p>
<p>This unblocks running Platz outside AWS, and is what powers the
single-command local dev stack in <code>platzio/dev</code>.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">k8sAgent</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">instances</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">provider</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> local</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">localContext</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> kind</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">platz</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">disableDeploymentCredentials</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><br></div></code></pre></div></div>
<p><code>PLATZ_DISABLE_DEPLOYMENT_CREDENTIALS</code> is readable from the environment
in addition to the CLI flag, so the chart values can flip it on without
a custom command line.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="configurable-database-connection-pool-">Configurable Database Connection Pool 🏊<a href="https://platz.io/news/v0.7.0-beta.4#configurable-database-connection-pool-" class="hash-link" aria-label="Direct link to Configurable Database Connection Pool 🏊" title="Direct link to Configurable Database Connection Pool 🏊" translate="no">​</a></h2>
<p>Every Platz pod that opens the database can have its connection pool
tuned via environment variables — <code>DB_POOL_MAX_SIZE</code> (default 50),
<code>DB_POOL_MIN_IDLE</code>, <code>DB_POOL_CONNECTION_TIMEOUT_SECS</code> (default 30),
<code>DB_POOL_IDLE_TIMEOUT_SECS</code> (default 600), and
<code>DB_POOL_MAX_LIFETIME_SECS</code> (default 1800). Database pool exhaustion is
now handled as a graceful error rather than a panic.</p>
<p>Surfaced through the helm chart under <code>database.pool</code> and the Terraform
module's <code>database_pool</code> variable:</p>
<div class="language-hcl codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hcl codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">module "platz" {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  source = "github.com/platzio/terraform-aws-platzio?ref=v0.7.0-beta.4/modules/main"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  # ...</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  database_pool = {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    max_size                = 200</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    connection_timeout_secs = 10</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<p>Thanks to <a href="https://github.com/joshimi" target="_blank" rel="noopener noreferrer" class="">@joshimi</a> for this contribution!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="build-and-release-pipeline-">Build and Release Pipeline ⚡<a href="https://platz.io/news/v0.7.0-beta.4#build-and-release-pipeline-" class="hash-link" aria-label="Direct link to Build and Release Pipeline ⚡" title="Direct link to Build and Release Pipeline ⚡" translate="no">​</a></h2>
<p>The backend Dockerfile was rewritten around
<a href="https://github.com/LukeMathWalker/cargo-chef" target="_blank" rel="noopener noreferrer" class="">cargo-chef</a> with
per-architecture musl static builds, and the release workflow now uses
per-arch native runners instead of QEMU. End-to-end backend release
time dropped from ~50 minutes to ~20. CI is split into separate test,
build, and release workflows, with image builds running in parallel
with tests and the release gated on tests passing.</p>
<p>The Dockerfile also gained a <code>dev</code> target stage so the same Dockerfile
serves local dev and release builds, matching how the helm chart and
terraform module already work. The frontend Dockerfile builds <code>dist/</code>
in its own multi-stage, multi-arch build, removing the implicit
dependency on a pre-built artifact and matching the backend's release
pattern.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="local-dev-lives-in-platziodev-️">Local Dev Lives in <code>platzio/dev</code> 🛠️<a href="https://platz.io/news/v0.7.0-beta.4#local-dev-lives-in-platziodev-%EF%B8%8F" class="hash-link" aria-label="Direct link to local-dev-lives-in-platziodev-️" title="Direct link to local-dev-lives-in-platziodev-️" translate="no">​</a></h2>
<p>The old <code>docker-compose.yaml</code>, <code>scripts/run-api.sh</code>, <code>scripts/run-db.sh</code>,
<code>scripts/run-oidc.sh</code>, and <code>scripts/container-build.sh</code> have been
removed from the backend repo. Local development now lives in
<a href="https://github.com/platzio/dev" target="_blank" rel="noopener noreferrer" class="">platzio/dev</a>, which orchestrates the
full stack via Tilt against a <code>kind</code> cluster running k8s-agent in local
provider mode and chart-discovery against a Docker Distribution
registry.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sdks-">SDKs 📚<a href="https://platz.io/news/v0.7.0-beta.4#sdks-" class="hash-link" aria-label="Direct link to SDKs 📚" title="Direct link to SDKs 📚" translate="no">​</a></h2>
<p>All three SDKs are published at <code>0.7.0-beta.4</code>, regenerated against this
release's OpenAPI schema (so they pick up the restored bots
create/delete operations):</p>
<ul>
<li class=""><code>platz-sdk</code> (<a href="https://crates.io/crates/platz-sdk" target="_blank" rel="noopener noreferrer" class="">crates.io</a>) — Rust.</li>
<li class=""><code>@platzio/sdk</code> (<a href="https://www.npmjs.com/package/@platzio/sdk" target="_blank" rel="noopener noreferrer" class="">npm</a>) —
TypeScript.</li>
<li class=""><code>platz</code> (<a href="https://pypi.org/project/platz/" target="_blank" rel="noopener noreferrer" class="">PyPI</a>) — Python, new in
this cycle. PyPI normalizes the version to <code>0.7.0b4</code>; install betas
with <code>pip install --pre platz</code>.</li>
</ul>
<p>The Rust SDK's <code>HelmRegistry</code> carries the <code>provider</code> field, and the
collections that had drifted out of it — <code>bots</code>, <code>bot_tokens</code>,
<code>deployment_permissions</code>, <code>env_user_permissions</code>, <code>helm_tag_formats</code> —
remain exposed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-chart-">Helm Chart ⎈<a href="https://platz.io/news/v0.7.0-beta.4#helm-chart-" class="hash-link" aria-label="Direct link to Helm Chart ⎈" title="Direct link to Helm Chart ⎈" translate="no">​</a></h2>
<p>Images bumped to <code>v0.7.0-beta.4</code> (backend and frontend; the helm base
image stays at <code>v9</code>). The chart's backend dependency <code>platz-chart-ext</code>
moved to <code>0.7.1</code> (utoipa 5, <code>juspay_jsonlogic</code>). The chart is published
with <code>artifacthub.io/prerelease: true</code>, so ArtifactHub flags it as a
pre-release. Every Rust pod (<code>api</code>, <code>chart-discovery</code>, <code>k8s-agent</code>,
<code>resource-sync</code>, <code>status-updates</code>) honors a per-pod <code>extraEnv</code> list for
injecting arbitrary env vars without forking the chart.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.7.0-beta.2 Released]]></title>
        <id>https://platz.io/news/v0.7.0-beta.2</id>
        <link href="https://platz.io/news/v0.7.0-beta.2"/>
        <updated>2026-05-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Second beta of the 0.7.0 line. Adds tunable cadence for k8s-agent's]]></summary>
        <content type="html"><![CDATA[<p>Second beta of the 0.7.0 line. Adds tunable cadence for k8s-agent's
deployment credentials and a more resilient refresh loop, on top of
beta.1's OCI registry support, local cluster mode, and configurable
database pool. Still beta — exercise it in non-production first.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tunable-deployment-credentials-">Tunable Deployment Credentials 🔑<a href="https://platz.io/news/v0.7.0-beta.2#tunable-deployment-credentials-" class="hash-link" aria-label="Direct link to Tunable Deployment Credentials 🔑" title="Direct link to Tunable Deployment Credentials 🔑" translate="no">​</a></h2>
<p><code>k8s-agent</code> previously hard-coded the deployment credentials refresh
cadence to a fraction of a fixed token lifetime. Both numbers are now
operator-tunable via humantime durations:</p>
<ul>
<li class=""><code>PLATZ_DEPLOYMENT_CREDENTIALS_REFRESH_INTERVAL</code> — how often to refresh
per-deployment credentials. Default <code>20m</code>.</li>
<li class=""><code>PLATZ_DEPLOYMENT_CREDENTIALS_TOKEN_DURATION</code> — lifetime of issued
deployment credential tokens. Default <code>1h</code>.</li>
</ul>
<p>Both surface through the helm chart as per-instance values:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">k8sAgent</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">instances</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">deploymentCredentialsRefreshInterval</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 30m</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">deploymentCredentialsTokenDuration</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 2h</span><br></div></code></pre></div></div>
<p>The refresh loop also no longer aborts the whole batch on the first
deployment that fails to apply a credential — remaining deployments in
the same chunk now get their refresh attempt, and the error is
propagated after the chunk completes.</p>
<p>Thanks to <a href="https://github.com/ben-schreiber" target="_blank" rel="noopener noreferrer" class="">@ben-schreiber</a> for this
contribution!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="oci-registry-discovery-">OCI Registry Discovery 📦<a href="https://platz.io/news/v0.7.0-beta.2#oci-registry-discovery-" class="hash-link" aria-label="Direct link to OCI Registry Discovery 📦" title="Direct link to OCI Registry Discovery 📦" translate="no">​</a></h2>
<p><code>chart-discovery</code> can poll a generic OCI registry instead of listening
for ECR push events. Set <code>provider: oci</code> on a chart-discovery instance
and point <code>oci.registryUrl</code> at a Docker Distribution, zot, ghcr.io, or
any other registry that speaks the OCI distribution spec.</p>
<p>The poller walks the registry's <code>/v2/_catalog</code> and per-repo tag
listings, filters to helm-config-media-type artifacts, pulls each chart
with <code>helm pull</code>, and records it the same way the ECR provider does.
ECR continues to be the default, and existing deployments need no
changes.</p>
<p>New chart values:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">chartDiscovery</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">instances</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">provider</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> oci</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">oci</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">registryUrl</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://registry.platz.svc.cluster.local:5000"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">pollInterval</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 5s</span><br></div></code></pre></div></div>
<p>The <code>helm_registries</code> table gained a <code>provider</code> column to record which
backend a registry came from. The Helm pod's bootstrap script now skips
<code>aws ecr get-login-password</code> for non-ECR registries — they're expected
to be anonymously readable from the cluster running the pod.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="local-cluster-provider-mode-">Local Cluster Provider Mode 🏠<a href="https://platz.io/news/v0.7.0-beta.2#local-cluster-provider-mode-" class="hash-link" aria-label="Direct link to Local Cluster Provider Mode 🏠" title="Direct link to Local Cluster Provider Mode 🏠" translate="no">​</a></h2>
<p><code>k8s-agent</code> can register a single cluster from a kubeconfig context
instead of scanning AWS for EKS clusters. Set <code>provider: local</code> on a
k8s-agent instance and optionally pin a <code>localContext</code>; the agent
derives a synthetic <code>local:&lt;ctx&gt;</code> provider ID and writes a row through
the same code path EKS discovery uses.</p>
<p>This unblocks running Platz outside AWS, and is what powers the
single-command local dev stack in <code>platzio/dev</code>.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">k8sAgent</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">instances</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">provider</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> local</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">localContext</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> kind</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">platz</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">disableDeploymentCredentials</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><br></div></code></pre></div></div>
<p><code>PLATZ_DISABLE_DEPLOYMENT_CREDENTIALS</code> is readable from the environment
in addition to the CLI flag, so the chart values can flip it on without
a custom command line.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="configurable-database-connection-pool-">Configurable Database Connection Pool 🏊<a href="https://platz.io/news/v0.7.0-beta.2#configurable-database-connection-pool-" class="hash-link" aria-label="Direct link to Configurable Database Connection Pool 🏊" title="Direct link to Configurable Database Connection Pool 🏊" translate="no">​</a></h2>
<p>Every Platz pod that opens the database can have its connection pool
tuned via environment variables — <code>DB_POOL_MAX_SIZE</code> (default 50),
<code>DB_POOL_MIN_IDLE</code>, <code>DB_POOL_CONNECTION_TIMEOUT_SECS</code> (default 30),
<code>DB_POOL_IDLE_TIMEOUT_SECS</code> (default 600), and
<code>DB_POOL_MAX_LIFETIME_SECS</code> (default 1800). Database pool exhaustion is
now handled as a graceful error rather than a panic.</p>
<p>Surfaced through the helm chart under <code>database.pool</code> and the Terraform
module's <code>database_pool</code> variable:</p>
<div class="language-hcl codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hcl codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">module "platz" {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  source = "github.com/platzio/terraform-aws-platzio?ref=v0.7.0-beta.2/modules/main"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  # ...</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  database_pool = {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    max_size                = 200</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    connection_timeout_secs = 10</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<p>Thanks to <a href="https://github.com/joshimi" target="_blank" rel="noopener noreferrer" class="">@joshimi</a> for this contribution!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="build-and-release-pipeline-">Build and Release Pipeline ⚡<a href="https://platz.io/news/v0.7.0-beta.2#build-and-release-pipeline-" class="hash-link" aria-label="Direct link to Build and Release Pipeline ⚡" title="Direct link to Build and Release Pipeline ⚡" translate="no">​</a></h2>
<p>The backend Dockerfile was rewritten around
<a href="https://github.com/LukeMathWalker/cargo-chef" target="_blank" rel="noopener noreferrer" class="">cargo-chef</a> with
per-architecture musl static builds, and the release workflow now uses
per-arch native runners instead of QEMU. End-to-end backend release
time dropped from ~50 minutes to ~20.</p>
<p>The Dockerfile also gained a <code>dev</code> target stage so the same Dockerfile
serves local dev and release builds, matching how the helm chart and
terraform module already work. The release workflow now runs image
builds in parallel with tests and only publishes if tests pass.</p>
<p>The frontend Dockerfile builds <code>dist/</code> in its own multi-stage,
multi-arch build, removing the implicit dependency on a pre-built
artifact and matching the backend's release pattern.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="local-dev-lives-in-platziodev-️">Local Dev Lives in <code>platzio/dev</code> 🛠️<a href="https://platz.io/news/v0.7.0-beta.2#local-dev-lives-in-platziodev-%EF%B8%8F" class="hash-link" aria-label="Direct link to local-dev-lives-in-platziodev-️" title="Direct link to local-dev-lives-in-platziodev-️" translate="no">​</a></h2>
<p>The old <code>docker-compose.yaml</code>, <code>scripts/run-api.sh</code>, <code>scripts/run-db.sh</code>,
<code>scripts/run-oidc.sh</code>, and <code>scripts/container-build.sh</code> have been
removed from the backend repo. Local development now lives in
<a href="https://github.com/platzio/dev" target="_blank" rel="noopener noreferrer" class="">platzio/dev</a>, which orchestrates the
full stack via Tilt against a <code>kind</code> cluster running k8s-agent in local
provider mode and chart-discovery against a Docker Distribution
registry.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sdks-">SDKs 📚<a href="https://platz.io/news/v0.7.0-beta.2#sdks-" class="hash-link" aria-label="Direct link to SDKs 📚" title="Direct link to SDKs 📚" translate="no">​</a></h2>
<p><code>platz-sdk</code> (<a href="https://crates.io/crates/platz-sdk" target="_blank" rel="noopener noreferrer" class="">crates.io</a>) bumped to
<code>0.7.0-beta.2</code>. The HelmRegistry struct gained a <code>provider</code> field, and
five collections that had drifted out of the SDK — <code>bots</code>, <code>bot_tokens</code>,
<code>deployment_permissions</code>, <code>env_user_permissions</code>, <code>helm_tag_formats</code> —
are now exposed.</p>
<p><code>@platzio/sdk</code> (<a href="https://www.npmjs.com/package/@platzio/sdk" target="_blank" rel="noopener noreferrer" class="">npm</a>)
bumped to <code>0.7.0-beta.2</code>, regenerated from the backend's OpenAPI
schema.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-chart-">Helm Chart ⎈<a href="https://platz.io/news/v0.7.0-beta.2#helm-chart-" class="hash-link" aria-label="Direct link to Helm Chart ⎈" title="Direct link to Helm Chart ⎈" translate="no">​</a></h2>
<p>Image bumped to <code>v0.7.0-beta.2</code>. The chart is published with
<code>artifacthub.io/prerelease: true</code>, so ArtifactHub flags it as a
pre-release.</p>
<p>In addition to the settings called out above, every Rust pod
(<code>api</code>, <code>chart-discovery</code>, <code>k8s-agent</code>, <code>resource-sync</code>,
<code>status-updates</code>) honors a per-pod <code>extraEnv</code> list for injecting
arbitrary env vars without forking the chart. The <code>resource-sync</code>
deployment correctly honors <code>resourceSync.replicaCount</code> — previously it
was reading a non-existent top-level <code>replicaCount</code>.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Removing legacy chart versions from the Helm index]]></title>
        <id>https://platz.io/news/remove-legacy-chart-versions</id>
        <link href="https://platz.io/news/remove-legacy-chart-versions"/>
        <updated>2026-05-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you've been getting helm repo update warnings — or if you watch our]]></summary>
        <content type="html"><![CDATA[<p>If you've been getting <code>helm repo update</code> warnings — or if you watch our
ArtifactHub feed — you may have noticed errors about a missing Bitnami
Postgres image:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">error scanning image docker.io/bitnami/postgresql:14.5.0-debian-11-r35:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">image not found (package platzio:0.6.2)</span><br></div></code></pre></div></div>
<p>We've removed the entries that triggered it.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-happened">What happened<a href="https://platz.io/news/remove-legacy-chart-versions#what-happened" class="hash-link" aria-label="Direct link to What happened" title="Direct link to What happened" translate="no">​</a></h2>
<p>Platz chart versions up to and including <code>0.6.2</code> declared a dependency on
the <a href="https://github.com/bitnami/charts" target="_blank" rel="noopener noreferrer" class="">Bitnami PostgreSQL subchart</a>, which
in turn pulled <code>docker.io/bitnami/postgresql:14.5.0-debian-11-r35</code>. In late
2025 Bitnami moved their historical image tags to a separate
<code>bitnamilegacy</code> namespace and deleted them from <code>docker.io/bitnami/*</code>. The
Helm chart still references the old path, so scanners (and anyone trying
a fresh install of an old version) get a 404.</p>
<p>The dependency itself was removed in <code>v0.6.3</code>. The reasoning is in the
<a class="" href="https://platz.io/news/v0.6.8">v0.6.8 release notes</a> and on the
<a class="" href="https://platz.io/docs/guide/install/database">Database</a> page: operators get full control
over the database, and Platz doesn't ship with a specific database chart.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-changed">What changed<a href="https://platz.io/news/remove-legacy-chart-versions#what-changed" class="hash-link" aria-label="Direct link to What changed" title="Direct link to What changed" translate="no">​</a></h2>
<p>We removed entries <code>&lt;= 0.6.2</code> from the Helm repository
<a href="https://platzio.github.io/helm-charts/index.yaml" target="_blank" rel="noopener noreferrer" class="">index</a>. The repository
now serves <code>0.6.3</code> through <code>0.6.8</code>. That's enough history to roll back
across the post-Bitnami removal; everything older was tied to the broken
dependency anyway.</p>
<p><strong>The release tarballs themselves are untouched</strong> — they still live on
<a href="https://github.com/platzio/helm-charts/releases" target="_blank" rel="noopener noreferrer" class="">GitHub Releases</a>. If
you've pinned a specific older version by URL in your own automation, it
will continue to resolve.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-you-should-do">What you should do<a href="https://platz.io/news/remove-legacy-chart-versions#what-you-should-do" class="hash-link" aria-label="Direct link to What you should do" title="Direct link to What you should do" translate="no">​</a></h2>
<ul>
<li class=""><strong>If you're on <code>0.6.3</code> or later:</strong> nothing. You won't see any change.</li>
<li class=""><strong>If you're still on <code>0.6.2</code> or earlier:</strong> plan an upgrade to the
latest <code>0.6.x</code>. Provision Postgres yourself (RDS, Cloud SQL,
self-hosted — see the
<a class="" href="https://platz.io/docs/guide/install/database">Database</a> page), populate the
<code>postgres-creds</code> secret, and bump the chart. The schema migration runs
automatically on API pod startup.</li>
<li class=""><strong>If you depended on the bundled Bitnami subchart in production:</strong>
same as above. The bundled subchart was never intended for serious
production use, and it's now structurally broken; migrating off it is
the path forward.</li>
</ul>]]></content>
        <category label="Maintenance" term="Maintenance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.7.0-beta.1 Released]]></title>
        <id>https://platz.io/news/v0.7.0-beta.1</id>
        <link href="https://platz.io/news/v0.7.0-beta.1"/>
        <updated>2026-05-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[First beta of the 0.7.0 line. Brings OCI registry support to]]></summary>
        <content type="html"><![CDATA[<p>First beta of the 0.7.0 line. Brings OCI registry support to
chart-discovery, a local cluster mode to k8s-agent, and a configurable
database connection pool. Mark it beta — exercise it in non-production
first.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="oci-registry-discovery-">OCI Registry Discovery 📦<a href="https://platz.io/news/v0.7.0-beta.1#oci-registry-discovery-" class="hash-link" aria-label="Direct link to OCI Registry Discovery 📦" title="Direct link to OCI Registry Discovery 📦" translate="no">​</a></h2>
<p><code>chart-discovery</code> can now poll a generic OCI registry instead of
listening for ECR push events. Set <code>provider: oci</code> on a chart-discovery
instance and point <code>oci.registryUrl</code> at a Docker Distribution, zot,
ghcr.io, or any other registry that speaks the OCI distribution spec.</p>
<p>The poller walks the registry's <code>/v2/_catalog</code> and per-repo tag
listings, filters to helm-config-media-type artifacts, pulls each chart
with <code>helm pull</code>, and records it the same way the ECR provider does.
ECR continues to be the default, and existing deployments need no
changes.</p>
<p>New chart values:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">chartDiscovery</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">instances</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">provider</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> oci</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">oci</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">registryUrl</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://registry.platz.svc.cluster.local:5000"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">pollInterval</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 5s</span><br></div></code></pre></div></div>
<p>The <code>helm_registries</code> table gained a <code>provider</code> column to record which
backend a registry came from. The Helm pod's bootstrap script now skips
<code>aws ecr get-login-password</code> for non-ECR registries — they're expected
to be anonymously readable from the cluster running the pod.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="local-cluster-provider-mode-">Local Cluster Provider Mode 🏠<a href="https://platz.io/news/v0.7.0-beta.1#local-cluster-provider-mode-" class="hash-link" aria-label="Direct link to Local Cluster Provider Mode 🏠" title="Direct link to Local Cluster Provider Mode 🏠" translate="no">​</a></h2>
<p><code>k8s-agent</code> can now register a single cluster from a kubeconfig context
instead of scanning AWS for EKS clusters. Set <code>provider: local</code> on a
k8s-agent instance and optionally pin a <code>localContext</code>; the agent
derives a synthetic <code>local:&lt;ctx&gt;</code> provider ID and writes a row through
the same code path EKS discovery uses.</p>
<p>This unblocks running Platz outside AWS, and is what powers the
single-command local dev stack in <code>platzio/dev</code>.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">k8sAgent</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">instances</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">provider</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> local</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">localContext</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> kind</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">platz</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">disableDeploymentCredentials</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><br></div></code></pre></div></div>
<p><code>PLATZ_DISABLE_DEPLOYMENT_CREDENTIALS</code> is now readable from the
environment in addition to the CLI flag, so the chart values can flip
it on without a custom command line.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="configurable-database-connection-pool-">Configurable Database Connection Pool 🏊<a href="https://platz.io/news/v0.7.0-beta.1#configurable-database-connection-pool-" class="hash-link" aria-label="Direct link to Configurable Database Connection Pool 🏊" title="Direct link to Configurable Database Connection Pool 🏊" translate="no">​</a></h2>
<p>Every Platz pod that opens the database can now have its connection
pool tuned via environment variables — <code>DB_POOL_MAX_SIZE</code> (default 50),
<code>DB_POOL_MIN_IDLE</code>, <code>DB_POOL_CONNECTION_TIMEOUT_SECS</code> (default 30),
<code>DB_POOL_IDLE_TIMEOUT_SECS</code> (default 600), and
<code>DB_POOL_MAX_LIFETIME_SECS</code> (default 1800). Database pool exhaustion is
now handled as a graceful error rather than a panic.</p>
<p>Surfaced through the helm chart under <code>database.pool</code> and the Terraform
module's <code>database_pool</code> variable:</p>
<div class="language-hcl codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hcl codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">module "platz" {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  source = "github.com/platzio/terraform-aws-platzio?ref=v0.7.0-beta.1/modules/main"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  # ...</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  database_pool = {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    max_size                = 200</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    connection_timeout_secs = 10</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<p>Thanks to <a href="https://github.com/joshimi" target="_blank" rel="noopener noreferrer" class="">@joshimi</a> for this contribution!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="build-and-release-pipeline-">Build and Release Pipeline ⚡<a href="https://platz.io/news/v0.7.0-beta.1#build-and-release-pipeline-" class="hash-link" aria-label="Direct link to Build and Release Pipeline ⚡" title="Direct link to Build and Release Pipeline ⚡" translate="no">​</a></h2>
<p>The backend Dockerfile was rewritten around
<a href="https://github.com/LukeMathWalker/cargo-chef" target="_blank" rel="noopener noreferrer" class="">cargo-chef</a> with
per-architecture musl static builds, and the release workflow now uses
per-arch native runners instead of QEMU. End-to-end backend release
time dropped from ~50 minutes to ~20.</p>
<p>The Dockerfile also gained a <code>dev</code> target stage so the same Dockerfile
serves local dev and release builds, matching how the helm chart and
terraform module already work.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="local-dev-lives-in-platziodev-️">Local Dev Lives in <code>platzio/dev</code> 🛠️<a href="https://platz.io/news/v0.7.0-beta.1#local-dev-lives-in-platziodev-%EF%B8%8F" class="hash-link" aria-label="Direct link to local-dev-lives-in-platziodev-️" title="Direct link to local-dev-lives-in-platziodev-️" translate="no">​</a></h2>
<p>The old <code>docker-compose.yaml</code>, <code>scripts/run-api.sh</code>, <code>scripts/run-db.sh</code>,
<code>scripts/run-oidc.sh</code>, and <code>scripts/container-build.sh</code> have been
removed from the backend repo. Local development now lives in
<a href="https://github.com/platzio/dev" target="_blank" rel="noopener noreferrer" class="">platzio/dev</a>, which orchestrates the
full stack via Tilt against a <code>kind</code> cluster running k8s-agent in local
provider mode and chart-discovery against a Docker Distribution
registry.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sdks-">SDKs 📚<a href="https://platz.io/news/v0.7.0-beta.1#sdks-" class="hash-link" aria-label="Direct link to SDKs 📚" title="Direct link to SDKs 📚" translate="no">​</a></h2>
<p><code>platz-sdk</code> (<a href="https://crates.io/crates/platz-sdk" target="_blank" rel="noopener noreferrer" class="">crates.io</a>) bumped to
<code>0.7.0-beta.1</code>. The HelmRegistry struct gained a <code>provider</code> field, and
five collections that had drifted out of the SDK — <code>bots</code>, <code>bot_tokens</code>,
<code>deployment_permissions</code>, <code>env_user_permissions</code>, <code>helm_tag_formats</code> —
are now exposed.</p>
<p><code>@platzio/sdk</code> (<a href="https://www.npmjs.com/package/@platzio/sdk" target="_blank" rel="noopener noreferrer" class="">npm</a>)
bumped to <code>0.7.0-beta.1</code>, regenerated from the backend's OpenAPI
schema.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-chart-">Helm Chart ⎈<a href="https://platz.io/news/v0.7.0-beta.1#helm-chart-" class="hash-link" aria-label="Direct link to Helm Chart ⎈" title="Direct link to Helm Chart ⎈" translate="no">​</a></h2>
<p>Image bumped to <code>v0.7.0-beta.1</code>. The chart is published with
<code>artifacthub.io/prerelease: true</code>, so ArtifactHub flags it as a
pre-release.</p>
<p>In addition to the settings called out above, every Rust pod
(<code>api</code>, <code>chart-discovery</code>, <code>k8s-agent</code>, <code>resource-sync</code>,
<code>status-updates</code>) now honors a per-pod <code>extraEnv</code> list for injecting
arbitrary env vars without forking the chart. The <code>resource-sync</code>
deployment also now correctly honors <code>resourceSync.replicaCount</code> —
previously it was reading a non-existent top-level <code>replicaCount</code>.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.6.8 Released]]></title>
        <id>https://platz.io/news/v0.6.8</id>
        <link href="https://platz.io/news/v0.6.8"/>
        <updated>2025-09-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release contains internal improvements.]]></summary>
        <content type="html"><![CDATA[<p>This release contains internal improvements.</p>
<p>Versions 0.6.3 thru 0.6.7 are unstable intermediate releases and should not be used.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="alpine-base-image">Alpine Base Image<a href="https://platz.io/news/v0.6.8#alpine-base-image" class="hash-link" aria-label="Direct link to Alpine Base Image" title="Direct link to Alpine Base Image" translate="no">​</a></h2>
<p>The backend image is now based on Alpine to reduce the number of unnecessary dependencies and image size.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="removed-postgres-chart-dependency">Removed Postgres Chart Dependency<a href="https://platz.io/news/v0.6.8#removed-postgres-chart-dependency" class="hash-link" aria-label="Direct link to Removed Postgres Chart Dependency" title="Direct link to Removed Postgres Chart Dependency" translate="no">​</a></h2>
<p>Following <a href="https://github.com/bitnami/charts/issues/35164" target="_blank" rel="noopener noreferrer" class="">Bitnami's deprecation notice</a> the Postgres dependency in old charts can't be used anymore.</p>
<p>Please install Postgres separately from Platz.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.6.2 Released]]></title>
        <id>https://platz.io/news/v0.6.2</id>
        <link href="https://platz.io/news/v0.6.2"/>
        <updated>2025-08-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This version fixes missing rustls provider initialization.]]></summary>
        <content type="html"><![CDATA[<p>This version fixes missing <code>rustls</code> provider initialization.</p>
]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.6.0 Released]]></title>
        <id>https://platz.io/news/v0.6.0</id>
        <link href="https://platz.io/news/v0.6.0"/>
        <updated>2025-08-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This version includes new features and some improvements.]]></summary>
        <content type="html"><![CDATA[<p>This version includes new features and some improvements.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bot-users-">Bot Users 🤖<a href="https://platz.io/news/v0.6.0#bot-users-" class="hash-link" aria-label="Direct link to Bot Users 🤖" title="Direct link to Bot Users 🤖" translate="no">​</a></h2>
<p>This new type of user can be created by admins, and have admins manage their API tokens.</p>
<p>Bot users can be used for automations, and have their own identity displayed in deployment task history.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="id-based-deployment-kinds">ID-based Deployment Kinds<a href="https://platz.io/news/v0.6.0#id-based-deployment-kinds" class="hash-link" aria-label="Direct link to ID-based Deployment Kinds" title="Direct link to ID-based Deployment Kinds" translate="no">​</a></h2>
<p>Deployment kinds are now stored in their own collection, instead of being a plain string.</p>
<p>This would allow for implementing renames of kinds in the future.</p>
<p>⚠️ This change will break frontend paths, as paths now include the kind ID (a UUID) instead of the plain kind name.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="removed-api-v1">Removed API v1<a href="https://platz.io/news/v0.6.0#removed-api-v1" class="hash-link" aria-label="Direct link to Removed API v1" title="Direct link to Removed API v1" translate="no">​</a></h2>
<p>API v1 lacked authentication, and was only enabled with an opt-in for past users of Platz.</p>
<p><code>/api/v1</code> is now removed completely.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.5.2 Released]]></title>
        <id>https://platz.io/news/v0.5.2</id>
        <link href="https://platz.io/news/v0.5.2"/>
        <updated>2023-08-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This version includes minor improvements.]]></summary>
        <content type="html"><![CDATA[<p>This version includes minor improvements.</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="added-env_id-filter-for-apiv2deployments">Added env_id filter for /api/v2/deployments<a href="https://platz.io/news/v0.5.2#added-env_id-filter-for-apiv2deployments" class="hash-link" aria-label="Direct link to Added env_id filter for /api/v2/deployments" title="Direct link to Added env_id filter for /api/v2/deployments" translate="no">​</a></h3>
<p><em>Thanks @ayalash for this contribution!</em></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="users-can-now-be-deactivated">Users can now be deactivated<a href="https://platz.io/news/v0.5.2#users-can-now-be-deactivated" class="hash-link" aria-label="Direct link to Users can now be deactivated" title="Direct link to Users can now be deactivated" translate="no">​</a></h3>
<p><em>Thanks @ayalash for this contribution!</em></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="env-deletion">Env deletion<a href="https://platz.io/news/v0.5.2#env-deletion" class="hash-link" aria-label="Direct link to Env deletion" title="Direct link to Env deletion" translate="no">​</a></h3>
<p><em>Thanks @ayalash for this contribution!</em></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-showif-options-for-ui-schema-inputs">New showIf options for UI schema inputs<a href="https://platz.io/news/v0.5.2#new-showif-options-for-ui-schema-inputs" class="hash-link" aria-label="Direct link to New showIf options for UI schema inputs" title="Direct link to New showIf options for UI schema inputs" translate="no">​</a></h3>
<p><em>Thanks @pyros82 for this contribution!</em></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="pagination-for-helm-registry-page-and-deployment-task-history">Pagination for Helm registry page and deployment task history<a href="https://platz.io/news/v0.5.2#pagination-for-helm-registry-page-and-deployment-task-history" class="hash-link" aria-label="Direct link to Pagination for Helm registry page and deployment task history" title="Direct link to Pagination for Helm registry page and deployment task history" translate="no">​</a></h3>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.5.0 Released]]></title>
        <id>https://platz.io/news/v0.5.0</id>
        <link href="https://platz.io/news/v0.5.0"/>
        <updated>2023-07-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This version includes new features and two deprecation notices, please see the last section for more details.]]></summary>
        <content type="html"><![CDATA[<p>This version includes new features and two deprecation notices, please see the last section for more details.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="dark-mode-️----">Dark mode: 🕸️ + 🌚 = 🎉<a href="https://platz.io/news/v0.5.0#dark-mode-%EF%B8%8F----" class="hash-link" aria-label="Direct link to Dark mode: 🕸️ + 🌚 = 🎉" title="Direct link to Dark mode: 🕸️ + 🌚 = 🎉" translate="no">​</a></h2>
<p>Thanks to Bootstrap's support for dark mode, Platz now supports it too!</p>
<p>The current behavior defaults to the system setting.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixes-for-missing-metrics-values">Fixes for missing metrics values<a href="https://platz.io/news/v0.5.0#fixes-for-missing-metrics-values" class="hash-link" aria-label="Direct link to Fixes for missing metrics values" title="Direct link to Fixes for missing metrics values" translate="no">​</a></h2>
<p><em>Thanks @vmalloc for this contribution!</em></p>
<p>Missing metric values were left in their original value instead of being returned as zeros.</p>
<p>This is now fixed by setting all possible metrics' values to zero before setting new values.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-platz-annotations-in-chartyaml">New Platz annotations in <code>Chart.yaml</code><a href="https://platz.io/news/v0.5.0#new-platz-annotations-in-chartyaml" class="hash-link" aria-label="Direct link to new-platz-annotations-in-chartyaml" title="Direct link to new-platz-annotations-in-chartyaml" translate="no">​</a></h2>
<p>When parsing chart metadata, Platz now searches for a <code>Chart.yaml</code> file. If <code>Chart.yaml</code> is not found, Platz returns an error saying the directory is not of a chart.</p>
<p><code>Chart.yaml</code> is used to get the chart version, which has be a valid <a href="https://semver.org/" target="_blank" rel="noopener noreferrer" class="">Semver</a>, plus some optional annotations:</p>
<ul>
<li class=""><code>platz.io/git/commit</code>: A full Git commit hash</li>
<li class=""><code>platz.io/git/branch</code>: Name of the current Git branch</li>
<li class=""><code>platz.io/git/repo</code>: URL for the Git repo</li>
<li class=""><code>platz.io/git/provider</code>: A lowercase string representing the Git hosting provider</li>
</ul>
<p>When provided, this metadata added in the chart annotations takes precedence over Tag Formats, which will be deprecated in Platz 0.6 (see below.)</p>
<p>Here's an example <code>Chart.yaml</code>:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> v2</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shop</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">chart</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">description</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> A Helm chart for Pizza</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">Platz Shops</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> application</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">version</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 0.1.0</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">appVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0.1.0"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">annotations</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">platz.io/git/commit</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a8c1da83308d93b111c14f0c79e0b9acf7f01686</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">platz.io/git/branch</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> main</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">platz.io/git/repo</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/pizza</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">platz/shop</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">platz.io/git/provider</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> github</span><br></div></code></pre></div></div>
<p>The <code>repo</code> and <code>provider</code> annotations are not being used at the moment, but they will allow for generating links into the Git repo web interface, for example, to show diffs of potential upgrades.</p>
<p>It's recommended to start adding these annotations so that charts are annotated far enough in history before Tag Formats are deprecated.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="chart-playground-">Chart Playground 🎡<a href="https://platz.io/news/v0.5.0#chart-playground-" class="hash-link" aria-label="Direct link to Chart Playground 🎡" title="Direct link to Chart Playground 🎡" translate="no">​</a></h2>
<p>This new feature should make it easier to create and edit chart extensions: UI schema and features.</p>
<p>The main goal of the Chart Playground is to validate the syntax of chart extensions and show the resulting inputs and features visually before building and testing an actual version of a chart.</p>
<p>Also, the Chart Playground always runs in a context of a specific env. The reasoning is that many inputs may depend on data from the env, for example other deployments, secrets and deployment resources.</p>
<p>An env's Chart Playground can be accessed from the Env menu in Platz's navbar.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="multiple-chart-discovery-workers">Multiple <code>chart-discovery</code> Workers<a href="https://platz.io/news/v0.5.0#multiple-chart-discovery-workers" class="hash-link" aria-label="Direct link to multiple-chart-discovery-workers" title="Direct link to multiple-chart-discovery-workers" translate="no">​</a></h2>
<p>Similarly to k8s-agent, <code>chart-discovery</code> runs with a role that has credentials to access a certain account with ECR repositories.</p>
<p>In cases where multiple AWS accounts or roles are required, you can now run multiple <code>chart-discovery</code> workers.</p>
<p>Each worker monitors its own SQS queue with ECR notifications. Note that although running multiple workers against the same queue, this was not tested nor recommended.</p>
<p>Refer to <a href="https://github.com/platzio/terraform-aws-platzio" target="_blank" rel="noopener noreferrer" class="">Platz's Terraform module</a> for how to configure multiple <code>chart-discovery</code> workers.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="openapi-schemas--sdks">OpenAPI Schemas + SDKs<a href="https://platz.io/news/v0.5.0#openapi-schemas--sdks" class="hash-link" aria-label="Direct link to OpenAPI Schemas + SDKs" title="Direct link to OpenAPI Schemas + SDKs" translate="no">​</a></h2>
<p>OpenAPI schemas are now generated on backend build and saved for each release.</p>
<p>For example, see the release page for this release: <a href="https://github.com/platzio/backend/releases/tag/v0.5.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/platzio/backend/releases/tag/v0.5.0</a>.</p>
<p>This OpenAPI schema is used to auto-generate SDKs, the first of which is <a href="https://www.npmjs.com/package/@platzio/sdk" target="_blank" rel="noopener noreferrer" class="">Platz's SDK for Javascript published to NPM</a>.</p>
<p>Platz's frontend was adapted to use the SDK types and will be migrated to use all actions in a future release.</p>
<p>The <a href="https://github.com/platzio/sdk-rs/" target="_blank" rel="noopener noreferrer" class="">Rust SDK</a> is still maintained manually and still be auto-generated in a future release.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kubernetes-clusters-ignored-by-default">Kubernetes Clusters Ignored By Default<a href="https://platz.io/news/v0.5.0#kubernetes-clusters-ignored-by-default" class="hash-link" aria-label="Direct link to Kubernetes Clusters Ignored By Default" title="Direct link to Kubernetes Clusters Ignored By Default" translate="no">​</a></h2>
<p><em>Thanks @ayalash for this contribution!</em></p>
<p>New Kubernetes clusters are now ignored by default and have to be enabled manually in each env.</p>
<p>This is done to prevent new clusters from becoming automatically visible to users without being configured properly first.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="diesel-20">Diesel 2.0<a href="https://platz.io/news/v0.5.0#diesel-20" class="hash-link" aria-label="Direct link to Diesel 2.0" title="Direct link to Diesel 2.0" translate="no">​</a></h2>
<p>The backend was upgraded to using <a href="http://diesel.rs/" target="_blank" rel="noopener noreferrer" class="">Diesel 2.0</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecations">Deprecations<a href="https://platz.io/news/v0.5.0#deprecations" class="hash-link" aria-label="Direct link to Deprecations" title="Direct link to Deprecations" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="tag-formats">Tag Formats<a href="https://platz.io/news/v0.5.0#tag-formats" class="hash-link" aria-label="Direct link to Tag Formats" title="Direct link to Tag Formats" translate="no">​</a></h3>
<p>Tag formats were an attempt to add version, branch and commit metadata into Git tags and Helm chart versions.</p>
<p>This approach turned out to be troublesome since tags were sometimes very long, hard to read, and limited to 64 characters in Helm versions.</p>
<p>Existing parsed data is already saved in Platz's database and should not be affected.</p>
<p>👉 As of v0.5, parsing of Tag Formats has to be <strong>manually enabled</strong> in <code>chart-discovery</code>. This is to prevent multiple <code>chart-discovery</code> workers from deleting metadata when starting and to encourage this feature to be disabled.</p>
<p>👉 Since the new chart annotations provide more metadata, Tag Formats will be removed as of v0.6.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-v1">API v1<a href="https://platz.io/news/v0.5.0#api-v1" class="hash-link" aria-label="Direct link to API v1" title="Direct link to API v1" translate="no">​</a></h3>
<p>API v1 was, well, the first API of Platz. It did not have authentication as it was used in a closed network. To protect users installing Platz using the default configuration, API v1 is disabled by default by not exposing it in Platz's ingress.</p>
<p>API v2 supports all routers of v1, with the addition of authentication and pagination.</p>
<p>👉 API v1 will be removed as of Platz v0.6.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.9 Released]]></title>
        <id>https://platz.io/news/v0.4.9</id>
        <link href="https://platz.io/news/v0.4.9"/>
        <updated>2023-02-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[{/ truncate /}]]></summary>
        <content type="html"><![CDATA[
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="user-api-tokens">User API tokens<a href="https://platz.io/news/v0.4.9#user-api-tokens" class="hash-link" aria-label="Direct link to User API tokens" title="Direct link to User API tokens" translate="no">​</a></h2>
<p><em>Thanks @ayalash for this contribution!</em></p>
<p>The most exciting feature for this release: <strong>User API tokens</strong> 🎉.</p>
<p>This allows users to create API tokens and use them in API calls, and in the soon to be released CLI.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="prometheus-metrics">Prometheus metrics<a href="https://platz.io/news/v0.4.9#prometheus-metrics" class="hash-link" aria-label="Direct link to Prometheus metrics" title="Direct link to Prometheus metrics" translate="no">​</a></h2>
<p><em>Thanks @ayalash for this contribution!</em></p>
<p>Another major feature is Prometheus metrics exposed by the backend.</p>
<p>The backend now exports two metrics:</p>
<ul>
<li class=""><code>platz_deployment_task_status_counter</code> counts how many tasks are in each status, with a <code>task_status</code> label.</li>
<li class=""><code>platz_deployment_status_counter</code> counts deployment statuses by name and cluster using the labels <code>deployment_kind</code>, <code>deployment_status</code> and <code>cluster_name</code>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="added-retries-for-helm-task-pod-creationdeletion">Added retries for helm task pod creation/deletion<a href="https://platz.io/news/v0.4.9#added-retries-for-helm-task-pod-creationdeletion" class="hash-link" aria-label="Direct link to Added retries for helm task pod creation/deletion" title="Direct link to Added retries for helm task pod creation/deletion" translate="no">​</a></h2>
<p>Helm task pods sometimes failed to create due to network errors.</p>
<p>To resolve this, creation and deletion of Helm pods are now retried several times before marking the task as failed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="added-sigterm-and-sigint-handlers">Added SIGTERM and SIGINT handlers<a href="https://platz.io/news/v0.4.9#added-sigterm-and-sigint-handlers" class="hash-link" aria-label="Direct link to Added SIGTERM and SIGINT handlers" title="Direct link to Added SIGTERM and SIGINT handlers" translate="no">​</a></h2>
<p><em>Thanks @vmalloc for this contribution!</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sort-api-v2-of-deployment-tasks-by-creation">Sort API v2 of deployment tasks by creation<a href="https://platz.io/news/v0.4.9#sort-api-v2-of-deployment-tasks-by-creation" class="hash-link" aria-label="Direct link to Sort API v2 of deployment tasks by creation" title="Direct link to Sort API v2 of deployment tasks by creation" translate="no">​</a></h2>
<p><em>Thanks @ayalash for this contribution!</em></p>
<p>Deployment tasks are now sorted by <code>created_at</code> when returned by the API. This helps API users to query for recent tasks instead of loading the entire history for certain deployments.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="switched-from-rusoto-to-official-aws-sdk">Switched from rusoto to official aws-sdk<a href="https://platz.io/news/v0.4.9#switched-from-rusoto-to-official-aws-sdk" class="hash-link" aria-label="Direct link to Switched from rusoto to official aws-sdk" title="Direct link to Switched from rusoto to official aws-sdk" translate="no">​</a></h2>
<p>The backend now uses the official Rust AWS SDK instead of <code>rusoto</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-some-charts-missing-in-initial-frontend-load">Fixed some charts missing in initial frontend load<a href="https://platz.io/news/v0.4.9#fixed-some-charts-missing-in-initial-frontend-load" class="hash-link" aria-label="Direct link to Fixed some charts missing in initial frontend load" title="Direct link to Fixed some charts missing in initial frontend load" translate="no">​</a></h2>
<p><em>Thanks @vmalloc for this contribution!</em></p>
<p>Some charts were missing when the frontend was initially loaded charts using <code>in_use=true</code> query.</p>
<p>This caused the frontend to miss potential upgrade charts and not show the upgrade icon until all charts were loaded for each deployment kind.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-active_only-and-created_from-filtering-for-deployment-tasks">Add 'active_only' and 'created_from' filtering for deployment tasks<a href="https://platz.io/news/v0.4.9#add-active_only-and-created_from-filtering-for-deployment-tasks" class="hash-link" aria-label="Direct link to Add 'active_only' and 'created_from' filtering for deployment tasks" title="Direct link to Add 'active_only' and 'created_from' filtering for deployment tasks" translate="no">​</a></h2>
<p><em>Thanks @ayalash for this contribution!</em></p>
<p>New filters are now available for <code>/api/v2/deployment-task</code>:</p>
<ul>
<li class=""><code>active_only=true</code> will return only active tasks.</li>
<li class=""><code>created_from</code> takes an ISO8601 date-time and returns tasks that were created after this date.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-for-getting-the-backend-version">API for getting the backend version<a href="https://platz.io/news/v0.4.9#api-for-getting-the-backend-version" class="hash-link" aria-label="Direct link to API for getting the backend version" title="Direct link to API for getting the backend version" translate="no">​</a></h2>
<p><em>Thanks @ayalash for this contribution!</em></p>
<p>A new API <code>/api/v2/self</code> returns version information about the backend.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ignore-ecr-events-with-an-empty-image_tag">Ignore ECR events with an empty image_tag<a href="https://platz.io/news/v0.4.9#ignore-ecr-events-with-an-empty-image_tag" class="hash-link" aria-label="Direct link to Ignore ECR events with an empty image_tag" title="Direct link to Ignore ECR events with an empty image_tag" translate="no">​</a></h2>
<p>Some ECR images might be pushed with an empty tag.</p>
<p>Since this is allowed, Platz simply ignores these images and would continue inspecting Helm chart artifacts, while ignoring anything that's pushed without a tag.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgraded-base-image-v4-helm-3110-and-latest-ubuntu">Upgraded base image v4 (Helm 3.11.0 and latest Ubuntu)<a href="https://platz.io/news/v0.4.9#upgraded-base-image-v4-helm-3110-and-latest-ubuntu" class="hash-link" aria-label="Direct link to Upgraded base image v4 (Helm 3.11.0 and latest Ubuntu)" title="Direct link to Upgraded base image v4 (Helm 3.11.0 and latest Ubuntu)" translate="no">​</a></h2>
<p>The base image for running Helm tasks and the backend has been updated to the latest Ubuntu and Helm 3.11.0.</p>
<p>This matches the current <code>ubuntu-latest</code> in GitHub actions.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-k8s-agent-crash-when-cluster-discovery-fails">Fixed k8s-agent crash when cluster discovery fails<a href="https://platz.io/news/v0.4.9#fixed-k8s-agent-crash-when-cluster-discovery-fails" class="hash-link" aria-label="Direct link to Fixed k8s-agent crash when cluster discovery fails" title="Direct link to Fixed k8s-agent crash when cluster discovery fails" translate="no">​</a></h2>
<p>Cluster discovery might fail sometimes due to network issues, which crashed k8s-agent.</p>
<p>k8s-agent will now retry cluster discovery on the next attempt and not crash when this happens.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="added-an-opt-in-backup-cronjob">Added an opt-in backup cronjob<a href="https://platz.io/news/v0.4.9#added-an-opt-in-backup-cronjob" class="hash-link" aria-label="Direct link to Added an opt-in backup cronjob" title="Direct link to Added an opt-in backup cronjob" translate="no">​</a></h2>
<p>The Helm chart and Terraform modules now include an option for installing Platz with a built-in backup cronjob.</p>
<p>The cronjob uses the existing database credentials and runs every hour, saving a full database dump to an S3 bucket.</p>
<p>A new Terraform module creates the S3 bucket and all necessary IAM resources to grant the backup job its necessary credentials.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="multi-arch-support-amd64-and-arm64">Multi-arch support (AMD64 and ARM64)<a href="https://platz.io/news/v0.4.9#multi-arch-support-amd64-and-arm64" class="hash-link" aria-label="Direct link to Multi-arch support (AMD64 and ARM64)" title="Direct link to Multi-arch support (AMD64 and ARM64)" translate="no">​</a></h2>
<p>All Platz images are now built for both <code>linux/amd64</code> and <code>linux/arm64</code> targets.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.8 Released]]></title>
        <id>https://platz.io/news/v0.4.8</id>
        <link href="https://platz.io/news/v0.4.8"/>
        <updated>2022-11-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This version mostly includes bug fixes.]]></summary>
        <content type="html"><![CDATA[<p>This version mostly includes bug fixes.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="task-failuresuccess-output-fix">Task failure/success output fix<a href="https://platz.io/news/v0.4.8#task-failuresuccess-output-fix" class="hash-link" aria-label="Direct link to Task failure/success output fix" title="Direct link to Task failure/success output fix" translate="no">​</a></h2>
<p><em>Thanks to @vmalloc for contributing this fix</em></p>
<p>When running tasks, a failure prefix was added when tasks succeeded and not when they failed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="avoid-refreshing-credentials-of-disabled-deployments">Avoid refreshing credentials of disabled deployments<a href="https://platz.io/news/v0.4.8#avoid-refreshing-credentials-of-disabled-deployments" class="hash-link" aria-label="Direct link to Avoid refreshing credentials of disabled deployments" title="Direct link to Avoid refreshing credentials of disabled deployments" translate="no">​</a></h2>
<p>Disabled credentials are uninstalled from their clusters, so trying to refresh their credentials caused unnecessary errors as their namespaces didn't exist.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="k8s-agent-will-not-exit-on-task-failure-anymore">k8s-agent will not exit on task failure anymore<a href="https://platz.io/news/v0.4.8#k8s-agent-will-not-exit-on-task-failure-anymore" class="hash-link" aria-label="Direct link to k8s-agent will not exit on task failure anymore" title="Direct link to k8s-agent will not exit on task failure anymore" translate="no">​</a></h2>
<p>k8s-agent exited with an error when a task failed. This happened because errors were propagated from the task runner loop instead of stopping after storing the error in the database.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="release-builds-now-have-debug-info-and-show-full-backtraces">Release builds now have debug info and show full backtraces<a href="https://platz.io/news/v0.4.8#release-builds-now-have-debug-info-and-show-full-backtraces" class="hash-link" aria-label="Direct link to Release builds now have debug info and show full backtraces" title="Direct link to Release builds now have debug info and show full backtraces" translate="no">​</a></h2>
<p><em>Thanks to @vmalloc for contributing this fix</em></p>
<p>Backtraces in release mode ommitted many important function calls. Release builds now include full debug information.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-some-charts-missing-when-using-in_usetrue-in-api">Fixed some charts missing when using ?in_use=true in API<a href="https://platz.io/news/v0.4.8#fixed-some-charts-missing-when-using-in_usetrue-in-api" class="hash-link" aria-label="Direct link to Fixed some charts missing when using ?in_use=true in API" title="Direct link to Fixed some charts missing when using ?in_use=true in API" translate="no">​</a></h2>
<p><em>Thanks to @vmalloc for contributing this fix</em></p>
<p>Helm charts returned by calling <code>/api/v2/helm-charts?in_use=true</code> didn't include charts with a <code>parsed_branch</code> value of <code>null</code>.</p>
<p>This might have happened when parsing a Helm chart version failed, in which case the branch is stored as <code>null</code>. The branch will now be stored as an empty string since this is equivalent to the <code>null</code> case (a Git branch name can't be empty), fixing the result of in use Helm charts.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="added-context-to-errors-around-helm-chart-pulling">Added context to errors around Helm chart pulling<a href="https://platz.io/news/v0.4.8#added-context-to-errors-around-helm-chart-pulling" class="hash-link" aria-label="Direct link to Added context to errors around Helm chart pulling" title="Direct link to Added context to errors around Helm chart pulling" translate="no">​</a></h2>
<p>In some task failure cases it was hard to understand the cause of the failure. To help with that, a context was added to <code>anyhow</code> failures to show which stage failed while running Helm (creating pod, waiting for pod output, etc.)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="handle-disconnections-from-control-plane-when-running-task-pods">Handle disconnections from control plane when running task pods<a href="https://platz.io/news/v0.4.8#handle-disconnections-from-control-plane-when-running-task-pods" class="hash-link" aria-label="Direct link to Handle disconnections from control plane when running task pods" title="Direct link to Handle disconnections from control plane when running task pods" translate="no">​</a></h2>
<p><em>Thanks to @vmalloc for contributing this fix</em></p>
<p>Some tasks failed running because of disconnections from the control plane while waiting for Helm pods to complete running.</p>
<p>In some cases a task completed successfully but was marked as failed because Platz couldn't get the pod status correctly.</p>
<p>This was fixed by using the <code>kube</code> crate watcher instead of polling the pod status directly.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-chart-discovery-oomkilled">Fixed chart-discovery OOMKilled<a href="https://platz.io/news/v0.4.8#fixed-chart-discovery-oomkilled" class="hash-link" aria-label="Direct link to Fixed chart-discovery OOMKilled" title="Direct link to Fixed chart-discovery OOMKilled" translate="no">​</a></h2>
<p>When chart-discovery starts it scrubs all existing Helm charts to verify their parsed tag is in sync with the current settings.</p>
<p>In large deployments this caused an <code>OOMKilled</code> event right when chart-discovery starts up since it loaded all Helm charts to memory.</p>
<p>This was fixed by scrubbing Helm charts in smaller chunks.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-frontend-crash-when-a-chart-had-no-features">Fixed frontend crash when a chart had no features<a href="https://platz.io/news/v0.4.8#fixed-frontend-crash-when-a-chart-had-no-features" class="hash-link" aria-label="Direct link to Fixed frontend crash when a chart had no features" title="Direct link to Fixed frontend crash when a chart had no features" translate="no">​</a></h2>
<p>Charts with no features caused a crash, this was fixed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-to-show-registry-icons-when-no-icon-is-defined-in-chart-features">Fixed to show registry icons when no icon is defined in chart features<a href="https://platz.io/news/v0.4.8#fixed-to-show-registry-icons-when-no-icon-is-defined-in-chart-features" class="hash-link" aria-label="Direct link to Fixed to show registry icons when no icon is defined in chart features" title="Direct link to Fixed to show registry icons when no icon is defined in chart features" translate="no">​</a></h2>
<p>When adding chart icons as a chart-ext feature, the previous behavior of showing the icon by the registry setting was accidentally removed.</p>
<p>This is now fixed to prefer the icon defined in chart-ext, then fall back to the registry setting.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-undefined-error-in-findcollectiondependencies">Fix undefined error in findCollectionDependencies<a href="https://platz.io/news/v0.4.8#fix-undefined-error-in-findcollectiondependencies" class="hash-link" aria-label="Direct link to Fix undefined error in findCollectionDependencies" title="Direct link to Fix undefined error in findCollectionDependencies" translate="no">​</a></h2>
<p><em>Thanks to @vmalloc for contributing this fix</em></p>
<p>Charts with no <code>values_ui</code> chart-ext caused the frontend to crash in <code>findCollectionDependencies</code>.</p>
<p>This was fixed, along with adding logs to catch similar errors in the future.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.7 Released]]></title>
        <id>https://platz.io/news/v0.4.7</id>
        <link href="https://platz.io/news/v0.4.7"/>
        <updated>2022-10-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[{/ truncate /}]]></summary>
        <content type="html"><![CDATA[
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-new-branding">🕸 New Branding<a href="https://platz.io/news/v0.4.7#-new-branding" class="hash-link" aria-label="Direct link to 🕸 New Branding" title="Direct link to 🕸 New Branding" translate="no">​</a></h2>
<p>Platz has a new logo and mascot designed by <a href="https://github.com/vmalloc" target="_blank" rel="noopener noreferrer" class="">Rotem Yaari</a>! 🎉</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deployment-icons-as-chart-extension">Deployment icons as chart extension<a href="https://platz.io/news/v0.4.7#deployment-icons-as-chart-extension" class="hash-link" aria-label="Direct link to Deployment icons as chart extension" title="Direct link to Deployment icons as chart extension" translate="no">​</a></h2>
<p>Deployment icons can now be set in the chart extension features:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> platz.io/v1beta2</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Features</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">display</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">icon</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">font_awesome</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> spider</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">web</span><br></div></code></pre></div></div>
<p>Note: Setting Helm registry icons using the frontend will be removed in the future.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ingress-classes">Ingress classes<a href="https://platz.io/news/v0.4.7#ingress-classes" class="hash-link" aria-label="Direct link to Ingress classes" title="Direct link to Ingress classes" translate="no">​</a></h2>
<p>Clusters now have a setting for ingress class name.</p>
<p>When set, the ingress class name is injected as <code>ingress.className</code> in the chart values.</p>
<p>Ingress classes allow setting an explicit ingress controller to use for Platz deployments, or migrating to a new ingress controller one a per-env basis.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-custom-resources-with-no-hooks">Fixed: Custom resources with no hooks<a href="https://platz.io/news/v0.4.7#fixed-custom-resources-with-no-hooks" class="hash-link" aria-label="Direct link to Fixed: Custom resources with no hooks" title="Direct link to Fixed: Custom resources with no hooks" translate="no">​</a></h2>
<p>Custom resources with no lifecycle hooks were left in the <code>Creating</code> status since no deployment was changing their status.</p>
<p>This was fixed to mark them as <code>Ready</code> when no lifecycle hooks need to be called.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="chart-ext-is-now-an-independent-crate"><code>chart-ext</code> is now an independent crate<a href="https://platz.io/news/v0.4.7#chart-ext-is-now-an-independent-crate" class="hash-link" aria-label="Direct link to chart-ext-is-now-an-independent-crate" title="Direct link to chart-ext-is-now-an-independent-crate" translate="no">​</a></h2>
<p>The <code>chart-ext</code> crate has been moved out of the backend and is now published at <a href="https://crates.io/crates/platz-chart-ext" target="_blank" rel="noopener noreferrer" class="">https://crates.io/crates/platz-chart-ext</a>.</p>
<p>This is in preparation for more integrations around chart extensions, such as a CLI and VS Code extension.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-global-admin-env-permissions">Fixed: Global admin env permissions<a href="https://platz.io/news/v0.4.7#fixed-global-admin-env-permissions" class="hash-link" aria-label="Direct link to Fixed: Global admin env permissions" title="Direct link to Fixed: Global admin env permissions" translate="no">​</a></h2>
<p><em>Thanks to @vmalloc for reporting this issue</em></p>
<p>Global admins were unable to see or change envs in the frontend if their permissions were removed, or didn't exist to begin with.</p>
<p>This was fixed so that global admins can see and admin any env in Platz.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-show-deployment-resource-errors-in-resource-pages">Fixed: Show deployment resource errors in resource pages<a href="https://platz.io/news/v0.4.7#fixed-show-deployment-resource-errors-in-resource-pages" class="hash-link" aria-label="Direct link to Fixed: Show deployment resource errors in resource pages" title="Direct link to Fixed: Show deployment resource errors in resource pages" translate="no">​</a></h2>
<p><em>Thanks to @ayalash for reporting this issue</em></p>
<p>Custom resource errors were visible in the resource list but no in the custom resource page.</p>
<p>Custom resource status and any errors are now displayed in the resource page as well.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.6 Released]]></title>
        <id>https://platz.io/news/v0.4.6</id>
        <link href="https://platz.io/news/v0.4.6"/>
        <updated>2022-08-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[{/ truncate /}]]></summary>
        <content type="html"><![CDATA[
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-changes">API Changes<a href="https://platz.io/news/v0.4.6#api-changes" class="hash-link" aria-label="Direct link to API Changes" title="Direct link to API Changes" translate="no">​</a></h2>
<p>The APIs for Helm registries and charts can now filter by these properties:</p>
<ul>
<li class=""><code>/api/v2/helm-charts</code> with <code>?in_use=true</code> returns all Helm charts currently in use and their potential upgrades.</li>
<li class=""><code>/api/v2/helm-reegistries</code> contains the <code>kind</code> property for each registry. Registries can also be filtered by their <code>kind</code>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="frontend-improvements">Frontend Improvements<a href="https://platz.io/news/v0.4.6#frontend-improvements" class="hash-link" aria-label="Direct link to Frontend Improvements" title="Direct link to Frontend Improvements" translate="no">​</a></h2>
<p>The frontend uses the API improvements mentioned above to initially load much faster: Instead of loading all Helm charts, the frontend loads only charts in the use and upgrade candidates.</p>
<p>When navigating to a page that requires all charts from a registry/kind the frontend fetches those specifically. For example, this happens when creating/editing a deployment.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="platz-section"><code>platz</code> Section<a href="https://platz.io/news/v0.4.6#platz-section" class="hash-link" aria-label="Direct link to platz-section" title="Direct link to platz-section" translate="no">​</a></h2>
<p>When deployment a chart, the <code>platz</code> section injected into the chart's values now contains the full cluster object as it would be returned from the API.</p>
<p>This is useful when cluster properties such as its domain are needed during deployment.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.5 Released]]></title>
        <id>https://platz.io/news/v0.4.5</id>
        <link href="https://platz.io/news/v0.4.5"/>
        <updated>2022-07-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[{/ truncate /}]]></summary>
        <content type="html"><![CDATA[
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="added-server_url-and-expires_at-to-platz-creds-secret">Added <code>server_url</code> and <code>expires_at</code> to <code>platz-creds</code> secret<a href="https://platz.io/news/v0.4.5#added-server_url-and-expires_at-to-platz-creds-secret" class="hash-link" aria-label="Direct link to added-server_url-and-expires_at-to-platz-creds-secret" title="Direct link to added-server_url-and-expires_at-to-platz-creds-secret" translate="no">​</a></h2>
<p>The <code>platz-creds</code> secret injected into each deployment namespace now contains two new properties:</p>
<ul>
<li class=""><code>server_url</code> with Platz's URL</li>
<li class=""><code>expires_at</code> for when the credentials expire and should be refreshed, in ISO 8601 format</li>
</ul>
<p>These changes are also applied in the Rust SDK version <code>0.4.3</code>.</p>
<p>To use the injected secret, run a deployment with the <code>platz-creds</code> secret mounted like so:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> apps/v1</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Deployment</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">template</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">containers</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">volumeMounts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> platz</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">creds</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">mountPath</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/var/run/secrets/platz"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">readOnly</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> platz</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">creds</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">secret</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">secretName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> platz</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">creds</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">optional</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><br></div></code></pre></div></div>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.4 Released]]></title>
        <id>https://platz.io/news/v0.4.4</id>
        <link href="https://platz.io/news/v0.4.4"/>
        <updated>2022-06-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release contains a fix to the Helm chart: The platz.ownUrl macro referred to ingress.hosts instead of ingress.rules.]]></summary>
        <content type="html"><![CDATA[<p>This release contains a fix to the Helm chart: The <code>platz.ownUrl</code> macro referred to <code>ingress.hosts</code> instead of <code>ingress.rules</code>.</p>
]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.3 Released]]></title>
        <id>https://platz.io/news/v0.4.3</id>
        <link href="https://platz.io/news/v0.4.3"/>
        <updated>2022-06-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[{/ truncate /}]]></summary>
        <content type="html"><![CDATA[
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed---admin-email-option">Fixed --admin-email option<a href="https://platz.io/news/v0.4.3#fixed---admin-email-option" class="hash-link" aria-label="Direct link to Fixed --admin-email option" title="Direct link to Fixed --admin-email option" translate="no">​</a></h2>
<p>The <code>--admin_email</code> option was renamed to <code>--admin-email</code>.</p>
<p>The previous option was broken when used through the Helm chart or Terraform modules.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="chart-ingresshosts-renamed-to-ingressrules">Chart ingress.hosts renamed to ingress.rules<a href="https://platz.io/news/v0.4.3#chart-ingresshosts-renamed-to-ingressrules" class="hash-link" aria-label="Direct link to Chart ingress.hosts renamed to ingress.rules" title="Direct link to Chart ingress.hosts renamed to ingress.rules" translate="no">​</a></h2>
<p>This change is to allow <code>rules</code> to be specified similarly to how an <code>Ingress</code> resource looks like. Each rule <code>host</code> is now optional, allowing for a catch-all ingress.</p>
<p>This only changes the chart of Platz itself, the <code>ingress</code> injected while installing charts stays the same to match the commonly used schema created by default with <code>helm create</code>.</p>
<p>When migrating from previous versions, convert an ingress that looks like this:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">ingress</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">create</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">className</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> nginx</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">hosts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">host</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> platz.pizza.io</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">paths</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">path</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> /</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">pathType</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Prefix</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tls</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">hosts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> platz.pizza.io</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">secretName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> pizza</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">platz</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tls</span><br></div></code></pre></div></div>
<p>to:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">ingress</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">create</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">className</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> nginx</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">rules</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># &lt;--</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">host</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> platz.pizza.io</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">paths</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">path</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> /</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">pathType</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Prefix</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tls</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">hosts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> platz.pizza.io</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">secretName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> pizza</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">platz</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">tls</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="use-platz_own_url-for-oidc-callback">Use PLATZ_OWN_URL for OIDC callback<a href="https://platz.io/news/v0.4.3#use-platz_own_url-for-oidc-callback" class="hash-link" aria-label="Direct link to Use PLATZ_OWN_URL for OIDC callback" title="Direct link to Use PLATZ_OWN_URL for OIDC callback" translate="no">​</a></h2>
<p>For generating the OIDC callback URL, the backend used to use proxy headers, which didn't work in some cases.</p>
<p>The backend now uses the <code>PLATZ_OWN_URL</code> environment variable. This environment variable is generated automatically in Platz's Helm chart when setting an Ingress according to the <code>host</code> and <code>tls</code> settings.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ownurloverride-in-helm-chart"><code>ownUrlOverride</code> in Helm chart<a href="https://platz.io/news/v0.4.3#ownurloverride-in-helm-chart" class="hash-link" aria-label="Direct link to ownurloverride-in-helm-chart" title="Direct link to ownurloverride-in-helm-chart" translate="no">​</a></h2>
<p>The Helm chart now contains a top-level variable <code>ownUrlOverride</code> for overriding the automatic value created for <code>PLATZ_OWN_URL</code>.</p>
<p>This is useful when Platz is installed behind a reverse proxy that also serves TLS, which generates an <code>http://</code> URL instead of <code>https://</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-site-admin-to-always-be-an-env-admin">Fixed site admin to always be an env admin<a href="https://platz.io/news/v0.4.3#fixed-site-admin-to-always-be-an-env-admin" class="hash-link" aria-label="Direct link to Fixed site admin to always be an env admin" title="Direct link to Fixed site admin to always be an env admin" translate="no">​</a></h2>
<p>Site admins should be able to have permissions for everything, however in many places they can't perform operations without adding permissions for themselves. This is useful for testing how permissions look like for other users, and of course to avoid mistakes.</p>
<p>However, admins should be able to manage users for all envs to avoid being locked out, so site admins are now also env admins without adding this permission explicitly.</p>
<p>Site admins can still be removed from envs if they don't want to see those envs in the env switcher.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-chart-discovery-crash-when-chart-download-fails">Fixed chart-discovery crash when chart download fails<a href="https://platz.io/news/v0.4.3#fixed-chart-discovery-crash-when-chart-download-fails" class="hash-link" aria-label="Direct link to Fixed chart-discovery crash when chart download fails" title="Direct link to Fixed chart-discovery crash when chart download fails" translate="no">​</a></h2>
<p>Thanks to <a href="https://github.com/vmalloc" target="_blank" rel="noopener noreferrer" class="">@vmalloc</a> for reporting this issue!</p>
<p>The chart-discovery worker could crash in cases where it couldn't download a chart from an OCI repo.</p>
<p>Instead of crashing, the worker now stores the chart with an indicative error.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-wrong-sqs-queue-prefix-in-chart-discovery-terraform-module">Fixed wrong SQS queue prefix in chart-discovery Terraform module<a href="https://platz.io/news/v0.4.3#fixed-wrong-sqs-queue-prefix-in-chart-discovery-terraform-module" class="hash-link" aria-label="Direct link to Fixed wrong SQS queue prefix in chart-discovery Terraform module" title="Direct link to Fixed wrong SQS queue prefix in chart-discovery Terraform module" translate="no">​</a></h2>
<p>Thanks to <a href="https://github.com/vmalloc" target="_blank" rel="noopener noreferrer" class="">@vmalloc</a> for reporting <a href="https://github.com/platzio/terraform-aws-platzio/issues/3" target="_blank" rel="noopener noreferrer" class="">this issue</a>!</p>
<p>The chart-discovery Terraform module used <code>k8s_namespace</code> as a prefix for the SQS queue it creates.</p>
<p>This is now fixed to use <code>name_prefix</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="frontend-changes">Frontend changes<a href="https://platz.io/news/v0.4.3#frontend-changes" class="hash-link" aria-label="Direct link to Frontend changes" title="Direct link to Frontend changes" translate="no">​</a></h2>
<ul>
<li class="">"Create Deployment" button moved into an "Actions" menu</li>
<li class="">When an admin doesn't have permissions to any env, show a link to the admin section.</li>
<li class="">Add a link from the env admin page to env user management.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="backend-image-size">Backend image size<a href="https://platz.io/news/v0.4.3#backend-image-size" class="hash-link" aria-label="Direct link to Backend image size" title="Direct link to Backend image size" translate="no">​</a></h2>
<p>The backend Docker image size was reduced from ~2GB to ~500MB by compiling Platz in release mode.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.2 Released]]></title>
        <id>https://platz.io/news/v0.4.2</id>
        <link href="https://platz.io/news/v0.4.2"/>
        <updated>2022-06-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[{/ truncate /}]]></summary>
        <content type="html"><![CDATA[
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-existing-k8s-resources-getting-cleaned-up">Fixed: Existing K8s Resources Getting Cleaned Up<a href="https://platz.io/news/v0.4.2#fixed-existing-k8s-resources-getting-cleaned-up" class="hash-link" aria-label="Direct link to Fixed: Existing K8s Resources Getting Cleaned Up" title="Direct link to Fixed: Existing K8s Resources Getting Cleaned Up" translate="no">​</a></h2>
<p>K8s resources are tracked by a separate task per cluster in k8s-agent.</p>
<p>When configuring multiple clusters, resources associated with deployments might sometime disappear and re-appear.</p>
<p>The reason for this was that every time a cluster tracker restarted, it tried to clean old k8s resources, but cleaned up "old" resources from all clusters.</p>
<p>This was fixed by associating k8s resources with their <code>cluster_id</code>, as they were only associated with a <code>deployment_id</code> up until now.</p>
<p>The <code>cluster_id</code> property is exposed via API as well.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="added-create_namespace-variable-to-terraform-module">Added: <code>create_namespace</code> Variable to Terraform Module<a href="https://platz.io/news/v0.4.2#added-create_namespace-variable-to-terraform-module" class="hash-link" aria-label="Direct link to added-create_namespace-variable-to-terraform-module" title="Direct link to added-create_namespace-variable-to-terraform-module" translate="no">​</a></h2>
<blockquote>
<p>Thanks to <a href="https://github.com/DuckInCyber" target="_blank" rel="noopener noreferrer" class="">@DuckInCyber</a> for reporting this issue!</p>
</blockquote>
<p>When installing Platz using Terraform in an existing namespace, you can specify <code>create_namespace=false</code> in the main Terraform module.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="added-name_prefix-variable-to-terraform-modules">Added: <code>name_prefix</code> Variable to Terraform Modules<a href="https://platz.io/news/v0.4.2#added-name_prefix-variable-to-terraform-modules" class="hash-link" aria-label="Direct link to added-name_prefix-variable-to-terraform-modules" title="Direct link to added-name_prefix-variable-to-terraform-modules" translate="no">​</a></h2>
<blockquote>
<p>Thanks to <a href="https://github.com/DuckInCyber" target="_blank" rel="noopener noreferrer" class="">@DuckInCyber</a> for reporting this issue!</p>
</blockquote>
<p>Names such as IAM roles were generated in the <code>k8s-agent-role</code> and <code>chart-discovery</code> modules using the <code>k8s_namespace</code> variable.</p>
<p>However, this didn't allow for defining multiple roles using the same namespace when trying to install Platz on different clusters using the same namespace.</p>
<p><code>name_prefix</code> is now used for this prefix.</p>
<p>Since <code>name_prefix</code> and <code>k8s_namespace</code> both default to <code>platz</code>, this has no effect on existing deployments.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.1 Released]]></title>
        <id>https://platz.io/news/v0.4.1</id>
        <link href="https://platz.io/news/v0.4.1"/>
        <updated>2022-06-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[{/ truncate /}]]></summary>
        <content type="html"><![CDATA[
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="changed-helm-chart-apioidc">Changed: Helm Chart <code>api.oidc</code><a href="https://platz.io/news/v0.4.1#changed-helm-chart-apioidc" class="hash-link" aria-label="Direct link to changed-helm-chart-apioidc" title="Direct link to changed-helm-chart-apioidc" translate="no">​</a></h2>
<p>The <code>api.oidc</code> section in Platz's Helm chart values was moved to <code>auth.oidc</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-admin-emails">New: Admin Emails<a href="https://platz.io/news/v0.4.1#new-admin-emails" class="hash-link" aria-label="Direct link to New: Admin Emails" title="Direct link to New: Admin Emails" translate="no">​</a></h2>
<p>Thanks a lot to @vmalloc for <a href="https://github.com/platzio/backend/issues/24" target="_blank" rel="noopener noreferrer" class="">reporting this issue</a>!</p>
<p>This allows for specifying email addresses of users that will automatically get an admin role when logging into Platz.</p>
<p>The main use for this is in new installations.</p>
<p>New users that are successfully identified against the OIDC provider are created as admins if their email is in the admins list.</p>
<p>After installing a new Platz installation and logging-in, the admin emails can be safely removed.</p>
<p>If the admin emails are left as they are and a user is demoted to a regular user role, they will never become admins using this mechanism. Only another admin can promote them to become admins again.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="admin-emails-in-helm-chart">Admin Emails in Helm Chart<a href="https://platz.io/news/v0.4.1#admin-emails-in-helm-chart" class="hash-link" aria-label="Direct link to Admin Emails in Helm Chart" title="Direct link to Admin Emails in Helm Chart" translate="no">​</a></h3>
<p>To specify admin emails in the Helm chart, pass the email addresses to <code>auth.adminEmails</code>:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># values.yaml</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">auth</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">adminEmails</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> alice@example.com</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> bob@example.com</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="admin-emails-in-terraform">Admin Emails in Terraform<a href="https://platz.io/news/v0.4.1#admin-emails-in-terraform" class="hash-link" aria-label="Direct link to Admin Emails in Terraform" title="Direct link to Admin Emails in Terraform" translate="no">​</a></h3>
<p>The Terraform main module gets an <code>admin_emails</code> variable as a <code>list(str)</code> type.</p>
<div class="language-hcl codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hcl codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">module "platz" {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  ...</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  admin_emails = [</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "alice@example.com",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "bob@example.com",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  ]</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.4.0 Released]]></title>
        <id>https://platz.io/news/v0.4.0</id>
        <link href="https://platz.io/news/v0.4.0"/>
        <updated>2022-05-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release adds a new feature that was previously a hard-coded behavior within Platz.]]></summary>
        <content type="html"><![CDATA[<p>This release adds a new feature that was previously a hard-coded behavior within Platz.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-helm-tag-format">New: Helm Tag Format<a href="https://platz.io/news/v0.4.0#new-helm-tag-format" class="hash-link" aria-label="Direct link to New: Helm Tag Format" title="Direct link to New: Helm Tag Format" translate="no">​</a></h2>
<p>Helm tags are parsed when a new chart is pushed to extract information such as the Git branch.</p>
<p>This allows the Platz frontend to understand when a new chart is a candidate for upgrade by deducing that a push to the same branch is probably a newer version.</p>
<p>The new feature allows site admins to add new tag formats, which also means parsing Helm tags has moved to the backend. Information about the parsed tag is available through the <code>/api/v2/helm-charts</code> API.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="tag-format-pattern">Tag Format Pattern<a href="https://platz.io/news/v0.4.0#tag-format-pattern" class="hash-link" aria-label="Direct link to Tag Format Pattern" title="Direct link to Tag Format Pattern" translate="no">​</a></h3>
<p>Platz expects tag formats to be Perl-style regular expressions, with the following named groups:</p>
<ul>
<li class=""><code>version</code></li>
<li class=""><code>revision</code></li>
<li class=""><code>branch</code></li>
<li class=""><code>commit</code></li>
</ul>
<p><code>version</code> is used as the name of the version installed for a deployment. <code>revision</code> is usually used to signal minor changes for a specific version, so it's displayed as <code>version</code>-<code>revision</code> even if the tag contains them separately.</p>
<p>When the <code>branch</code> group contains a non-empty result, Platz uses it to display a branch name, where <code>master</code> and <code>main</code> get a special primary-color formatting.</p>
<p>When <code>commit</code> contains a non-empty result, it's displayed along the parsed version name.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="built-in-formats">Built-In Formats<a href="https://platz.io/news/v0.4.0#built-in-formats" class="hash-link" aria-label="Direct link to Built-In Formats" title="Direct link to Built-In Formats" translate="no">​</a></h3>
<p>The following two tag formats are added automatically when upgrading to this release:</p>
<p>This format matched what you'd normally get from <code>git describe --tags</code>, with the branch name appended to the end of the result:</p>
<div class="language-regex codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-regex codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token anchor function" style="color:#d73a49">^</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token plain">chart-</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">v</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">P&lt;version&gt;</span><span class="token char-set class-name">\d</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token special-escape escape">\.</span><span class="token char-set class-name">\d</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token special-escape escape">\.</span><span class="token char-set class-name">\d</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token plain">-</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">P&lt;revision&gt;</span><span class="token char-set class-name">\d</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token plain">-g</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">P&lt;commit&gt;</span><span class="token char-class char-class-punctuation punctuation" style="color:#393A34">[</span><span class="token char-class range">0</span><span class="token char-class range range-punctuation operator" style="color:#393A34">-</span><span class="token char-class range">9</span><span class="token char-class range">a</span><span class="token char-class range range-punctuation operator" style="color:#393A34">-</span><span class="token char-class range">z</span><span class="token char-class range">A</span><span class="token char-class range range-punctuation operator" style="color:#393A34">-</span><span class="token char-class range">Z</span><span class="token char-class char-class-punctuation punctuation" style="color:#393A34">]</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">-</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">P&lt;branch&gt;</span><span class="token char-class char-class-punctuation punctuation" style="color:#393A34">[</span><span class="token char-class">-</span><span class="token char-class char-set class-name">\w</span><span class="token char-class char-class-punctuation punctuation" style="color:#393A34">]</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token anchor function" style="color:#d73a49">$</span><br></div></code></pre></div></div>
<p>This format matches what a lot of common GitHub Actions plugins generate when auto-tagging a release:</p>
<div class="language-regex codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-regex codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token anchor function" style="color:#d73a49">^</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token plain">chart-</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">v</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">P&lt;version&gt;</span><span class="token char-set class-name">\d</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token special-escape escape">\.</span><span class="token char-set class-name">\d</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token special-escape escape">\.</span><span class="token char-set class-name">\d</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token plain">-</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">P&lt;branch&gt;</span><span class="token char-class char-class-punctuation punctuation" style="color:#393A34">[</span><span class="token char-class">-_</span><span class="token char-class range">A</span><span class="token char-class range range-punctuation operator" style="color:#393A34">-</span><span class="token char-class range">Z</span><span class="token char-class range">a</span><span class="token char-class range range-punctuation operator" style="color:#393A34">-</span><span class="token char-class range">z</span><span class="token char-class range">0</span><span class="token char-class range range-punctuation operator" style="color:#393A34">-</span><span class="token char-class range">9</span><span class="token char-class char-class-punctuation punctuation" style="color:#393A34">]</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token special-escape escape">\.</span><span class="token group punctuation" style="color:#393A34">(</span><span class="token quantifier number" style="color:#36acaa">?</span><span class="token plain">P&lt;revision&gt;</span><span class="token char-set class-name">\d</span><span class="token quantifier number" style="color:#36acaa">+</span><span class="token group punctuation" style="color:#393A34">)</span><span class="token anchor function" style="color:#d73a49">$</span><br></div></code></pre></div></div>
<p>The <code>chart-</code> optional prefix exists for Platz users of version 0.2 and below, where Helm charts might have been hosted in the same repo as the Docker images, forcing users to push charts with a custom prefix.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="when-tags-are-parsed">When Tags Are Parsed<a href="https://platz.io/news/v0.4.0#when-tags-are-parsed" class="hash-link" aria-label="Direct link to When Tags Are Parsed" title="Direct link to When Tags Are Parsed" translate="no">​</a></h3>
<p>Platz scans all Helm charts when the <code>platz-chart-discovery</code> worker starts, and whenever a new tag format is added or an older one is deleted.</p>
<p>This ensures tags are parsed using all formats, from the newest format to the oldest, which allows users to add new formats that may also be matched by older ones, then deleting the old formats if they produce the wrong result.</p>
<p>Also, helm charts are not updated if parsing produces the same result -- being the same tag format as well -- to avoid pushing a lot of updates to all users connected via a websocket.</p>
<p>Note that "same result" also includes the tag format ID itself, as every Helm chart row contains a reference to the tag format that have matched it. If you add a new tag format that matches all charts, it means all charts will be updated, which shouldn't happen very often.</p>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 0.3.5 Released]]></title>
        <id>https://platz.io/news/v0.3.5</id>
        <link href="https://platz.io/news/v0.3.5"/>
        <updated>2022-05-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release contains fixes and changes to the Helm chart and the Terraform modules.]]></summary>
        <content type="html"><![CDATA[<p>This release contains fixes and changes to the Helm chart and the Terraform modules.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-chart-changes">Helm Chart Changes<a href="https://platz.io/news/v0.3.5#helm-chart-changes" class="hash-link" aria-label="Direct link to Helm Chart Changes" title="Direct link to Helm Chart Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-support-for-letsencrypt-with-cert-manager">New: Support for LetsEncrypt with cert-manager<a href="https://platz.io/news/v0.3.5#new-support-for-letsencrypt-with-cert-manager" class="hash-link" aria-label="Direct link to New: Support for LetsEncrypt with cert-manager" title="Direct link to New: Support for LetsEncrypt with cert-manager" translate="no">​</a></h3>
<p>If you have <a href="https://cert-manager.io/" target="_blank" rel="noopener noreferrer" class="">cert-manager</a> installed, the chart can create an <code>Issuer</code> and <code>Certificate</code> resources for you:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># In values.yaml</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">certManager</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">certificate</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">create</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">issuer</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">create</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">email</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Issuer</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">group</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> cert</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">manager.io</span><br></div></code></pre></div></div>
<p>When <code>certManager.issuer.create</code> is <code>true</code>, an <code>Issuer</code> resource will be created using <a href="https://letsencrypt.org/" target="_blank" rel="noopener noreferrer" class="">LetsEncrypt</a>'s production server.</p>
<p><code>certManager.issuer.name</code> is optional and uses the chart name if not provided.</p>
<p><code>certManager.issuer.email</code> is required and will be used to register the issuer.</p>
<p>When <code>certManager.certificate.create</code> is <code>true</code>, a <code>Certificate</code> resource will be created using the <code>secretName</code> passed into <code>ingress.tls[0].secretName</code>.</p>
<p>It's also possible to pass <code>certManager.issuer.name</code> without <code>certManager.issuer.create</code>. This would use an existing <code>Issuer</code>. If you set <code>certManager.issuer.kind</code> to <code>ClusterIssuer</code> an existing <code>ClusterIssuer</code> would be used.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-resource-definitions">Fixed: Resource Definitions<a href="https://platz.io/news/v0.3.5#fixed-resource-definitions" class="hash-link" aria-label="Direct link to Fixed: Resource Definitions" title="Direct link to Fixed: Resource Definitions" translate="no">​</a></h3>
<p>This version adds a <code>resources</code> section for each container.</p>
<p>If you're running on a very small node, such as Minikube, you can override <code>resources</code> to be empty for experimenting with Platz. It's recommended to leave the resources as they are in production.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="terraform-modules">Terraform Modules<a href="https://platz.io/news/v0.3.5#terraform-modules" class="hash-link" aria-label="Direct link to Terraform Modules" title="Direct link to Terraform Modules" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-ingress-variable">New: <code>ingress</code> Variable<a href="https://platz.io/news/v0.3.5#new-ingress-variable" class="hash-link" aria-label="Direct link to new-ingress-variable" title="Direct link to new-ingress-variable" translate="no">​</a></h3>
<p>The previous Helm chart had two variables for defining an ingress: <code>domain</code> and <code>tls_secret_name</code>.</p>
<p>If <code>domain</code> was defined, and ingress was created. If <code>tls_secret_name</code> was defined, a <code>tls</code> section was added to the ingress using the <code>domain</code> variable:</p>
<div class="language-hcl codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hcl codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain"># v0.3.4</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">module "platz" {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  domain          = "platz.example.com"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  tls_secret_name = "tls-secret"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  ...</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<p>The module now contains an <code>ingress</code> variable grouping everything related to the ingress, which includes cert-manager support and <code>className</code>:</p>
<div class="language-hcl codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hcl codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain"># v0.3.5</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">module "platz" {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  ingress = {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    host       = "platz.example.com"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    class_name = "nginx"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tls = {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      secret_name        = "tls-cert"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      create_certificate = true</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      create_issuer      = true</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      issuer_email       = "acme@example.com"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  ...</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="changed-chart-discovery-outputs">Changed: chart-discovery Outputs<a href="https://platz.io/news/v0.3.5#changed-chart-discovery-outputs" class="hash-link" aria-label="Direct link to Changed: chart-discovery Outputs" title="Direct link to Changed: chart-discovery Outputs" translate="no">​</a></h3>
<p>The output names of the chart-discovery module have been changed to match the inputs expected by the main module.</p>
<p>Before the change the main module block looked like this:</p>
<div class="language-hcl codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hcl codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain"># v0.3.4</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">module "platz" {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  ...</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  chart_discovery = {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    iam_role_arn = module.platz_chart_discovery.iam_role_arn</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    queue_name   = module.platz_chart_discovery.sqs_queue_name</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    queue_region = module.platz_chart_discovery.sqs_queue_region</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<p>The <code>sqs_queue_name</code> and <code>sqs_queue_region</code> outputs have been named to <code>queue_name</code> and <code>queue_region</code> correspondingly, allowing the module resource to be used as an input directly:</p>
<div class="language-hcl codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hcl codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain"># v0.3.5</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">module "platz" {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  ...</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  chart_discovery = module.platz_chart_discovery</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>]]></content>
        <category label="Releases" term="Releases"/>
    </entry>
</feed>