Skip to content

Close the production-readiness gaps - #36

Merged
dcadolph merged 3 commits into
mainfrom
close-production-gaps
Nov 2, 2026
Merged

dcadolph merged 3 commits into
mainfrom
close-production-gaps

Conversation

@dcadolph

@dcadolph dcadolph commented Nov 2, 2026

Copy link
Copy Markdown
Owner

Three gaps kept "production-ready out of the box" from being true for an in-cluster install. This closes them.

Reads need a credential. A server that holds a bootstrap token, single sign-on, or any API key now answers 401 to an /api request that carries neither a bearer token nor a session cookie. Before, those reads were served as an anonymous viewer, so anyone who could reach the server could read every report. A server with no credential at all, --insecure, and --demo keep anonymous reads. A key created with the CLI against the same store closes anonymous reads within ten seconds. Health, readiness, the OpenAPI spec, the OIDC paths, signed inbound webhooks, and the dashboard's static files stay open. The dashboard shows a sign-in panel on a 401 and offers the token drawer, and the live event stream now reads through fetch so it carries the bearer token.

The chart can scan a fleet. kubeconfig.existingSecret mounts a kubeconfig Secret read-only and passes it as --kubeconfig. A pod given no kubeconfig used to find zero contexts, so scheduled scans did nothing. It now scans its own cluster through the ServiceAccount as the context in-cluster. The ClusterScan controller stays on the host cluster when a fleet kubeconfig is mounted, unless --controller-context names a context.

The image is published. The release workflow gains packages: write, QEMU, buildx, and a ghcr.io login, and stops skipping docker, so each release pushes signed amd64 and arm64 images and their manifests. The chart moves to 0.15.0.

Tests: TestAnonymousReadsOnlyWithoutCredentials, TestHoldsCredentialSeesLateKey, TestDashboardSignIn (browser), TestContextsOrInCluster, TestControllerKubeconfig, and TestChartKubeconfigSecret, each shown to fail with its fix reverted. Six tests that asserted anonymous reads on a token server now assert 401. A local goreleaser snapshot built both images, and the arm64 image served 401 to an anonymous read and 200 with the token.

@dcadolph
dcadolph merged commit bf2383c into main Nov 2, 2026
5 checks passed
@dcadolph
dcadolph deleted the close-production-gaps branch November 2, 2026 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant