v0.21 版本

发布时间:2021-02-27 ,  修订时间:2023-08-03

宣布 Knative v0.21 版本发布

Knative 的新版本现已在多个组件中发布。请按照文档中的说明安装 Knative以获取相应的组件。

目录

亮点

  • Kubernetes 最低版本已更改为 v1.18
  • 服务现在支持 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
  • 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

💫 新特性和变更

🐞 错误修复

  • 从最早的偏移量消费主题。(#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 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)

🐞 错误修复

  • 为升级测试过渡到新的升级框架。(#437)
  • 添加入口配置支持。(#312)

🧹 清理

  • 添加 latest 作为操作符支持的特殊版本。(#443)
  • 重写服务和事件升级的测试。(#441)
  • 允许为测试镜像指定构建平台。(#451)
  • 将一些依赖项升级到最新版本。(#463)
  • 对齐所有使用的 YAML 模块。(#462)
  • 将 Istio 网关的覆盖设置移到 spec.ingress.istio 中。(#469)

感谢 v0.21 版本的贡献者

了解更多

Knative 是一个开源项目,社区 中的任何人都可以使用、改进和享受它。我们很乐意您加入我们!

我们使用分析和 Cookie 来了解网站流量。为了这个目的,您的网站使用信息将与 Google 共享。 了解更多。