v0.21 版本
发布时间:2021-02-27 , 修订时间:2023-08-03
宣布 Knative v0.21 版本发布¶
Knative 的新版本现已在多个组件中发布。请按照文档中的说明安装 Knative以获取相应的组件。
目录¶
亮点¶
- Kubernetes 最低版本已更改为 v1.18
- 查看我们的K8s 最低版本原则
- 服务现在支持 Istio 1.9 和 Contour 1.12
- 修复了使用 Kourier 和 AutoTLS 时 DomainMapping 的问题
- 事件源 **PingSource** 二进制模式存在重大更改。
- 事件同步能够知道何时回复,有关更多详细信息,请参阅事件回复标头契约规范。
- CLI
kn
0.21.0 包含一些错误修复和次要功能增强。它主要是一个完善版本。它也是第一个将两个 kn 插件引入 Knative 版本发布列车的版本。 - Knative 运算符现在支持 net-kourier
- Knative 运算符现在支持
latest
版本,该版本是运算符支持的特殊版本
服务 v0.21¶
🚨 重大或值得注意的更改¶
- Kubernetes 最低版本已更改为 v1.18
- 查看我们的K8s 最低版本原则
- GC v1 和 Labeler v1 已弃用并从代码库中删除
- Webhook 证书现在使用 Ed25519 而不是 RSA/2048,并且有效期为一周 (knative/pkg#1998)
💫 新功能和更改¶
- 在 config-network 配置映射中引入 autocreateClusterDomainClaim。这允许通过禁用自动创建 ClusterDomainClaim 来在共享集群中安全地使用 DomainMapping。如果将此选项设置为“false”,集群管理员必须通过创建具有适当 spec.Namespace 的 ClusterDomainClaim 来明确地将域名委托给命名空间。(#10537)
- 域名映射不允许从集群本地域名 (通常是“cluster.local”下的域名) 进行映射 (#10798)
- 允许在容器的 SecurityContext 上设置 ReadOnlyRootFilesystem (#10560)
- 当用户选择非主动探测 (即 PeriodTimeout > 1) 时,容器的准备就绪探测 FailureThreshold 和 TimeoutSeconds 现在分别默认为 3 和 1 (#10700)
- 如果原本不存在,则避免向代理请求隐式添加“Accept-Encoding: gzip”标头。(#10691)
- 可以使用 serving.knative.dev/rolloutDuration 注释对单个修订版进行逐步推广,(#10561)
- 支持 Istio 1.9 (knative-extensions/net-istio#515](https://github.com/knative-extensions/net-istio/pull/515))
- 支持 Contour 1.12 (knative-extensions/net-contour#414](https://github.com/knative-extensions/net-contour/pull/414))
🐞 错误修复¶
- 修复了使用自动 TLS 和 kourier 挑战时 domainmapping 出现的问题 (#10811
- 修复了激活器指标可能卡住的错误,因此从零扩展到零和从零缩减到零无法按预期工作。(#10729)
- 修复了队列代理排空逻辑中的竞争条件,该条件在非常不可能的极端情况下会导致预停止钩子无法退出,即使排空已完成 (#10781)
- 避免与指标相关的缓慢内存不足问题 (knative/pkg#2005)
- 停止报告反射器指标,因为它们已在 upstream 中删除 (knative/pkg#2020)
事件 v0.21¶
🚨 重大或值得注意的更改¶
- 重大更改:PingSource 二进制模式现在在事件主体中发送实际的二进制数据,而不是 base64 编码的形式。(#4851](https://github.com/knative/eventing/pull/4851), @eclipselu)
- 您需要在升级后运行存储迁移工具,才能将
v1beta1
迁移到v1beta2
pingsources.sources.knative.dev
资源。(#4750](https://github.com/knative/eventing/pull/4750), @eclipselu)
💫 新功能和更改¶
- 为事件 Webhook 添加水平 Pod 自动扩展器和 Pod 中断预算 (#4792)
- 将事件回复标头契约添加到规范中 (#4560)
- PingSource 可用 CloudEvent 跟踪 (#4877)
- 发送到死信端点的 CloudEvents 包含名为 ce-knativedispatcherr 的扩展属性,该属性包含来自最终分发尝试的编码 HTTP 响应错误信息。(#4760, @travis-minke-sap)
- 消息接收器支持自定义存活和就绪检查 (#4730)
- imc-dispatcher 服务添加了新的跟踪跨度属性,以与 broker-ingress.knative-eventing 和 broker-filter.knative-eventing 服务保持一致。新的属性是 messaging.destination、messaging.message_id、messaging.protocol 和 messaging.system (#4659)
- 添加 Trigger.Delivery 字段,该字段允许为每个 Trigger 配置 Delivery。(#4654)
🐞 错误修复¶
- 修复 APIServerSource 的 Zipkin 跟踪可用性问题 (#4842)
- 修复了有时在设置过程中 Pod 未被视为启动的问题。(#4725, #4741)
- 修复了 v1beta1 允许对不可变字段进行突变的错误。v1beta1 trigger.spec.broker 是不可变的。(#4843)
🧹 清理¶
- 现在 config-imc-event-dispatcher 值不再可动态配置,也就是说,如果您需要配置这些值,则需要重新部署分发器部署 (#4543)
- PingSource:由于事件始终以二进制模式发送,因此删除对 JSON 数据的特殊处理。(#4858)
- 清理通道鸭子类型内部 (#4749)
事件扩展¶
Eventing RabbitMQ v0.21¶
🚨 重大更新或值得注意的更新¶
- Kubernetes 最低版本已更改为 v1.18
- 升级至 v0.19.7 版本的 k8s 库。最低 k8s 版本现为 1.18。(#213)
💫 新特性和变更¶
- 支持 v1.0、v1.1、v1.2、v1.3 的 RabbitMQ 集群操作符新版本。(#204)
📖 文档¶
- 为 RabbitMQ 源添加了面向用户的文档。(#201)
🧹 清理¶
- 更新或清理现有行为 - 在 kind e2e 测试中使用 go 1.15。(#196)
- 更新或清理现有行为 - 在 go.mod 中使用 go 1.15。(#215)
- 更新 cmd/failer/main.go 中的注释以匹配实际情况。(#210)
- 使用 hack 中的脚本确定 Pod 就绪状态。(#209)
Eventing Kafka 源,通道 v0.21¶
💫 新特性和变更¶
- 在默认的 kafka-secret 中添加一个名为 sasltype 的可选字段,以支持除 PLAIN 之外的 Kafka SASL 方法。支持 SCRAM-SHA-256 或 SCRAM-SHA-512。(#332)
- 添加 tls.enabled 标志用于公共证书使用,并允许跳过 CA/用户证书和密钥。(#359)
- KafkaSource 和 KafkaChannel 默认将使用 config-leader-election CM 用于配置。(#231)
- 删除了对 Azure EventHub 命名空间池的支持,现在只支持单个命名空间/身份验证,这限制了 Azure EventHub 的使用范围,只能使用其有限数量的 EventHub(Kafka 主题)。(#297)
- “分布式” KafkaChannel 配置 YAML 现在包含提供转换的 KafkaChannel WebHook。(#187)
- KafkaSource 将安装在 knative-eventing 命名空间中,而旧的控制器在 knative-sources 中将缩放到 0。(#224)
- 添加了一个新的 KafkaSource 实现,其中一个全局的 StatefulSet 处理所有 KafkaSource 实例。(#186)
- 现在可以在 config-kafka configmap 中使用 sarama 字段定义 KafkaSource 的 Sarama 配置默认值。(#337)
- 现在可以在 config-kafka configmap 中使用 sarama 字段定义合并通道的 Sarama 配置默认值。(#305)
- KafkaChannel 自定义资源定义现在使用 apiextensions.k8s.io/v1 API。(#132)
- KafkaSource 扩展子资源现在可以用来扩展或缩减底层部署。(#138)
- 将连接参数的默认值设为合理的值。(#353)
🐞 错误修复¶
- 修复了合并 KafkaChannel 中的一个错误,该错误会导致订阅在通道的 status.subscribers 中显示出来,而分发器尚未准备好为这些订阅分发消息。
- 合并 KafkaChannel 分发器的水平扩展现在与协调器领导者选举无缝协作。(#182)
- 修复了对消费者组映射的并发修改,这会导致在分发器中运行协调时出现未定义的行为。(#352, @slinkydeveloper)
- 修复了 Kafka 消费者在重新平衡时发生的崩溃。(#263, @lionelvillard)
- 修复了消费者工厂中错误通道上的竞争条件。(#364)
- KafkaSource 分发器现在公开指标和性能分析信息。(#221)
- 合并 KafkaChannel 现在默认依赖 SyncProducer,以确保更安全的事件生产。(#181)
Eventing Kafka 代理 v0.21¶
💫 新特性和变更¶
- 添加对 SASL 和 SSL 的支持。(#534, @pierDipi)
- 添加对 Trigger.Spec.DeliverySpec 的支持。(#612)
- 改进 KafkaSink CRD 中状态字段的描述。(#552)
- 减少干净关闭时的错误日志噪声。(#625)
- 支持 Kubernetes 1.20。(#542)
🐞 错误修复¶
- 从最早的偏移量消费主题。(#557)
- 修复偏移量管理。(#557)
- 数据平面协调器处理失败的协调。(#568)
- 修复 TimeoutException 和 DnsNameResolverTimeoutException。(#539)
客户端 v0.21¶
🚨 重大更新或值得注意的更新¶
修订版本命名
在这个版本中,kn 更改了修订版本命名的默认行为。到目前为止,名称是由客户端本身选择的,利用了 Knative 服务的“自带” (BYO) 修订版本名称支持。
然而,事实证明这种模式存在几个严重的缺点
- 如果您使用客户端侧修订版本命名创建服务,则必须在每次更新时提供一个新的修订版本名称。如果您使用除 kn 之外的其他客户端,例如直接在集群中编辑资源或使用像 OpenShift 开发者控制台之类的工具,这会特别繁琐。假设 kn 是唯一使用的客户端有点太过于乐观了。
SinkBinding
无法使用 BYO 修订版本名称kn service apply
无法使用客户端生成的修订版本名称,因此 kn service apply 会忽略--revision-name
选项,始终使用服务器端生成的修订版本名称。如果您在使用kn
以 BYO 修订版本名称模式创建服务后要使用kubectl apply
,则也是如此。- 修订版本名称是随机的,不反映服务器端生成的修订版本名称的特定世代顺序。
- 当使用相同的镜像名称再次更新时,新修订版本创建存在问题(请参阅 #398)。
有关此重大更改原因的更多详细信息,请参阅问题 #1144(以及引用此问题的其他问题)。
需要采取的措施
如果您依赖客户端侧修订版本命名,则必须将 --revision-name {{.Service}}-{{.Random 5}}-{{.Generation}}
添加到 kn service create
中,以恢复之前的默认行为。但是,在大多数情况下,您不必担心修订版本名称是 kn
还是 Knative 服务控制器创建的。
如果遇到与此更改相关的问题,请告知我们,我们会尽快修复。我们承诺在您遇到此更改导致的任何问题时提供支持。
💫 新特性和变更¶
--context
和--cluster
选项允许您选择连接到 Kubernetes 集群的参数。这些选项与 kubectl 的工作原理相同。- 在执行 kn export 时,对集群特定运行时信息的清理。
CLI 插件¶
💫 新特性和变更¶
CLI kn
插件 赶上了发布节奏
随着 v0.21 版本的发布,Knative 也发布了其首批 kn 插件,这些插件与其依赖项保持一致,因此可以轻松地 内联。
v0.21 版本中包含的插件有
- kn-plugin-admin 用于管理在 Kubernetes 上运行的 Knative 安装 | 下载
- kn-plugin-source-kafka 用于管理通过 eventing-kafka 在后端安装的 Kafka 源 | 下载
要试用这些插件,只需下载它们并将二进制文件放到执行路径中。然后您就可以分别使用 kn admin --help 和 kn source kafka --help 获取帮助。
操作符 v0.21¶
💫 新特性和变更¶
最新网络入口 v0.21.0 工件(捆绑在此操作符的镜像中)包括 net-istio.yaml、net-contour.yaml 和 kourier.yaml。
- 允许配置 Kourier 网关服务类型。(#470)
- 添加对扩展自定义清单的支持。(#468)
- 为自动缩放器添加 HA 支持。(#480)
- 支持 spec.deployments 来覆盖系统部署的配置。(#472)
- 添加 HA 事件主服务器。(#444)
🐞 错误修复¶
🧹 清理¶
- 添加
latest
作为操作符支持的特殊版本。(#443) - 重写服务和事件升级的测试。(#441)
- 允许为测试镜像指定构建平台。(#451)
- 将一些依赖项升级到最新版本。(#463)
- 对齐所有使用的 YAML 模块。(#462)
- 将 Istio 网关的覆盖设置移到 spec.ingress.istio 中。(#469)
感谢 v0.21 版本的贡献者¶
- @BbolroC
- @Harwayne
- @Shashankft9
- @aliok
- @arturenault
- @cardil
- @csantanapr
- @devguyio
- @dsimansk
- @eclipselu
- @evankanderson
- @grac3gao
- @houshengbo
- @julz
- @larhauga
- @lionelvillard
- @markusthoemmes
- @mattmoor
- @matzew
- @matzew
- @nak3
- @navidshaikh
- @pierDipi
- @rhuss
- @senthilnathan
- @shinigambit
- @skonto
- @slinkydeveloper
- @travis-minke-sap
- @vagababov
- @vaikas
- @whaught
- @xtreme-sameer-vohra
- @zhongduo
了解更多¶
Knative 是一个开源项目,社区 中的任何人都可以使用、改进和享受它。我们很乐意您加入我们!
- 欢迎使用 Knative
- 入门文档
- 示例和演示
- Knative 会议和工作组
- 问题和疑难解答
- Knative 用户邮件列表
- Knative 开发邮件列表
- Knative 的 Twitter 账号 @KnativeProject
- Knative 在 StackOverflow 上
- Knative 的 Slack 频道
- Knative 的 YouTube 频道