v0.21 版本發佈
發佈於:2021-02-27 , 修訂於:2023-08-03
公告 Knative v0.21 版本發佈¶
Knative 的新版本現已在多個元件中提供。請按照文件中 安裝 Knative 的說明進行操作,以了解各個元件。
目錄¶
- Serving v0.21
- Eventing v0.21
- Eventing 擴充功能
kn
CLI v0.21kn
CLI 外掛程式
- Operator v0.21
- 感謝貢獻者 v0.21
重點¶
- Kubernetes 最低版本已變更為 v1.18
- 請參閱我們的 K8s 最低版本原則
- 現在 Serving 支援 Istio 1.9 和 Contour 1.12
- 修正使用 Kourier 和 AutoTLS 時的 DomainMapping 問題
- Eventing 來源 PingSource 二進位模式有重大變更。
- Eventing 同步能夠知道何時回覆,請參閱 事件回覆標頭合約規格,以取得更多詳細資訊。
- CLI
kn
0.21.0 包含一些錯誤修正和小功能增強。這主要是一個潤飾版本。它也是第一個將兩個 kn 外掛程式帶入 Knative 發行列車的版本。 - Knative Operator 現在支援 net-kourier
- Knative Opertor 現在支援
latest
版本作為 Operator 支援的特殊版本
Serving v0.21¶
🚨 重大或值得注意¶
- Kubernetes 最低版本已變更為 v1.18
- 請參閱我們的 K8s 最低版本原則
- GC v1 和 Labeler v1 已從程式碼基底中棄用並移除
- Webhooks 憑證現在使用 Ed25519 而不是 RSA/2048,並且有效期限為一周 (knative/pkg#1998)
💫 新功能和變更¶
- 在 config-network config map 中引入 autocreateClusterDomainClaim。這允許在共用叢集中安全地使用 DomainMappings,方法是停用自動 ClusterDomainClaim 建立。如果此選項設定為「false」,則叢集管理員必須透過建立具有適當 spec.Namespace 設定的 ClusterDomainClaim 來明確委派網域名稱。(#10537)
- 網域對應不允許從叢集本機網域名稱(通常是「cluster.local」下的網域)對應。(#10798)
- 允許在容器的 SecurityContext 上設定 ReadOnlyRootFilesystem (#10560)
- 當使用者選擇非積極探測時(即 PeriodTimeout > 1),容器的就緒探測 FailureThreshold 和 TimeoutSeconds 現在分別預設為 3 和 1。(#10700)
- 避免在沒有已經存在「Accept-Encoding: gzip」標頭的情況下,隱式地將其新增至 Proxy 要求。(#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))
🐞 錯誤修正¶
- 修正使用 auto-tls 和 kourier challenge 時,網域對應的問題 (#10811
- 修正啟動器的指標可能會卡住的問題,因此從零開始縮放無法如預期運作。(#10729)
- 修復佇列 Proxy 排空邏輯中的競爭,在極不可能發生的邊緣情況下,可能導致即使排空已完成,pre-stop Hook 也不會結束。(#10781)
- 避免與指標相關的緩慢記憶體不足問題 (knative/pkg#2005)
- 停止報告反射器指標,因為這些指標已在上游移除 (knative/pkg#2020)
Eventing 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)
💫 新功能和變更¶
- 為 Eventing Webhook 新增 HorizontalPodAutoscaler 和 PodDisruptionBudget (#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 欄位,允許設定每個觸發器的 Delivery。(#4654)
🐞 錯誤修正¶
- 修正 APIServerSource 的 zipkin 追蹤的可用性問題 (#4842)
- 修正有時在設定期間未將 Pod 視為啟動的問題。(#4725, #4741)
- 修正 v1beta1 允許變更不可變欄位的錯誤。v1beta1 trigger.spec.broker 是不可變的。(#4843)
🧹 清理¶
- 現在 config-imc-event-dispatcher 的值不再支援即時配置,也就是說,如果您需要配置這些值,您需要重新部署 dispatcher 的部署 (#4543)
- PingSource: 移除對 JSON 資料的特殊處理,因為事件總是會以二進位模式傳送。 (#4858)
- 清理 Channel Duck Types 內部結構 (#4749)
Eventing 擴充功能¶
Eventing RabbitMQ v0.21¶
🚨 重大變更或注意事項¶
- Kubernetes 最低版本已變更為 v1.18
- 升級至 k8s 函式庫的 v0.19.7 版本。現在最低 k8s 版本為 1.18。 (#213)
💫 新功能與變更¶
- 支援新版本的 rabbitmq cluster operator v1.0、v1.1、v1.2、v1.3。 (#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 CustomResourceDefinition 現在使用 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 Broker 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 serving 的「自帶」(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 serving 控制器建立的。
如果此變更發生問題,請告知我們,我們將盡快修復。我們致力於支援您解決此變更造成的任何問題。
💫 新功能與變更¶
--context
和--cluster
選項可讓您選取連線到 Kubernetes 叢集的參數。這些選項與 kubectl 的運作方式相同。- 在執行 kn 匯出時,清除一些叢集特定的執行階段資訊。
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 的協助。
Operator v0.21¶
💫 新功能與變更¶
此運算子映像中捆綁的最新網路入口 v0.21.0 成品包含 net-istio.yaml、net-contour.yaml 和 kourier.yaml。
- 允許配置 Kourier 閘道服務類型 (#470)
- 新增對擴充自訂資訊清單的支援 (#468)
- 新增 autoscaler 的 HA 支援 (#480)
- 支援 spec.deployments 來覆寫系統部署的配置 (#472)
- 新增 ha eventing master (#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 開發郵件列表
- Twitter 上的 Knative @KnativeProject
- 在 StackOverflow 上的 Knative
- Knative Slack
- 在 YouTube 上的 Knative