Repository navigation
Important
Upgrade notes — two breaking security changes
spec.tls.insecureSkipVerify: truenow requires--allow-insecure-sinks(Helm:allowInsecureSinks: true). Without it, admission rejects create/update of such sinks and existing insecure sinks stop exporting after upgrade (deletion is unaffected). List affected sinks before upgrading — see Upgrading.- NATS URLs must not carry credentials. A
spec.nats.url/spec.endpointcontaininguser:pass@now fails configuration; move the token or username/password intosecretRef.
New, opt-in: KollectSnapshotSink.spec.deletionPolicy: Delete retracts an inventory's exported objects when the inventory is deleted. The default Retain keeps today's behaviour (see ADR-0421).
0.21.0 - 2026-10-01
Bug Fixes
-
sink: Serialize git mirror users and base new branches on the clone tip ad632da
-
security: Mask the GitLab private_token query parameter 46c0a40
-
security: Static messages at the git auth and ssh-pinning parse sites 2233a59
-
security: Widen redact.Text to query, header, DSN and quoted-URL credentials 135aeba
-
security: Static messages at the remaining git/gitlab URL parse sites 5b6f686
-
security: Redact the ReconcilePanic Event message 365e313
-
security: Redact target Degraded messages from scope-deny paths 17c0e0c
-
security: Redact the all-sinks-failed Degraded/Ready message a8ad552
-
security: Widen userinfo run to the proven character class; pin bare IPv4 NATS servers eac20ce
-
security: Scrub authorization/bearer carrier keys (K-24) 3e7d813
-
security: [breaking] Static messages at URL parse sites; reject NATS URL userinfo (K-23, K-25) 7816b0f
-
security: Redact error text at every status/Event writer (K-23) 7e081fa
-
sink: Strip GitLab credentials on an https to http redirect d55fde3
-
sink: Escape BigQuery string literals with GoogleSQL backslash escapes 9ff2d1f
-
cmd: Log the insecure-sinks warning after SetLogger 3e7c03d
-
sink: [breaking] Harden transport and credential hygiene 7d71eb6
-
collect: Keep field values out of extraction errors 50fcb9f
-
sink: Close evicted pool backends outside the lock d551a0c
-
sink: Close replaced pool backends outside the lock 3496c9e
-
controller: Clear Ready when a namespaced export fails (#387)71f050a
-
sink: Bound response headers when the HTTP client timeout is zero (#389)e77302e
-
export: Stop silent oversize drops and torn relational snapshots (#378)79b841c
-
collect: Drop the user-reachable pin exception under an enforced ceiling abb9e2b
-
controller: Requeue after scope-lookup deny, not just unregister 5ba732b
-
webhook: Reject inventory sink refs outside the scope allowlist at admission 0d38070
-
controller: Unregister scope-denied targets and watch KollectScope 05fb780
-
collect: Fail closed on empty effective set under a scope ceiling cbc8ff7
-
security: Reject cross-namespace secretRef at admission and validate auth mode (#377)23e8b86
Features
-
sink: Retract exports on inventory deletion via deletionPolicy (#383)577e265
-
chart: Add allowInsecureSinks value for --allow-insecure-sinks 53626b2
Refactoring
-
sink: Share sink TLS resolution across git, kafka and nats 9736f1f
-
controller: Fold lookup requeue into the scope-deny helper 3cb4638
-
controller: Extract scope-deny degrade helper; clear lint shadows cab5676
Container image (operator)
ghcr.io/platformrelay/kollect:v0.21.0
Multi-arch (linux/amd64, linux/arm64), Debian bookworm-slim nonroot base (includes git and openssh-client for spec.git.engine: cli).
OCI attestations (SBOM + SLSA provenance) are attached in GHCR and on the repository
Attestations page. Verify the signature:
cosign verify \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp '^https://github.com/PlatformRelay/Kollect/.+' \
ghcr.io/platformrelay/kollect@sha256:a86edc5ec3a8c9c7a8897324e8baf5b061684688d24b213b02e57be8d65e80f2Container image (kollect-pipeline)
One-shot CI/CD collection CLI (ADR-0801) — collect inventory from a kubeconfig without installing
the operator. See the pipeline CLI guide.
ghcr.io/platformrelay/kollect-pipeline:0.21.0
Multi-arch (linux/amd64, linux/arm64), distroless static nonroot base. The git snapshot sink
uses the pure-Go go-git engine over HTTPS; git.engine: cli and file:// remotes are not supported
in this minimal image.
cosign verify \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp '^https://github.com/PlatformRelay/Kollect/.+' \
ghcr.io/platformrelay/kollect-pipeline@sha256:4d3f23aa06fd69f15b2d8c1a46ef4f1e68cef5cc62a2f54a139843672e9166faInstall (Kustomize)
kubectl apply -f install-crds.yaml
kubectl apply -f install.yamlInstall (Helm — OCI)
helm upgrade --install kollect oci://ghcr.io/platformrelay/charts/kollect \
--version 0.21.0 \
--namespace kollect-system \
--create-namespace \
--set image.repository=ghcr.io/platformrelay/kollect \
--set image.tag=v0.21.0Install (Helm — GitHub Release tarball)
helm upgrade --install kollect kollect-0.21.0.tgz \
--namespace kollect-system \
--create-namespace \
--set image.repository=ghcr.io/platformrelay/kollect \
--set image.tag=v0.21.0Verify checksums with sha256sum -c checksums.txt. Each release asset includes a
<file>.sigstore.json Sigstore bundle; release-provenance.intoto.jsonl attests all assets.
See docs/RELEASE.md.