Releases: zyvorai/kryton
Releases · zyvorai/kryton
Release list
v1.2.0
[1.2.0] - 2026-09-02
Added
- Package-level godoc comments across every
internal//cmd/package, plus full per-method documentation on theprovider.Providerinterface. - Comprehensive docs/USER-GUIDE.md covering all four personas (evaluator, lab operator, production operator, integrator).
- KubeVirt production setup scripts (
scripts/setup-kubevirt-production.sh,scripts/run-kubevirt-production-remote.sh) automating golden-image build + CDI bootstrap end to end. - Lab token auto-auth for the browser UI (
KRYTON_LAB_AUTO_AUTH), so shared lab hosts don't require pasting a bearer token per session. - Apache-2.0 license headers applied across all Go, shell, web, and OpenAPI source files (
scripts/add-license-headers.sh). - README table of contents, full project-layout tree, and a Development section (make targets, provider-boundary rules, CI summary).
- Helm chart
README.mddocumentingvalues.yamlkeys, the four values overlays, the auth-secret contract, and RBAC scope. - Per-symbol godoc comments across
internal//cmd/exported types and functions. - API rate limiting —
KRYTON_RATE_LIMIT_RPS/KRYTON_RATE_LIMIT_BURST(Helm:rateLimit.rps/.burst), a per-caller token bucket keyed by API-key name (or remote address when auth is disabled); disabled by default. Returns429/RATE_LIMITED. - Pagination on
GET /api/v1/machines—?limit=(default 50, max 500) and?cursor=, returningnextCursorin the response envelope, matching the existingGET /api/v1/eventspattern. - Helm:
serviceMonitor(Prometheus Operator scrape config for/metrics) andpodDisruptionBudgettemplates, both disabled by default. - CI: license-header check,
golangci-lint,govulncheck,gosec, and a Trivy image scan on the multi-arch (linux/amd64,linux/arm64) image build;.github/dependabot.ymlfor Go modules, the Docker base image, and Actions. - GitHub PR template and bug/feature issue templates under
.github/. --port <N>flag onscripts/deploy-remote.sh(previously only settable viaKRYTON_PORT).- Expanded unit test coverage:
internal/reconciler(0→95.5%),internal/config(0→87.9%),internal/kubeapi(0→33.6%),internal/jobs(0→71.6%),internal/catalog(0→100%),internal/images(0→70.7%), plus additions tointernal/api,internal/doctor, andinternal/storage.
Fixed
- Helm chart pods failing to start under the chart's own default hardened security context:
podSecurityContext/containerSecurityContextnow set an explicit numericrunAsUser/runAsGroup: 65532(some kubelet/containerd versions can't verifyrunAsNonRootagainst the distroless image's namednonrootuser without one), andKRYTON_STORAGE_CONFIG_FILE/KRYTON_SETTINGS_CONFIG_FILEnow point at anemptyDir-backed/var/lib/krytonsoreadOnlyRootFilesystem: truedoesn't block krytond's local state writes. go.modgorilla/websocket// indirectdrift (it's imported directly, andgolang.org/x/timefor rate limiting is now a direct dependency too).- A handful of pre-existing lint findings surfaced by the new
golangci-lint/gosecCI gate: an always-first-item-only loop ininternal/doctor's KubeVirt feature-gate check, an unsafefmt.Errorf(reason)with user-controlled content ininternal/storage, several uncheckedClose()/Fprintferrors, and one dead-code method ininternal/api. - Helm chart's default
image.tagpointed at a version (1.0.0) that CI never actually publishes (onlylatest/sha-<hash>tags exist) — a defaulthelm installwould fail to pull. Defaults tolatestnow.
Docs
docs/API.md: pagination and rate-limiting sections.docs/DEPLOYMENT.md: observability & availability section (ServiceMonitor, PDB, rate limiting, single-replica caveat).docs/ARCHITECTURE.md/docs/GA.md: documented thatkrytondcannot safely run more than one replica today (TTL reconciler has no leader election; event bus is in-process).CHANGELOG.md(this file) anddeploy/helm/kryton/README.mdadded.