Skip to content

Releases: kubernetes-sigs/kro

v0.6.3

19 Nov 08:12
e483c8c

Choose a tag to compare

🔆 Highlights

Fixed several regressions in static type analysis introduced in v0.6.0, including: restoring support for struct-to-map and map-to-struct assignments, allowing optional fields without requiring .orValue() when zero values are acceptable, correcting additional properties type handling from map-any to dyn, and re-enabling assignments to structs defined with x-kubernetes-preserve-unknown-fields. (#833)

What's Changed

  • fix: various fixes on static type analysis in our structural type checking by @jakobmoellerdev in #833

Full Changelog: v0.6.2...v0.6.3

v0.6.2

18 Nov 09:07
b6d5276

Choose a tag to compare

🔆 Highlights

Improved Unknown Fields Handling

Enhanced support for schemas with x-kubernetes-preserve-unknown-fields by migrating to a more lenient type provider implementation. KRO now properly handles CRDs that allow unknown properties without breaking validation. This makes KRO more accurante in enforcing field validation, improving compatibility with dynamic schemas. (#823)

Structural Type Compatibility for CEL Validation

Resolved false positive type errors in CEL expression validation by implementing structural type compatibility checking. Previously, CEL's nominal type checking would reject structurally identical types with different names (e.g pod.spec.containers vs deployment.spec.template.spec.containers), causing validation failures even when the underlying structures matched perfectly. The new implementation performs deep structural comparison, enabling cross resource references like copying entire structs between resources (#813)

CRD Adoption for Recreated RGDs

Removed the RGD owner ID check that prevented ResourceGraphDefinitions from adopting CRDs after being deleted and recreated. When an RGD with the same name is recreated, it can now properly adopt the CRD left behind by the previous instance, with appropriate logging when ownership changes occur. (#826)

✨ Features

  • fix: remove RGD owner ID check to allow RGDs to adopt their CRD by @michaelhtm in #826

🐛 Bugfixes

  • fix: loosen up static type checker unknown field handling by @jakobmoellerdev in #823
  • fix: Add structural type compatibility checking for CEL validation by @a-hilaly in #813

🌱 Other

Full Changelog: v0.6.1...v0.6.2

v0.6.1

13 Nov 23:10
81c4c91

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.6.0...v0.6.1

v0.6.0

07 Nov 20:36
4383639

Choose a tag to compare

🔆 Highlights

Enhanced Instance Status Tracking

  • Overhauled instance status with hierarchical sub-conditions for better visibility into resource reconciliation state. The top-level Ready condition now aggregates three sub-conditions (InstanceManaged, GraphResolved, ResourcesReady), making debugging significantly easier by pinpointing exactly which reconciliation phase failed. Each condition includes observedGeneration tracking to help verify that the controller has processed your latest changes. (#622)

Dependency Readiness Checks

  • Added dependency readiness validation during instance reconciliation to ensure resources are created in the correct order and only when their dependencies are ready. This prevents cascading failures and improves reliability for complex multi-resource instances. (#764, #767)

Reactive Reconciliation with Informers

  • Implemented child object watching using Kubernetes informers instead of periodic polling. kro now automatically detects changes to any managed resource and triggers reconciliation immediately, enabling real-time drift detection and correction. This architectural improvement significantly reduces API server load while providing faster response to resource changes. (#611)

Improved Static Validation

  • Completely overhauled ResourceGraphDefinition static validation by eliminating emulation-based approaches. The new validation leverages CEL's native type system to validate field references, type compatibility, and function calls at RGD creation time - without executing expressions. This provides faster feedback with clearer error messages. (#756)

✨ Features

  • Update instance status sub-conditions by @n3wscott in #759
  • fix: add dependency readiness check in instance reconciliation by @govindup63 in #764
  • feat: child object watch and resource reconciliation based on informers by @jakobmoellerdev in #611
  • Overhaul RGD static validation to eliminate emulation by @a-hilaly in #756
  • chore(applyset): add missing resource status markers for reconciliation process by @jakobmoellerdev in #768

🐛 Bugfixes

  • fix: ensure LazyInformer shutdown handles nil cancel safely and add safety tests by @jakobmoellerdev in #773

📖 Documentation

Testing

  • test: add jobs test case for dependency readiness by @a-hilaly in #767

New Contributors

Full Changelog: v0.5.0...v0.6.0

v0.5.1

27 Oct 17:39
08105e9

Choose a tag to compare

What's Changed

  • Remove push-image from github ci by @a-hilaly in #740
  • Add defensive check for lastApplied being nil. may happen in case of apply error. by @barney-s in #752
  • fix(applyset): make sure labels and annotations are applied by @jakobmoellerdev in #748
  • Remove old note about ghcr.io auth issues from installation.md by @a-hilaly in #755
  • refactor: remove unused impersonation metrics by @a-hilaly in #757
  • fix: replace error state check with error var check by @jakobmoellerdev in #750

Full Changelog: v0.5.0...v0.5.1

v0.5.0

21 Oct 16:16
29d572b

Choose a tag to compare

🔆 Highlights

ApplySets (Server-Side Apply)

  • kro now uses ApplySets with Server-Side Apply (SSA) as the default method for managing resources created by instance reconcilers. This is a major architectural improvement that replaces client-side apply and solves several long-standing issues: proper resource pruning, elimination of never-ending reconciliation loops on ConfigMaps and Secrets, and better handling of server-transformed resources. ApplySets provide superior conflict resolution and field ownership tracking, with concurrent operations support for improved performance. (#561, #712). If you see any issues with this feature, do not hesitate to reach out to us!

Enhanced Validation

  • Improved error messages for type mismatches in parser. (#698)
  • CRD ownership verification to prevent conflicts when multiple ResourceGraphDefinitions try to manage the same CRD. (#562)
  • New schema validation markers: pattern, minLength, maxLength, uniqueItems, maxItems, and minItems in SimpleSchema. (#661)

Performance Optimizations

  • Concurrent applyset operations: Enabled parallel processing for apply and prune operations using configurable concurrency that defaults to the number of objects in the applyset, speeding up reconciliation for multi-resource instances. (#712)
  • Controller optimizations: Watch CRDs as metadata only, use shared HTTP client with cached REST mappings, and RESTMapper optimizations (#725)
  • Schema resolver caching: Added TTL/LRU-based caching (5-minute TTL, 500-entry cap) to reduce repeated API calls and client-side throttling. Uses singleflight deduplication to prevent redundant requests when multiple workers fetch the same schema. (#690)

Versioned documentation site

  • Added versioned documentation to the kro.run website, allowing users to view docs for specific releases (v0.1.0 through v0.5.0) and navigate between versions. (#717)

⚠️ Breaking Changes

Controller Shutdown Configuration

Changed shutdown timeout flags: --dynamic-controller-default-shutdown-timeout--graceful-shutdown-timeout (same for env vars). The timeout now applies globally to all controllers instead of just the dynamic controller. Using the v0.5.0 helm chart should help with the migration. (#616)

Leader Election ID

Changed kro leader election Lease name to controller.kro.run. Update monitoring or operational tooling that relies on the previous leader election ID. (#694, #699)

Service Account Impersonation Removed

Removed service account spec and impersonation features as we were uncertain about the feature design and UX. We'll work on a proper design for this capability in the future. (#704)

New Reserved Keywords

Added item, items, self, this, root, and resourceGraphDefinition as reserved keywords. Rename these if used in your ResourceGraphDefinitions. (#691, #705, #734)

✨ Features

🐛 Bugfixes

  • bug: verify existing ownership of CRD managed by ResourceGraphDefinition to prevent conflict by @a-buck in #562
  • fix: various controller optimizations for improved performance by @jakobmoellerdev in #725

📖 Documentation

  • fix: update version label from 'latest' to 'main' in docusaurus configuration by @jakobmoellerdev in #719
  • docs: add versioned documentation site for v0.1.0 through v0.4.1 by @a-hilaly in #717
  • Update(01-Installation.md):latest release version url by @tzahimizrahi in #689
  • docs: Update FAQ with instructions for using KRO with ArgoCD by @RafPe in #651
  • refactor: update all imports and URLs from github.com/kro-run to kubernetes-sigs by @a-hilaly in #675
  • chore: docusaurus bump to 3.9.1, update image paths and dependencies in website by @jakobmoellerdev in #716
  • ci: upgrade Node.js from 18 to 20 in docs deployment workflow by @a-hilaly in #718
  • Remove out-dated governance page from docs site by @jlbutler in #723
  • Remove reference for S3 bucket, not used in this example by @petrokashlikov in #733

Testing

🌱 Other

New Contributors

Read more

v0.5.0-rc.1

20 Oct 18:20
29d572b

Choose a tag to compare

v0.5.0-rc.1 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.4.1...v0.5.0-rc.1

v0.4.1

25 Aug 16:47
e5bb334

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.4.0...v0.4.1

v0.4.0

30 Jul 19:48
a0dbcc4

Choose a tag to compare

What's Changed

Breaking Changes

New Contributors

Full Changelog: v0.3.0...v0.4.0

v0.3.0

22 May 23:48

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.2.2...v0.3.0