🔆 Highlights
External CRD References in CEL Expressions
KRO now supports referencing external Custom Resource Definitions in CEL expressions, enabling validation and type checking against CRDs that exist in your cluster but aren't defined within the ResourceGraphDefinition. This unlocks scenarios where your composed resources need to reference fields from external operators or platform CRDs, such as exposing an external CRD's metadata.generation in your instance status. (#840)
Improved CEL Expression Handling
Significant improvements to the CEL AST inspector for handling complex expressions. kro now properly processes struct literals, map expressions, list expressions (enabling patterns like "%s:%s".format([namespace, name])), and timestamp references. These fixes resolve validation failures and panics that occurred with advanced CEL patterns. (#849, #850, #853)
Standard Controller-Runtime Logging
Breaking Change: --log-level flag with --zap-log-level and related options. The default log level is now info instead of the previous overly-verbose level 10. Existing deployments using --log-level will need to migrate to --zap-log-level. JSON logging can be enabled with --zap-encoder=json. (#791)
Managed-By Labels for KRO Resources
All resources owned by KRO now include the app.kubernetes.io/managed-by label, following Kubernetes recommended labels conventions. This makes it easier to identify and query KRO-managed resources across your cluster. (#851)
✨ Features
- feat: allow CEL expressions to reference external CRDs by @a-buck in #840
- chore: add managedby label to kro owned resources by @michaelhtm in #851
- refactor: adopt controller-runtime standard logging flags by @bschaatsbergen in #791
🐛 Bugfixes
- fix: crd external ref metadata namespace - optional by @sk31337 in #847
- fix: allow properly referencing timestamp expressions by @jakobmoellerdev in #850
- fix: add list expression handling and format statement tests by @jakobmoellerdev in #849
- fix(cel): handle struct and map expressions in AST inspector by @a-hilaly in #853
- fix: prevent panic due to missing runtime by @jakobmoellerdev in #863
- fix: handle nil schemas in additional properties and add RGD reference test by @jakobmoellerdev in #864
📖 Documentation
- dogsvscat app example commit by @7navyasa in #765
- docs: add SaaS Multi-Tenant examples by @kennygt51 in #808
- docs: add examples for Secret use-case with base64 decoding by @sk31337 in #846
- feat(website): add Mermaid diagram support to Docusaurus by @kennygt51 in #838
🌱 Other
- chore(deps): bump js-yaml from 3.14.1 to 3.14.2 in /website by @dependabot in #830
- chore(deps): bump golang.org/x/crypto from 0.36.0 to 0.45.0 in /tools/lsp/server by @dependabot in #837
- chore: remove stale GHA workflow by @bschaatsbergen in #854
- chore: remove unused validation by @bschaatsbergen in #855
New Contributors
Full Changelog: v0.6.3...v0.7.0