platformchangelog.dev
43 tools
tools43j k move f filter
‹ tools krotool

kro

v0.9.4current · 2026-09-04

Kube Resource Orchestrator: define higher-level platform APIs that group Kubernetes resources, without writing a custom controller.

governance Kubernetes project, backed by AWS, Google and Microsoft·license oss
toolIDP & portals
release lines seen0.90.80.70.60.50.40.30.2
alternatives1

Both let platform teams define their own APIs over resources; kro composes Kubernetes resources with no cloud providers of its own, Crossplane brings providers for cloud infrastructure.

No case notes yet. Know of a public postmortem or case study? Tell us.
releases27change lines typed from the source notes
v0.9.42026-09-04patchsecurity+++++*********!!!sharesource
  • Bump golang.org/x/net from 0.47.0 to 0.55.0 in the go-security-updates group across 1 directorysecurity
  • Bump the npm-security-updates group across 1 directory with 6 updatessecurity
  • Bump @babel/core from 7.28.4 to 7.29.7 in /website in the npm-security-updates group across 1 directorysecurity
  • Add user role aggregation to view, edit and admin ClusterRoleadded
  • Add shortNames and categories in the RGDadded
  • Helm: add extraEnv support to deployment templateadded
  • Add deepMerge() for recursive nested map mergingadded
  • Enable full CEL expressions support for external collection selectorsadded
  • Key extended CEL env cache by schema, not just var namefixed
  • Repair chart template gaps found during reviewfixed
  • Set ResourcesReady=False with ReconciliationSuspended reason when suspendedfixed
  • Prevent panic when uint/bytes CEL values reach deep-copyfixed
6 more lines
  • Support ordered deletion without desired-state projection, CEL evaluation, GraphRevision resolution or external observationfixed
  • Route klog to zap and make zap-devel configurable in Helmfixed
  • Sort synthesized CRD required fields for deterministic outputfixed
  • Detect additionalPrinterColumns changes when updating CRDsfixed
  • Honor service account automount settingfixed
  • Use stdlib maps and slices instead of x/expother
19 maintenance lines (dependency bumps, CI, tests, docs)
  • Bump golang.org/x/crypto from 0.51.0 to 0.52.0 in /tools/lsp/server in the go_modules group across 1 directorymaintenance
  • Raise coverage on pkg/cel/library and pkg/graph/crd/compatmaintenance
  • Bump all project dependenciesmaintenance
  • Enable Dependabot version updates and widen module coveragemaintenance
  • Bump actions/setup-node from 5.0.0 to 7.0.0maintenance
  • Bump actions/setup-go from 6.0.0 to 7.0.0maintenance
  • Bump actions/checkout from 5.0.0 to 7.0.1maintenance
  • Scaffolding for graph development work; incremental frommaintenance
  • Bump golangci-lint to v2.12.2 and update lint configurationmaintenance
  • Extract shared informer-fleet Manager into pkg/watchmaintenance
  • Unify integration test suites under a single shared control planemaintenance
  • Note that lists built from maps need sort() for stable orderingmaintenance
  • Bump actions/deploy-pages from 4.0.5 to 5.0.0maintenance
  • Bump @types/vscode from 1.125.0 to 1.134.0 in /tools/lsp/client in the npm-version-updates group across 1 directorymaintenance
  • Bump softprops/action-gh-release from 2.4.1 to 3.0.2maintenance
  • Update e2e test for termination and fix ALLOW_CRD_DELETION correctlymaintenance
  • Bump the npm-version-updates group across 2 directories with 6 updatesmaintenance
  • Bump Go modules, npm packages and GitHub Actionsmaintenance
  • Bump kro version to 0.9.4 with docs cutmaintenance
37 lines3 security5 added9 fixed1 other19 maintenancetyped from the source notes
v0.9.32026-07-27patch++*******sharesource
  • Add author-defined custom status conditions to RGD instancesadded
  • Allow schema.* references in instance status expressionsadded
  • Fix nil pointer dereference in ExternalDocs conversionfixed
  • Instance deletion stuck when SSA field manager owns finalizerfixed
  • Recover panics in dynamic controller instance reconcilefixed
  • Accept whole-valued float64 for integer-typed schema fieldsfixed
  • Fix RGD CRD description examples to match parser behaviorfixed
  • Build package paths instead of single files in Makefile and CIfixed
  • Fix custom conditions status flow and tighten build-time validationfixed
  • Cut docs v0.9.2other
  • Reapply "Emit instance condition telemetry"other
  • Update zoom link for community meetingother
6 more lines
  • Pkg/graph: expose options for NewBuilder()other
  • Update 02-conditional-creation.mdother
  • Compute condition duration metric at scrape time via a Collectorother
  • KREP-024: Graph — atomic composition primitiveother
  • Cut docs v0.9.3other
  • Set KRO version to 0.9.3other
9 maintenance lines (dependency bumps, CI, tests, docs)
  • Bump upload-pages-artifact to v5 to fix SHA pinning violationmaintenance
  • Bump go.opentelemetry.io/otel from 1.36.0 to 1.41.0 in /cmd/kro in the go_modules group across 1 directorymaintenance
  • Update gcb-docker-gcloud builder image to fix push-images jobmaintenance
  • Bump go.opentelemetry.io/otel to v1.44.0 to patch CVEmaintenance
  • Update KRO version to 0.9.2 in docsmaintenance
  • Fix broken relative links in overview and resource-basicsmaintenance
  • Update condition telemetry to reflect author conditionsmaintenance
  • Helm does not update CRDs when upgrading to latestmaintenance
  • Bump the go_modules group across 2 directories with 1 updatemaintenance
27 lines2 added7 fixed9 other9 maintenancetyped from the source notes
v0.9.22026-05-08patch++++-*****sharesource
  • Remove "v" prefix from Helm chart versionremoved
  • Add missing information about required RBAC into Quick start guide.added
  • Add IP, CIDR, Semver and CEL libraries reference pageadded
  • Add listType and listMapKey marker support to SimpleSchemaadded
  • Emit instance condition telemetryadded
  • Fix resource leak during deletion when collections reference empty collectionfixed
  • Prevent deleting other RGDs resources on CRD conflictfixed
  • Fix float type mapped to number in OpenAPI schema for CEL compatibilityfixed
  • Fix validation marker overwriting other XValidationsfixed
  • Make applyset orphan pruning respect reverse topological orderfixed
  • Replace broken dep github.com/tliron/kutilother
  • Expose log encoder configuration in helm chartother
7 more lines
  • Document forEach dependent iterations pattern with map().flatten()other
  • Validate we do not attempt to apply duplicate k8s resourcesother
  • Allowing passing through parameter to run specific integration testsother
  • Validate default marker values match their field typeother
  • Detect min/max constraint changes in CRD compatibility checkerother
  • Revert "Remove "v" prefix from Helm chart version"other
  • Revert "Emit instance condition telemetry"other
3 maintenance lines (dependency bumps, CI, tests, docs)
  • Update to go 1.26.2maintenance
  • Remove unused ptr functions from testsmaintenance
  • Validate floats work in an integration testmaintenance
22 lines1 removed4 added5 fixed9 other3 maintenancetyped from the source notes
v0.9.12026-04-03patchsecurity++**!sharesource
  • Bump the npm-security-updates group across 2 directories with 3 updatessecurity
  • Support "suspended" as canonical value for kro.run/reconcile annotationadded
  • Add hash library with sha256 and md5 functionsadded
  • Fix duplicate dependencies in RGD statusfixed
  • Handle observation of external nodes during deletionfixed
  • KREP-013: Graph Revisionsother
  • Consolidate metrics into pkg/metrics with unified Registerother
  • KREP-000: Kube Resource Orchestrator, ret-con initial proposalother
5 maintenance lines (dependency bumps, CI, tests, docs)
  • Fix flaky spurious-GR assertionsmaintenance
  • Go1.26maintenance
  • Set KRO_VERSION to 0.9.0maintenance
  • Add Cloud Build configuration for image publishingmaintenance
  • Release 0.9.1 documentationmaintenance
13 lines1 security2 added2 fixed3 other5 maintenancetyped from the source notes
v0.9.02026-03-24minorsecurity+++++++++++~******!sharesource
  • Group Dependabot npm and Go security updatessecurity
  • Eliminate duplicate CEL type building during RGD constructionchanged
  • Cache base declarations and environment with sync.Oncechanged
  • Add caching for CEL compilation artifacts to optimize performancechanged
  • Removes the lock convoy during large RGD burstschanged
  • Make string templates compile to concatenationchanged
  • Use DefaultUnstructuredConverter to eliminate JSON round-trips in conditionschanged
  • Json: json.marshal() and json.unmarshal() for working with JSON payloads directly in expressionsadded
  • Maps: map.merge() to combine two maps with second-map-wins semanticsadded
  • Lists: lists.setAtIndex(), lists.insertAtIndex(), lists.removeAtIndex() for immutable list mutations; k8s Lists library for lists.concat() and friendsadded
  • Quantity: parse and manipulate Kubernetes Quantities ("500m", "2Gi") nativelyadded
  • Bind: cel.bind(varName, init, body) to name intermediate values and reduce repetitionadded
68 more lines
  • Comprehensions: TwoVarComprehensions (transformMap, transformList) and sortBy for stable ordering by arbitrary expressionsadded
  • Random: random.seededInt(min, max, seed) for deterministic integer generation from resource UIDsadded
  • Implement KREP-10 - support cluster-scoped instance CRDsadded
  • External ref watches and external ref collectionsadded
  • Support CEL expressions in LabelSelectors for external collectionsadded
  • Disable instance reconciliation when a kro.run/reconcile:"disabled" label is presentadded
  • Add omit() for conditional field omission in templatesadded
  • Add events for instance status condition transitionadded
  • Implement standard Kubernetes feature gates via component-baseadded
  • Expose feature gates in chart valuesadded
  • Gate omit() behind CELOmitFunction feature flagadded
  • Reject omit() on required resource metadata fieldsadded
  • Allow includeWhen to reference other resourcesadded
  • Add json.marshal and json.unmarshal CEL functionsadded
  • Add map library with merge functionalityadded
  • Add index-mutation functions to the lists libraryadded
  • Add k8s Lists library supportadded
  • Add k8s Quantity library supportadded
  • Add cel.bind() support to default environment and AST inspectoradded
  • Add support for TwoVarComprehensions in CEL environmentadded
  • Improve loop variable scoping and support sortBy comprehensionadded
  • Add deterministic seeded integer generation functionadded
  • Add version support for the cel json libraryadded
  • Detect default value changes as non-breaking in schema comparisonadded
  • Block graph propagation on terminating managed resourcesadded
  • Add topologySpreadConstraints in deploymentadded
  • Add opt-in pprof profiling support via build tagsadded
  • Make instance requeue interval configurableadded
  • Expose leader election tuning flags in helm chartadded
  • Add metrics for pkg/runtimeadded
  • Add RGD controller metricsadded
  • Add instance controller metricsadded
  • Add metrics for CEL cache hit/miss trackingadded
  • Add client-go and reflector metrics registrationadded
  • Use expressive histogram buckets for controller reconciliation metricsadded
  • Implementation of Graph Revisions (KREP-013)added
  • Watch owned GraphRevisions from the RGD controlleradded
  • Watch graph revisions by spec.snapshot.name for orphan adoptionadded
  • Limit collection size to 1000 to protect cluster performanceadded
  • Limit collection dimension to 5added
  • Disable instance reconciliation with annotation instead of labeladded
  • KREP-15 label/annotation migration to internal.kro.run/ prefixadded
  • Flaky validate RGD status testfixed
  • Flaky validate RGD status integration testfixed
  • Wrong schema apiVersion definition in RGD chainingfixed
  • Properly return error in simpleschema parsing when the marker doesfixed
  • Remove the rgd labels from managed resourcesfixed
  • Preserve prune scope on UID conflicts and requeue retryfixed
  • Pass up expressive errorfixed
  • Schema-aware CEL value conversionfixed
  • Show root cause errorfixed
  • Skip parent instance events with unchanged generationfixed
  • Skip instance-namespace label for cluster-scoped instancesfixed
  • Correct RGD conditionsfixed
  • Register collection watch for all expanded resourcesfixed
  • Handle oneOf string|number schemas in UnstructuredToValfixed
  • Return a requeue error when waiting for readinessfixed
  • Do not count requeue signals as handler errors in dynamic_controller_handler_errors_totalfixed
  • Sort transformList result before comparison in TwoVar testfixed
  • Add instance state in progress casefixed
  • Expose schema resolver metrics on controller-runtime registryfixed
  • ResourceGraphDefinition delete predicate handlingfixed
  • Allow external collections to list across all namespacesfixed
  • Tighten cluster-scoped instance namespace validationfixed
  • Handle cluster-scoped instances in reconciliation and SSA patchesfixed
  • Surface graph resolution failures in conditions and metricsfixed
  • Get rid of cel build caches due to problems during stabilizationfixed
  • Missing dynamic controller registration, and wire up missing metricsfixed
47 maintenance lines (dependency bumps, CI, tests, docs)
  • Move cel conversion functions to separate packagemaintenance
  • Use a heap-based topological sortmaintenance
  • Move InstanceState and NodeState to api/v1alpha1maintenance
  • Split large files and simplify state managementmaintenance
  • Derive known functions from CEL environmentmaintenance
  • Add condition prune mechanism for upgradesmaintenance
  • Dynamiccontroller: retain parent informers for shared GVR watchesmaintenance
  • Dynamiccontroller: rollback provisional watches on failed reconcilesmaintenance
  • Commit watches on requeue signals, not just on successmaintenance
  • Document cluster-scoped instance supportmaintenance
  • Expand external references to support collections with label selectorsmaintenance
  • Add a page for feature gatesmaintenance
  • Add stability notice for ALPHA metricsmaintenance
  • Rewrite graph revisions page and add interactive diagramsmaintenance
  • Update docs be explicitly clear about resources depending on schema.specmaintenance
  • Add "Building Abstractions with kro" guidesmaintenance
  • Fix formatting in the verify installation stepmaintenance
  • Add AWS Accounts Factory example with nested RGDsmaintenance
  • Document escaping Bash '${VAR}' syntax for CELmaintenance
  • Website: overhaul overview docs with interactive resource graph diagramsmaintenance
  • Website: add KREP roadmap pagemaintenance
  • KREP-003: Decorators (Collection Watching)maintenance
  • KREP-008: docs: add proposal for resource-backed includeWhen evaluationmaintenance
  • KREP-10 for cluster-scoped instance CRDsmaintenance
  • KREP-017 template field omission with omit()maintenance
  • Harden pkg/runtime coveragemaintenance
  • Harden instance reconciler coveragemaintenance
  • Harden rgd controller unit testsmaintenance
  • Harden unit tests for graph builder and friendsmaintenance
  • Verify externalref integration cases reconcile on watched updatesmaintenance
  • Integration test case, omit() removes fieldmaintenance
  • Add webhook denial integration tests with ValidatingAdmissionPolicymaintenance
  • Add an upgrade test framework that validates kro upgrades don't breakmaintenance
  • Add verify-codegen ci entrypointmaintenance
  • Bump controller-runtime to v0.23.1maintenance
  • Bump cel-go to v0.27.0maintenance
  • Implement annotation change predicate for rgd controllermaintenance
  • Remove myself from NOTICEmaintenance
  • Bump webpackmaintenance
  • Bump the npm_and_yarn group across 2 directories with 4 updatesmaintenance
  • Bump the npm_and_yarn group across 1 directory with 2 updatesmaintenance
  • Bump @tootallnate/oncemaintenance
  • Bump dompurifymaintenance
  • Remove pre-v0.7.0 entries from versions.jsonmaintenance
  • Add jakobmoellerdev to kro-maintainersmaintenance
  • Promote nicslatts to emeritus-kro-maintainersmaintenance
  • Add verify-codegen scriptmaintenance
127 lines1 security47 added6 changed26 fixed47 maintenancetyped from the source notes
v0.8.52026-02-09patch++********sharesource
  • Compile CEL programs at build time and reuse at runtimeadded
  • Block kro-owned labels in resource templatesadded
  • Fixed context building to properly distinguish between "not yet observed" (nil) and "observed but empty" ([]) collections. This was causing instances with empty forEach results to get stuck in IN_PROGRESS forever - dependents couldn't evaluate CEL expressions like size(entries) because empty collections were being excluded from context entirely.fixed
  • Validate status schemafixed
  • Handle empty forEach collections and their dependentsfixed
  • Fix empty arrays being converted to null instead of []fixed
  • Handle additionalProperties in schema lookupsfixed
  • Fix ctx race conditionfixed
  • Handle CRD deletion so RGDs don't get stuck in Activefixed
  • Remove dead code and fix path handling asymmetryfixed
  • CEL programs are now compiled once at build time and reused across reconciles. Previously we were re-parsing, re-compiling, and throwing away the program on every single evaluation. The new runtime now holds both the original string and the compiled program, so runtime skips straight to evaluation.other
  • Schema lookups now handle additionalProperties, which is how Kubernetes represents map types like ConfigMap.data. Without this, the CEL type checker couldn't validate writes to map fields and silently missed type mismatches.other
3 maintenance lines (dependency bumps, CI, tests, docs)
  • Rework type system for easier extensionmaintenance
  • Add -race for all unit testsmaintenance
  • Add gcal meeting link to readmemaintenance
15 lines2 added8 fixed2 other3 maintenancetyped from the source notes
v0.8.42026-01-30patch*sharesource
  • Measure pkg/ coverage in integration testsfixed
1 maintenance lines (dependency bumps, CI, tests, docs)
  • Remove managed-by label from kro instancesmaintenance
2 lines1 fixed1 maintenancetyped from the source notes
v0.8.32026-01-30patch**sharesource
  • Fixed a bug where finalizer and label patches were reverting each other when applied as separate operations. Combined into a single patch.fixed
  • Unify finalizer and label patches, add cascading deletion integration testfixed
2 lines2 fixedtyped from the source notes
v0.8.22026-01-30patch***sharesource
  • Filter child events by parent instance GVKfixed
  • Fix cmd/kro by updating Kro dependency to v0.8.1fixed
  • Remove GIT_VERSION suffixfixed
1 maintenance lines (dependency bumps, CI, tests, docs)
  • Update kro cli go.mod to use kro v0.8.1maintenance
4 lines3 fixed1 maintenancetyped from the source notes
v0.8.12026-01-28patch**sharesource
  • Fixed a schema defaulting edge case where generated CRDs could produce invalid OpenAPI when parent fields had required children with defaults.fixed
  • Update parent default logic for schemas with required fieldsfixed
2 lines2 fixedtyped from the source notes
v0.8.02026-01-28minor+++++++~**********sharesource
  • Improve CRD cleanup skip log claritychanged
  • Add Collections support + runtime/controller rewriteadded
  • KREP-002 declarative resource collections supportadded
  • Add support for recursive custom typesadded
  • Detect and prevent breaking schema changes in RGDsadded
  • Add early validation for apiVersion and kind to fail fastadded
  • Add controller warmup support for faster leader failoveradded
  • Add DurationType and TimestampType conversion to go native typesadded
  • Add bytes conversion to go native typesadded
  • Add support for labels and annotations in the generated CRDsadded
  • Reject cluster-scoped resources with namespace setfixed
  • Preserve nested array/object paths in status schemafixed
12 more lines
  • Use date-time format for timestampsfixed
  • Preserve vertex order when dependencies are satisfiedfixed
  • Convert CEL type to Go type recursivelyfixed
  • Support []object and map[string]object types in RGD schemafixed
  • Prevent random.\* from being classified as a resource infixed
  • Capture GIT_VERSION once to prevent -dirty suffix in LDFLAGSfixed
  • Ensure access to workload cluster is granted before argocd secret createfixed
  • Replace panic in CRD graph builder with proper error handlingfixed
  • Version CRD with docs snapshotsfixed
  • Fixed Quickstart instance.yaml sample on documentfixed
  • Url in kubectl commands for upgrade and deletefixed
  • Cleanup: use variadic append for enum valuesother
12 maintenance lines (dependency bumps, CI, tests, docs)
  • Cache compiled CEL programsmaintenance
  • Expand collections gotchas and cross-referencesmaintenance
  • Explain multiline expressions and YAML chompingmaintenance
  • Manifests download URL changed to match actual URLmaintenance
  • Correct apiVersion for Application examplemaintenance
  • Improve unit test coverage for pkg/graph/variablemaintenance
  • Align node state trackingmaintenance
  • Bump controller-runtime to v0.23.0 and k8s deps to v0.35.0maintenance
  • Dependency bumps (go1.25.6, golangci-lint, helm, ko, chainsaw, and more)maintenance
  • Bump kro in kro commandmaintenance
  • Update AWS cluster management example to use EKS capabilitiesmaintenance
  • Regenerate CRDs to reflect new schema.metadata fieldmaintenance
36 lines9 added1 changed13 fixed1 other12 maintenancetyped from the source notes
v0.7.12025-12-13patch+++***sharesource
  • Add custom syntax highlighting for kro code blocks (RGDs)added
  • Support Kubernetes CEL library extensions (URLs and Regex)added
  • Publish static kro manifests on releaseadded
  • Add app.kubernetes.io/managed-by label to child resourcesfixed
  • Make schema.group field immutablefixed
  • Correct grammar in code base and examplesfixed
13 maintenance lines (dependency bumps, CI, tests, docs)
  • Cutoff 0.7.0maintenance
  • Update make command to install crdsmaintenance
  • Major docs revamp and website redesignmaintenance
  • Fix some docs about saas-multi-tenant examplesmaintenance
  • Add URLs and Regex to available CEL librariesmaintenance
  • Add K8s examples to docmaintenance
  • Update FAQ5 in README to match the website FAQ contentmaintenance
  • Add docs-tests presubmit scriptmaintenance
  • Add unit tests for InstanceStatemaintenance
  • Bump node-forge from 1.3.1 to 1.3.2 in /websitemaintenance
  • Bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /websitemaintenance
  • Rewrite inspector to use native CEL AST and improve analysis accuracymaintenance
  • Small refactor of dynamic controller funcsmaintenance
19 lines3 added3 fixed13 maintenancetyped from the source notes
15 older releases
v0.7.02025-11-25minor ++****** 17 lines
v0.6.32025-11-19patch * 1 lines
v0.6.22025-11-18patch ~-*** 7 lines
v0.6.12025-11-13patch ++---** 12 lines
v0.6.02025-11-07minor +++** 12 lines
v0.5.12025-10-27patch +--** 6 lines
v0.5.02025-10-21minorsecurity +++++++++~~~-*****! 64 lines
v0.4.12025-08-25patch ++~ 16 lines
v0.4.02025-07-30minorbreaking +++++~******* 29 lines
v0.3.02025-05-22minorsecurity +++~~---*****! 50 lines
v0.2.32025-04-16patchsecurity ++++~~~---********! 57 lines
v0.2.22025-03-13patch +++++++++~~--****** 45 lines
v0.2.12025-02-07patch ++++--** 19 lines
v0.2.02025-01-30minor no itemized notes
v0.1.02024-11-13minor no itemized notes