Skip to main content
StreamNative Private Cloud is an enterprise product which brings specific controllers for Kubernetes by providing specific Custom Resource Definitions (CRDs) that extend the basic Kubernetes orchestration capabilities to support the setup and management of StreamNative components. Release Date: 2026-09-07

What’s changed

🚀 New features

Agent Engine

  • Scheduled agent triggers: Added cron-based AgentTrigger sources backed by Kubernetes CronJobs, with schedule, time zone, and string payload configuration.
  • Shared sessions: Added the SHARED session 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 id and optional version.
  • 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.ursaStorageTopicDefaultEnabled to explicitly enable or disable ursa.storage.topic.default.enable for 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 autoRebalance in remove-brokers mode by default so partitions are reassigned when managed Kafka brokers are removed.
  • Phased configuration rollout: Added on.rolloutLevel conditions for configuration definitions, based on the cloud.streamnative.io/rollout-level annotation, 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.sbt and .sdt, with matching offload and schema-registry configuration behavior.
  • Custom API key claims: Added spec.config.server.allowCustomClaims for 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 Running after the trigger completed.
  • Fixed apiObjects.pdb.maxUnavailable and apiObjects.pdb.minAvailable being silently ignored for BookKeeper, ZooKeeper, Pulsar Proxy, Pulsar Functions Worker, and Oxia workloads. PodDisruptionBudget availability overrides are now honored consistently across all supported components; minAvailable takes 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.name is replaced by the required AgentTrigger.spec.agentRef.id; update existing AgentTrigger manifests before or during the upgrade. Use the optional version field 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.
  • allowCustomClaims cannot be enabled when multiTenant.enable is true.
  • 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.