What’s changed
🚀 New features
Agent Engine
- Scheduled agent triggers: Added cron-based
AgentTriggersources backed by Kubernetes CronJobs, with schedule, time zone, and string payload configuration. - Shared sessions: Added the
SHAREDsession mode for scheduled triggers. A state store URL is required when cron triggers use this mode. - Versioned agent references: Agent triggers can select an agent by required
idand optionalversion. - Source validation: Added a validating webhook that prevents changing an AgentTrigger source type after creation.
Managed Kafka and Ursa storage
- Explicit Ursa topic defaults: Added
spec.config.ursaStorageTopicDefaultEnabledto explicitly enable or disableursa.storage.topic.default.enablefor managed Kafka. - Azure tiered storage settings: Azure Blob bucket names can use
accountName@containerName; the Operator derives the Azure SDK account and container settings while preserving the legacy format. - Broker removal rebalancing: Enabled Cruise Control
autoRebalanceinremove-brokersmode by default so partitions are reassigned when managed Kafka brokers are removed. - Phased configuration rollout: Added
on.rolloutLevelconditions for configuration definitions, based on thecloud.streamnative.io/rollout-levelannotation, to roll out defaults in controlled waves.
Pulsar, BookKeeper, API keys, and Console
- Partitioned StatefulSet updates: Broker and BookKeeper StatefulSets now honor
spec.pod.updateStrategy.partition, enabling staged pod rollouts. - Classic-engine Ursa modes: Added
spec.config.ursaModeForClassicEngineCluster.sbtand.sdt, with matching offload and schema-registry configuration behavior. - Custom API key claims: Added
spec.config.server.allowCustomClaimsfor non-multi-tenant API key services. It remains disabled by default. - Console v2.3.30+ support: Added Console container command, arguments, working directory, custom volume mounts, resource propagation, and runtime layout support required by newer Console images.
🔧 Enhancements
- Excluded the Kafka system namespace from load shedding on supported Pulsar versions.
- Added Strimzi Cruise Control system topics to the Ursa compaction blacklist.
- Tuned AvgShedder CPU weighting and minimum unload thresholds to reduce unnecessary unloads while retaining balancing for lower-traffic clusters.
- Updated Kafka SDT interceptor configuration and disabled default topic storage when SDT is enabled.
- Enabled KoP schema registry compatibility settings for both classic SBT and SDT Ursa modes.
🐛 Bug fixes and security updates
- Fixed Pulsar Proxy startup with API key authentication by mounting the OIDC public key and revocation-list secrets.
- Fixed Kafka Connect Confluent converters using an internal schema registry with PLAIN or SCRAM authentication by propagating converter-scoped SASL settings.
- Fixed Oxia coordinator configuration that could be generated before namespace owner lookup completed; failed lookups now retry instead of producing partial state.
- Fixed disabled managed-ledger offload configuration being evaluated as null and accidentally enabling classic offload settings.
- Fixed cron AgentTrigger Jobs with injected Istio sidecars remaining in
Runningafter the trigger completed. - Fixed
apiObjects.pdb.maxUnavailableandapiObjects.pdb.minAvailablebeing silently ignored for BookKeeper, ZooKeeper, Pulsar Proxy, Pulsar Functions Worker, and Oxia workloads. PodDisruptionBudget availability overrides are now honored consistently across all supported components;minAvailabletakes precedence when both fields are set. - Updated the Go/Alpine build image and Go networking and cryptography dependencies for security fixes.
🚨 Compatibility notes
AgentTrigger.spec.agentRef.nameis replaced by the requiredAgentTrigger.spec.agentRef.id; update existing AgentTrigger manifests before or during the upgrade. Use the optionalversionfield when a specific agent version is required.- The AgentTrigger source type is immutable after creation. Recreate the resource to switch between Pulsar, Kafka, and cron sources.
allowCustomClaimscannot be enabled whenmultiTenant.enableistrue.- Apply the v0.20.6 CRDs and RBAC resources before updating the Operator. Cron AgentTriggers require permission to manage Kubernetes CronJobs.
📚 Documentation
- Refreshed the CRDs and RBAC manifests for AgentTrigger, API keys, Console, Kafka, Pulsar, BookKeeper, ZooKeeper, and PodDisruptionBudget availability configuration.
- Added Operator configuration references for phased rollout conditions and Pulsar broker settings.