v0.19 リリース
公開日:2020-11-20、改訂日:2023-08-03
Knative v0.19 リリース発表¶
複数のコンポーネントにわたって、新しいバージョンの Knative が利用可能になりました。それぞれのコンポーネントについては、ドキュメントのKnative のインストールの手順に従ってください。
目次¶
- Serving v0.19
- Eventing v0.19
- Eventing エクステンション
- CLI v0.19
- Operator v0.19
- コントリビューターへの感謝 v0.19
ハイライト¶
- Knative によって構築されたすべてのコンポーネントは、Raspberry Piなどの ARM ベースのマシンで使用されるアーキテクチャである
arm64
を含む、マルチアーキテクチャになりました。 - モニタリングバンドルは削除され、Git リポジトリはアーカイブされました。
- スケールダウン遅延を追加することで、コールドスタートを改善しました。
/var/log
のマウントを停止しました。これにより、このディレクトリを使用するdocker.io/nginx
などの特定のイメージを Knative サービスとして使用できます。- 名前空間スコープでドメイン名マッピングを許可する新しいアルファ機能。
- Eventing configmap `config-br-defaults`でブローカーの配信仕様のデフォルトを指定します。
- Eventing はバグの修正により安定性を向上させ続けています。
- CLI は
arm64
バイナリを提供するようになり、kn service apply
とkn service import
という2つの新しいコマンドが導入されました。
Serving v0.19¶
🚨 ブレーキングチェンジ - 非推奨のモニタリングバンドルが削除されました (#9807) - Serving v1alpha1 と v1beta1 API を削除しました (#9617、#9620) - オペレーターがログ収集を有効にした場合にのみ、/var/log
にボリュームをマウントします。ランタイムコントラクトの/var/log
の要件がMUSTからMAYに変更されました(#9683)
💫 新機能と変更点 - リクエスト数が減少した後、構成可能な期間レプリカ数を維持することでコールドスタートのペナルティを回避するスケールダウン遅延機能を追加しました。(#9626) - (アルファ) v1alpha1 で DomainMapping CRD を追加し、カスタムドメイン名を Knative サービスにマッピングできるようにしました (#9714、#9735、#9752、#9796、#9915、#10044) - クラスタ全体のフラグ `max-scale-limit` を追加しました。これにより、新しいリビジョンに対するクラスタ全体のフラグ `max-scale` とリビジョンごとのアノテーション "autoscaling.knative.dev/maxScale" の両方がこの数値を超えないようにします。(#9577) - すべてのデプロイメントは、最小限のカーネル機能セットで実行されます。(#9973) - オートスケーラーは複数のポッドをサポートするようになりました。オートスケーラーデプロイメントは、最初に0にスケールダウンしてから、他のレプリカ値にスケールアップする必要があります。(#9682) - 高レベルの基本スキーマを含むサービススキーマを更新しました。(#9436、#9953) - キュープロキシは、ルートとして実行できなくなりました。読み取り専用のルートファイルシステムを持ち、すべての機能が削除されています。(#9974) - ResponsiveRevisionGC がデフォルトで有効になりました (#9710) - リビジョンは、より明確で一貫性のある名前が付けられるようになりました。(#9740)
🐞 バグ修正 - ドメインは k8s ライブラリの IsFullyQualifiedDomainName() によって検証されます。(#10023) - オートスケーラーにおけるまれな nil ポインター例外を修正しました (#9794) - ラベルが目的のラベルと異なる場合にイングレスが調整されます。(#9719)
Eventing v0.19¶
💫 新機能と変更点 - Config-br-defaults は配信仕様のデフォルトの設定をサポートします (#4328)
🐞 バグ修正 - eventing-webhook が初期作成時に crashloop する可能性のあるバグを修正しました。(#4168) - シンクバインディングソーステストが kind で動作するようにイメージプルポリシーを変更しました。(#4317) - インフォーマー/リスターの不一致により、依存関係の準備が完了しない場合があります。(#4296) - ディスパッチャは、ステータス更新をスキップする代わりに、通常のリコンサイラーのように誤って動作していました。これが通常のリコンサイラーとの戦いで問題を引き起こしていたかどうか疑問です。(#4280) - 問題#4375を修正しました。この問題では、調整ポリシーまたは期間の変更を調整できませんでした。(#4405) - ハンドラーに追加した後でのみ、IMC でのサブスクライバーのステータスの更新を行います。データプレーンが実際に構成される前にサブスクライバーがマークされた場合のエラーを削減します。(#4435) - ネットワークエラー時の再試行 (#4454) - イングレス/フィルターは、適切な k8s ライフサイクルを処理するようになりました。(#3917) - KnativeHistory エクステンションは、チャネルを通過するイベントにはもう追加されません (#4366)
🧹 クリーンアップ - ファザー(テスト関連のコード)をテストファイルに移動し、バイナリにベイクインされないようにします。バイナリサイズのわずかな削減。(#4399) - DeliverySpec の検証は、負の再試行構成を拒否します。(#4216) - mtbroker リコンサイラー構造から未使用のフィールドをクリーンアップします。(#4318) - ハードコードされたパスを使用する代わりに、ブローカー参照を指します。また、他のブローカーに対して再利用しやすくなります。(#4278) - ファザーをプルする場所を削減します。(#4447) - IMC 実装を簡素化し、グローバルリシンクによる変更を削減します。(#4359) - Codecov を実行するために GitHub Actions を使用します。(#4237) - バイナリからすべての Knative ファザーを削除します。(#4402) - ContainerSource を v1 API に移動します。(#4257) - Eventing は、プレサブミットでサポートされている Kubernetes バージョン範囲をテストするようになりました。(#4273) - GitHub Actions で 4 時間ごとに kind e2e テストを実行します。(#4412) - go-retryablehttp を v0.6.7 に更新しました (#4423)
Eventing コントリビューション v0.19¶
Eventing Kafka ブローカー v0.19¶
eventing-kafka-broker のリリースノート
必要なアクション(アップグレード前) - `kubectl delete configmap -n knative-eventing kafka-broker-brokers-triggers` を実行してください。
🚨 ブレーキングチェンジ - デフォルトのレプリケーションファクターは 3 です(以前は 1)。(#375)
💫 新機能と変更点 - eventing-kafka.yaml
を使用して、BrokerとKafkaSinkをインストールできるようになりました。(#367) - データプレーンポッドは、Prometheus形式でサーバーとクライアントのメトリクスを公開します。(#231 #244) - レシーバーコンポーネントは以下を公開します: - http_requests_produce_total
- 受信されたproduceリクエストの数(200レベルのレスポンス) - http_requests_malformed_total
- 形式の正しくないproduceリクエストの数(400レベルのレスポンス) - ディスパッチャーコンポーネントは以下を公開します: - http_events_sent_total
- Apache Kafkaに配信されたイベントの数 - Brokerはイベントの送信を再試行します。(#268 #263 #258)
🐞 バグ修正 - コントローラーからconfig-loggingボリュームを削除しました(#288) - デバッグモードで大きな設定をログ記録しているときにスレッドがブロックされる問題を修正しました(#346 #378)
🧹 クリーンアップ - コンテナイメージのサイズが約287MBから約90MBになりました。(#265 #306) - シャットダウン時のリソースのクリーンアップを改善しました(#334) - KafkaSink
の使用方法: https://gist.github.com/matzew/e2c2fcd2696a346f25b8bc9e64bfd0fa
Eventing Gitlab v0.19¶
イベントングGitLabのリリースノート (eventing-gitlab)
💫 新機能と変更点 - GitLabSourceインスタンスによって発行されたイベントタイプを宣言し、Knative EventTypesとして伝播されるようにします。(#24)
🐞 バグ修正 - 発行されたCloudEventsのtype属性をサニタイズして、スペースと大文字を含まないようにします。(#24)
🧹 クリーンアップ - 発行されたCloudEventsのsource属性が安定して予測可能になるようにします。(#24)
Eventing RabbitMQ v0.19¶
イベントングRabbitMQのリリースノート (eventing-rabbitmq)
💫 新機能と変更点 - デッドレターキューを実装しました。
🐞 バグ修正 - トリガー依存関係が常に正しく追跡されないバグを修正しました - デフォルト以外のクラスタ名でネットワーク名が間違っているバグを修正しました。
🧹 クリーンアップ - e2eテストにKindを使用し、Knativeからの共通GitHub Actionsを使用します。
クライアント v0.19¶
kn
0.19.0では、2つの新しいコマンド(kn service apply
とkn service import
)が導入され、いくつかの非推奨オプションが削除されました。さらに、バグ修正やその他の機能強化も行われています。- 変更の完全なリストは、CHANGELOGをご覧ください。
🚨 破壊的変更
次の非推奨オプションが削除されました。
- すべてのCRUDコマンドの
--async
。代わりに--no-wait
を使用してください。 - サービス管理時の
--requests-cpu
、--request-memory
、--limits-cpu
、--limits-memory
。代わりに--limit memory=..
と--limit cpu=...
を使用してください(--request
も同様)。両方のオプションを--limit memory=256Mi,cpu=500m
のように組み合わせて使用できます。
💫 新機能と変更点
kn service apply
¶
-
Knativeサービスの宣言的な管理を可能にする新しい
kn service apply
コマンドが追加されました。この新しいコマンドは、特にCI/CDコンテキストで、サービスの作成または更新時の冪等性を確保するために役立ちます。これはkubectl apply
と同様に機能し、サービスを更新するためにクライアント側の3方向マージアルゴリズムを使用します。kubectlのマージアルゴリズムが直接ここで再利用されます。applyはKnativeのカスタムリソースタイプで動作するため、CRDを扱う際のkubectl applyのクライアント側マージアルゴリズムと同じ制限があります。つまり、配列はマージされず、更新によって上書きされます。この制限は、すべてのコンテナ固有のパラメーターに影響します。 -
将来、
kubectl apply
が本質的なK8sリソースに対してサポートしているように、完全な戦略的3方向マージをサポートするより優れたマージアルゴリズムを追加する予定です。 -
kn service apply
はkn service update
とは根本的に異なることに注意することが重要です。kn service apply
では、コマンドラインオプションまたは--filename
と共に宣言ファイル内で、完全な設定を提供する必要があります。kn service update
では、更新する部分のみを指定し、他のサービス設定には影響しません。applyのこの特性は、常にイメージをkn service apply
の唯一の必須パラメーターとして提供する必要があることも意味します。 -
例:
# 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
はkn service export
に対応するもので、エクスポートされたサービスと、トラフィック分割で参照されているアクティブなリビジョンをインポートできます。 -
このコマンドはまだ実験的としてマークされており、リビジョンの
generation
の作成方法にいくつかの既知の問題があります。この機能のサポートを改善する方法について、フィードバックをお寄せください。
その他のCLI機能¶
以下のその他の機能も追加されました。
- リリースされたアーティファクトに
arm64
フレーバーと、すべてのアーティファクトのsha256sumを含むchecksum.txt
が追加されました。 - チャネルを名前で直接アドレス指定できるように、
--sink
パラメーターにchannel:
プレフィックスが追加されました。 - エイリアスがヘルプメッセージに正しく表示されるようになりました。
- サービスをリスト表示する際に使用できる新しいリストフィルター
WithLabel()
としてクライアントAPIが追加されました。
オペレーター v0.19¶
新しいオペレーターは、サービングコンポーネントとイベントングコンポーネントの新しいバージョンv0.19
をデプロイできるようになりました。
🐞 バグ修正 - フィールドspec.versionへの検証を追加しました(#319) - spec.versionのmajor.minor形式をサポートしました(#326) - 0.17.0の不正なプリジョブを削除しました(#325)
🧹 クリーンアップ - pkg test/KubeClientの変更を更新しました(#304) - Lint:以前の条件にreturn文が含まれているため、else文を削除しました(#305) - Istioの依存関係を削除し、非構造化操作に置き換えました(#311) - pkg/errorsへの依存関係を削除しました(#310) - カスタマイズされたマニフェストと一致するバージョンマッチングメカニズムとしてmajor.minorを検証します(#320) - スクリプトにhackリポジトリを使用します(#333) - 新しいupdate_depsスクリプトを使用します(#332)
コントリビューターへの感謝 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
詳細情報¶
Knativeは、コミュニティの誰もが使用、改善、そして楽しむことができるオープンソースプロジェクトです。ぜひご参加ください!
- Knativeへようこそ
- 入門ドキュメント
- サンプルとデモ
- Knativeミーティングとワーキンググループ
- 質問と問題
- Knativeユーザーメーリングリスト
- Knative開発メーリングリスト
- TwitterでKnativeをフォロー @KnativeProject
- StackOverflowでKnativeについて質問する StackOverflow
- Knative Slack Slack
- Knative YouTubeチャンネル YouTube