Version 0.7.0-beta.1 Released
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.
OCI Registry Discovery ๐ฆโ
chart-discovery can now poll a generic OCI registry instead of
listening for ECR push events. Set provider: oci on a chart-discovery
instance and point oci.registryUrl at a Docker Distribution, zot,
ghcr.io, or any other registry that speaks the OCI distribution spec.
The poller walks the registry's /v2/_catalog and per-repo tag
listings, filters to helm-config-media-type artifacts, pulls each chart
with helm pull, and records it the same way the ECR provider does.
ECR continues to be the default, and existing deployments need no
changes.
New chart values:
chartDiscovery:
instances:
- name: default
provider: oci
oci:
registryUrl: "http://registry.platz.svc.cluster.local:5000"
pollInterval: 5s
The helm_registries table gained a provider column to record which
backend a registry came from. The Helm pod's bootstrap script now skips
aws ecr get-login-password for non-ECR registries โ they're expected
to be anonymously readable from the cluster running the pod.
Local Cluster Provider Mode ๐ โ
k8s-agent can now register a single cluster from a kubeconfig context
instead of scanning AWS for EKS clusters. Set provider: local on a
k8s-agent instance and optionally pin a localContext; the agent
derives a synthetic local:<ctx> provider ID and writes a row through
the same code path EKS discovery uses.
This unblocks running Platz outside AWS, and is what powers the
single-command local dev stack in platzio/dev.
k8sAgent:
instances:
- name: default
provider: local
localContext: kind-platz
disableDeploymentCredentials: true
PLATZ_DISABLE_DEPLOYMENT_CREDENTIALS 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.
Configurable Database Connection Pool ๐โ
Every Platz pod that opens the database can now have its connection
pool tuned via environment variables โ DB_POOL_MAX_SIZE (default 50),
DB_POOL_MIN_IDLE, DB_POOL_CONNECTION_TIMEOUT_SECS (default 30),
DB_POOL_IDLE_TIMEOUT_SECS (default 600), and
DB_POOL_MAX_LIFETIME_SECS (default 1800). Database pool exhaustion is
now handled as a graceful error rather than a panic.
Surfaced through the helm chart under database.pool and the Terraform
module's database_pool variable:
module "platz" {
source = "github.com/platzio/terraform-aws-platzio?ref=v0.7.0-beta.1/modules/main"
# ...
database_pool = {
max_size = 200
connection_timeout_secs = 10
}
}
Thanks to @joshimi for this contribution!
Build and Release Pipeline โกโ
The backend Dockerfile was rewritten around cargo-chef 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.
The Dockerfile also gained a dev target stage so the same Dockerfile
serves local dev and release builds, matching how the helm chart and
terraform module already work.
Local Dev Lives in platzio/dev ๐ ๏ธโ
The old docker-compose.yaml, scripts/run-api.sh, scripts/run-db.sh,
scripts/run-oidc.sh, and scripts/container-build.sh have been
removed from the backend repo. Local development now lives in
platzio/dev, which orchestrates the
full stack via Tilt against a kind cluster running k8s-agent in local
provider mode and chart-discovery against a Docker Distribution
registry.
SDKs ๐โ
platz-sdk (crates.io) bumped to
0.7.0-beta.1. The HelmRegistry struct gained a provider field, and
five collections that had drifted out of the SDK โ bots, bot_tokens,
deployment_permissions, env_user_permissions, helm_tag_formats โ
are now exposed.
@platzio/sdk (npm)
bumped to 0.7.0-beta.1, regenerated from the backend's OpenAPI
schema.
Helm Chart โโ
Image bumped to v0.7.0-beta.1. The chart is published with
artifacthub.io/prerelease: true, so ArtifactHub flags it as a
pre-release.
In addition to the settings called out above, every Rust pod
(api, chart-discovery, k8s-agent, resource-sync,
status-updates) now honors a per-pod extraEnv list for injecting
arbitrary env vars without forking the chart. The resource-sync
deployment also now correctly honors resourceSync.replicaCount โ
previously it was reading a non-existent top-level replicaCount.