v1.4 release

Published on: 2022-04-26 ,  Revised on: 2023-08-03

Announcing Knative 1.4 Release

A new version of Knative is now available across multiple components.

Follow the instructions in Installing Knative to install the components you require.

Table of Contents


  • Our minimum supported Kubernetes version is now 1.22

Serving v1.4

🚨 Breaking or Notable

  • Our minimum supported Kubernetes version is now 1.22 (#12753)
  • When using the Horizontal Pod Autoscaler (HPA), revisions will only be marked as ready after the initial-scale / min-scale value is reached. For example, if min-scale: "4", the revision will not be marked ready until all four pods are ready. Note that revisions may take slightly longer to become ready after this change. See https://knative.dev/docs/serving/autoscaling/scale-bounds/ for more details. (#12811)

πŸ’« New Features & Changes

  • Support annotations 'networking.knative.dev/http-protocol' for Overriding the default HTTP behavior per service in DomainMapping CRD. (#12786)
  • serving.knative.dev/release labels, deprecated in v1.3, have been removed. Please switch over to using app.kubernetes.io/name: knative-serving and app.kubernetes.io/version: $VERSION. (#12754)
  • Users can configure a per-revision progress deadline by setting the serving.knative.dev/progress-deadline annotation in .spec.template.metadata.annotations (#12751)

🐞 Bug Fixes

  • Changes the default target-burst-capacity to 210 in order to fix a configuration issue that caused rapid swapping of activator in/out of path. (#12774)
  • Fix gc: delete revision in correct order (#12752)
  • Fix tag to digest resolution when using imagePullSecrets (#12836)

Eventing v1.4

🚨 Breaking or Notable Changes

  • The minimum Kubernetes version is 1.22. (#6280)
  • The sugar reconciler has been integrated into the base eventing controller and is now controlled by two LabelSelector fields. namespace-sugar-selector and trigger-sugar-selector fields in the config-sugar ConfigMap in knative-eventing Namespace allow you to use a Kubernetes LabelSelector to choose which namespaces or triggers respectively should have a Broker provisioned.

To migrate existing usage of the sugar controller, do the following:

  1. Set the namespace-sugar-selector to the value: matchExpressions:

    • key: "eventing.knative.dev/injection" operator: "In" values: ["enabled"]
  2. Set the trigger-sugar-selector to the value: matchExpressions:

    • key: "eventing.knative.dev/injection" operator: "In" values: ["enabled"]
  3. Remove the Deployment defined by the eventing-sugar-controller.yaml resources in the previous release. (#6027)

πŸ’« New Features & Changes

  • Reduced duplication of observability.yaml config map which existed in multiple locations by symlinking "config/channels/in-memory-channel/configmaps/observability.yaml" to "config/core/configmaps/observability.yaml". (#6301)
  • Reduced duplication of tracing.yaml config map which existed in multiple locations by symlinking "config/channels/in-memory-channel/configmaps/tracing.yaml" to "config/core/configmaps/tracing.yaml". (#6295)
  • The sendevent tool is not part of Eventing core anymore, an alternative is available as kn plugin https://github.com/knative-extensions/kn-plugin-event (#6284)

🐞 Bug Fixes

  • Set dead letter sink URI in the Channel status. (#6256)
  • MTChannelBroker can now co-exist with other broker implementations. (#6265)
  • The service created for the inmemorychannel's dispatcher will have ports defined, similar to the rest of the services. (#6283)

Eventing Extensions

Apache Kafka Broker v1.4

πŸ’« New Features & Changes

  • Handle host headers in dataplane for identification of channel instances (#1990)
  • There is now auto-migration from old consolidated KafkaChannel to the new KafkaChannel. Low level configuration options such as Sarama settings are not migrated to the new channel. However, channel url and auth settings are migrated. (#2004)
  • Discard Consumer records that are not CloudEvents (#2066)
  • Dynamically set max.poll.interval.ms based on the delivery spec (#2058)
  • The default request timeout is 10 minutes now, it was previously set to 10 seconds.
  • It can be overridden using spec.delivery.timeout on Broker, Trigger, KafkaChannel and Subscription. (#2057)
  • Add new new-trigger-filters experimental feature. When enabled, Triggers support a new filters field that conforms to the filters API field defined in the CloudEvents Subscriptions API. It allows you to specify a set of powerful filter expressions, where each expression evaluates to either true or false for each event. (#1992)

RabbitMQ Broker and Source v1.4

🚨 Breaking or Notable Changes

  • Remove support for managed RabbitMQ brokers (#708)

πŸ’« New Features & Changes

  • Now performance graphs for the RabbitMQ Broker are going to be generated for every mayor version release inside our performance test directories (#668)
  • Now the RabbitMQ Source, when failing to send an event, does not get stuck in a cycle requeueing messages as they come. It follows a retries based backoff strategy (and does not reqeue them if the prefetchCount is 1) (#614)
  • Now the RabbitMQ's Broker Ingress pod can recover from a closed Channel or Connection (#648)
  • Changed prefetchCount env variable name to Parallelism in both Trigger and Source, to better reflect its functionality (#676)

Client v1.4

πŸ’« New Features & Changes

  • The compile dependencies have been updated to Knative Serving v1.4.0, Knative Eventing v1.4.0 (Go module versions are v0.31.0).
  • Some new flags have been added to kn service create, kn service update and kn service apply:
  • --timeout for specifying the amount of time (in seconds) to wait for the application to respond to a request before returning with a timeout error. The value of this option sets the .spec.template.spec.timeoutSecond field on the service. The server-side default is used if not provided, which is 300s by default. (#1643)
  • --pull-policy for setting the imagePullPolicy for the application's image. Like for a pod's container, this can one of Always, Never, IfNotPresent. The pull policy will be applied against the digest of the resolved image (Knative always resolves an image tag to a digest) and not the image tag. (#1644)
  • --wait-window for setting the error window which allows intermediate errors while waiting for the ready status of a service. If not given, a default of 2 seconds is used (i.e. if an error state occurs but gets back to a success state within two seconds, then kn won't return an error but considers to be an expected fluctuation during the reconciliation process). (#1645)
  • --scale-metric for setting the autoscaling.knative.dev/metric annotation on a service that specifies the metric the autoscaler should scale on. Possible value are concurrency, cpu, memory and rps. (#1653)
  • Added subpath functionality to the --mount flag so that subdirectories of a volume can be mounted. For example, --mount /mydir=cm:myconfigmap/cmkey will mount the value of key cmkey in ConfigMap myconfigmap to a directory /mydir within the services' application container. (#1655)

Released Plugins

  • The kn-plugin-event plugin is now included since this release.
  • The plugins that are released in parallel and aligned with Knative v1.4.0 are:
  • kn-plugin-admin for managing Knative installations that are running on Kubernetes | download
  • kn-plugin-quickstart to quickly set up a local Knative environment from the command line. | download
  • kn-plugin-source-kafka for managing a Kafka Source that has been installed via eventing-kafka on the backend | download
  • kn-plugin-source-kamelet for managing Kamelet Sources that has been installed via Camel-K on the backend | download
  • kn-plugin-event for creating and sending CloudEvents from insider or outside the cluster | download

Note: All those plugins are released separately and are technically not part of this knative/client release, however they are aligned to share the same Knative dependencies and can be targeted for inlining.

Operator v1.4

πŸ’« New Features & Changes

  • Refactor the post-install yaml files for API migration (#996)
  • Fix the RBAC issue for Knative due to the label change (#1010)
  • Set capability to Seamless Upgrades (#1014)
  • Implement the label and annotation overwriting for service (#1033)
  • Adding code of conduct to reference knative/community's CoC (#1003)

🐞 Bug Fixes

  • Allows knative deployments to be scaled to zero to disable them if not needed (#1029)

Thank you, contributors

Release Leads:


Learn more

Knative is an open source project that anyone in the community can use, improve, and enjoy. We'd love you to join us!

We use analytics and cookies to understand site traffic. Information about your use of our site is shared with Google for that purpose. Learn more.

× OK