v0.19 release
Published on: 2020-11-20 , Revised on: 2023-08-03
Announcing Knative v0.19 Release¶
A new version of Knative is now available across multiple components. Follow the instructions in the documentation Installing Knative for the respective component.
Table of Contents¶
- Serving v0.19
- Eventing v0.19
- Eventing Extensions
- CLI v0.19
- Operator v0.19
- Thank you contributors v0.19
Highlights¶
- All components built by Knative are now multi architecture including
arm64
which is the architecture used in ARM based machines like the Raspberry pi. - The monitoring bundle has been removed and the git repository archived.
- Improvements for cold start by adding a scale down delay.
- No longer mounting
/var/log
this allows certain images likedocker.io/nginx
that use this directory to be use as Knative Service. - New Alpha feature that allows for domain name mapping at namespace scope.
- You specify delivery spec defaults for brokers in Eventing configmap
config-br-defaults
- Eventing keeps improving stability by squashing bugs.
- The CLI now offers
arm64
binary, and introduce two new commandskn service apply
andkn service import
Serving v0.19¶
π¨ Breaking
- The deprecated monitoring bundle has been removed (#9807)
- Drop serving v1alpha1 and v1beta1 APIs (#9617, #9620)
- We only mount a volume at /var/log
if the operator has enabled log collection. Runtime contract /var/log
requirement has changed from MUST to MAY (#9683]
π« New Features & Changes - Adds a Scale Down Delay feature, allowing maintaining replica count for a configurable period after request count drops to avoid cold start penalty. (#9626) - (Alpha) Adds a DomainMapping CRD in v1alpha1, allowing mapping a custom domain name to a Knative Service (#9714, #9735, #9752, #9796, #9915, #10044) - Adding cluster-wide flag max-scale-limit. This ensures that both cluster-wide flag max-scale and per-revision annotation "autoscaling.knative.dev/maxScale" for new revision will not exceed this number. (#9577) - All of our deployments run with a minimal set of kernel capabilities. (#9973) - Autoscaler now supports multiple pods. Autoscaler Deployment needs to be scaled to 0 first then scaled to other replica value. (#9682) - Updated the Service schema to include a high level basic schema. (#9436, #9953) - Queue-proxies are no longer allow to run as root, they have a read-only root filesystem and have all capabilities dropped. (#9974) - ResponsiveRevisionGC is enabled by default (#9710) - Revisions are now named more clearly and consistently. (#9740)
π Bug Fixes - Domain is validated by k8s library IsFullyQualifiedDomainName(). (#10023) - Fixed a rare nil-pointer exception in the autoscaler (#9794) - Ingress is reconciled when label was different from desired. (#9719)
Eventing v0.19¶
π« New Features & Changes - Config-br-defaults support setting delivery spec defaults (#4328)
π Bug Fixes - Fix a bug which could cause eventing-webhook to crashloop on initial creation. (#4168) - Change the image pull policy so sinkbinding source tests work with kind. (#4317) - Dependency readiness could sometimes be missed because mismatched informer/lister was being used in the trigger reconciler. (#4296) - Dispatcher was incorrectly behaving like a normal reconciler instead of skipping status updates. I wonder if this was causing grief battling the normal reconciler. (#4280) - Fix issue #4375 where we would not reconcile changes to reconcile policy or duration. (#4405) - Only update the subscriber statuses in IMC after they have been added to handlers. Reduces failures where the subscribers have been marked before the dataplane has been actually configured. (#4435) - Retry on network failures (#4454) - ingress / filter now handle proper k8s lifecycle. (#3917) - KnativeHistory extension is not added anymore to events going through channels (#4366)
π§Ή Clean up - Move fuzzer (test related code) to test files so they don't get baked into our binaries. Small reduction in binary size. (#4399) - DeliverySpec validation rejects a negative retry config. (#4216) - Just clean up some unused fields from the mtbroker reconciler struct. (#4318) - Point to Broker ref instead of using a hard coded path. Also makes things little easier to reuse against other brokers. (#4278)) - Reducing places where we pull in fuzzers. (#4447) - Simplify the IMC implementation, reduce churn due to global resyncs. (#4359) - Use github action to run codecov. (#4237) - remove all knative fuzzers from our binaries. (#4402) - Move ContainerSource to v1 API. (#4257) - Eventing now tests the supported Kubernetes version range pre-submit. (#4273)) - Run kind e2e tests every 4 hours on Github actions. (#4412) - Updated go-retryablehttp to v0.6.7 (#4423)
Eventing Contributions v0.19¶
Eventing Kafka Broker v0.19¶
Release Notes for eventing-kafka-broker
Actions Required (pre-upgrade)
- Run kubectl delete configmap -n knative-eventing kafka-broker-brokers-triggers
π¨ Breaking - Default replication factor is 3 (1 previously) (#375)
π« New Features & Changes
- eventing-kafka.yaml
can be used to install Broker and KafkaSink. (#367)
- Data plane pods expose server and client metrics in Prometheus format. (#231 #244)
- The receiver component exposes:
- http_requests_produce_total
- Number of accepted produce requests (200-level responses)
- http_requests_malformed_total
- Number of malformed produce requests (400-level responses)
- The dispatcher component exposes:
- http_events_sent_total
- Number of events delivered to Apache Kafka
- The Broker retries sending events. (#268 #263 #258)
π Bug Fixes - Remove config-logging volume from the controller (#288) - Thread blocked when logging large configurations in debug mode (#346 #378)
π§Ή Clean up
- The container image's sizes are ~90MB instead of ~287MB. (#265 #306)
- Gracefully clean up resources on shutdown (#334)
- KafkaSink
usage: https://gist.github.com/matzew/e2c2fcd2696a346f25b8bc9e64bfd0fa
Eventing Gitlab v0.19¶
Release Notes for eventing-gitlab
π« New Features & Changes - Declare event types emitted by a GitLabSource instance so they are propagated as Knative EventTypes. (#24)
π Bug Fixes - Sanitize the type attribute of emitted CloudEvents so it doesn't contain spaces and capital letters. (#24)
π§Ή Clean up - Ensure the source attribute of emitted CloudEvents is stable and predictable. (#24)
Eventing RabbitMQ v0.19¶
Release Notes for eventing-rabbitmq
π« New Features & Changes - Implement Dead Letter Queue
π Bug Fixes - Fix a bug where Trigger Dependency would not be always tracked correctly - Fix bug where in non-default cluster names the network names would be incorrect
π§Ή Clean up - Use Kind for e2e tests as well as use common github actions from Knative.
Client v0.19¶
- The
kn
0.19.0 introduces two new commands (kn service apply
andkn service import
) and removes some deprecated options, in addition to bug fixes and some other goodies described below. - You can find the full list of changes in the CHANGELOG.
π¨ Breaking
The following deprecated options have been removed:
--async
for all CRUD commands. Use--no-wait
instead--requests-cpu
,--request-memory
,--limits-cpu
and--limits-memory
when managing services. The replacement is to use--limit memory=..
and--limit cpu=...
(same for--request
). Both options can be combined as in--limit memory=256Mi,cpu=500m
π« New Features & Changes
kn service apply
¶
-
A new
kn service apply
command has been added to allow a declarative management for your Knative service. This new command is especially useful in can CI/CD context to allow for idempotent operations when creating or updating services. It works much likekubectl apply
and used a client-side 3-way merge algorithm to update service. The kubectl merge algorithm is directly reused here. Asapply
operates on Knative's custom resource types, it suffers the same limitation as the client-side merge algorithm inkubectl apply
when dealing with CRDs. I.e. arrays can't be merged but are just overwritten by an update. This limitation affects all containers specific parameters. -
For the future, we plan to add a better merge algorithm that supports a full strategic 3-way merge like the support of
kubectl apply
has for intrinsic K8s resources. -
It is important to note that
kn service apply
is fundamentally different tokn service update
as withkn service apply
the full configuration needs to be provided as command-line options or within a declaration file when used with--filename
. Withkn service update
you only specify the parts to be updated and don't touch any other service configuration. This characteristic ofapply
also implies that you always have to provide the image as the only mandatory parameter withkn service apply
. -
For example:
# Initially apply a service with the given image and env var kn service apply random --image rhuss/random:1.0 --env foo=bar # Update the service to add a ying=yang env var to the already existing one kn service update random --env ying=yang # Apply a full new configuration. Note that foo=bar will be removed # because it is not specified here. kn service apply random --image rhuss/random:1.0 --env ying=yang
kn service import
¶
-
kn service import
is the counterpart tokn service export
and allows you to import a Service and all active revision that has been exported. Active revisions are revisions that are referenced in a traffic-split. -
This command is still marked experimental, and there are some known issues in the import how the
generation
of revision are created. Please gives us feedback on how we can improve the support for this feature.
Other CLI Features¶
The following other features have been added, too:
- An
arm64
flavour has been added to the released artefacts, as well as achecksum.txt
which caries the sha256sum of all artefacts. - A
channel:
prefix has been added for--sink
parameters, so that channels can be directly addressed by name. - Aliases are now appearing correctly in the help messages
- The Client API as a new list filter
WithLabel()
which can be used when listing services.
Operator v0.19¶
The new operator can now deploy the new version v0.19
of serving and eventing components.
π Bug Fixes - Add validation to the field spec.version (#319) - Add support of the major.minor format for spec.version (#326) - Removing incorrect pre-job for 0.17.0 (#325)
π§Ή Clean up - Update to pkg test/KubeClient changes (#304) - Lint: previous condition includes return statement, pop else statement (#305) - Drop istio dependency and replace with unstructured operations (#311) - Drop dependency on pkg/errors (#310) - Validate the major.minor as the version matching mechanism for customized manifests (#320) - Use the hack repository for scripts (#333) - Use the new update_deps script (#332)
Thank you contributors v0.19¶
- @antoineco
- @daisy-ycguo
- @danielhelfand
- @dprotaso
- @dsimansk
- @eclipselu
- @houshengbo
- @ian-mi
- @itsmurugappan
- @joshuawilson
- @julz
- @lberk
- @markusthoemmes
- @mattmoor
- @matzew
- @n3wscott
- @nak3
- @navidshaikh
- @pierDipi
- @rhuss
- @runzexia
- @sheetalsingala
- @slinkydeveloper
- @taragu
- @vaikas
- @whaught
- @yanweiguo
- @zroubalik
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!
- Welcome to Knative
- Getting started documentation
- Samples and demos
- Knative meetings and work groups
- Questions and issues
- Knative User Mailing List
- Knative Development Mailing List
- Knative on Twitter @KnativeProject
- Knative on StackOverflow
- Knative Slack
- Knative on YouTube