github kubernetes-sigs/kro v0.5.0

one day ago

🔆 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

Full Changelog: v0.4.1...v0.5.0

Don't miss a new kro release

NewReleases is sending notifications on new releases.