推奨モジュールの更新情報(2023年5月)

Kong Gatewayに関する更新情報

2023年05月19日に、Kong Gatewayのバージョン3.3.0がリリースされました。このバージョンには76件の更新が含まれ、機能追加が24件、不具合対応が29件、仕様変更が7件、依存関係が10件、ブレイキングチェンジが6件でした。

更新情報のソース:https://github.com/Kong/kong/blob/release/3.3.x/CHANGELOG.md#330

ブレイキングチェンジ

  • traditional_compatルーターモードにおいて、複数のパスを持つ経路を別々の優先度を持つ複数のatc経路に分割することで、traditionalモードの動作との互換性を向上させました。Kong Gateway 3.0での新しいルーター導入以降、traditional_compatモードではルート内に異なるプレフィックスパス長や正規表現が混在していても、各ルートに1つの優先度しか割り当てられない仕様でした。traditionalルーターではこのように複数の経路を扱うことができませんでしたが、現在ではルート内の各パスに別々の優先度値が割り当てられるように動作が変更されました。#10615
  • http-logstatsdopentelemetrydatadog: キューシステムが改良されたため、一部のプラグインパラメータが期待通りに機能しなくなりました。これらのプラグインでキューを使用する場合、新しいパラメータを設定する必要があります。モジュール tools.batch_queuekong.tools.batch に名前が変更され、API も変更されました。もしカスタムプラグインでキューを使用している場合は、新しいAPIを使用するように更新する必要があります。#10172
  • http-log: ログサーバーが3xx HTTPステータスコードで応答した場合、プラグインはそれをエラーとみなし、retry設定に従って再試行します。以前は、3xxステータスコードは成功と解釈され、ログエントリーが削除されることがありました。#10172
  • Serverless Functions: cache は Serverless Functions プラグイン専用のキャッシュインスタンスを指すようになりました、グローバルな kong キャッシュへのアクセスは提供しません。kong.configurationの特定のフィールドへのアクセスも制限されました。#10417
  • Zipkin: Zipkinプラグインは、内部バッファリングにキューを使用するようになりました。キューイング動作を制御するために、標準のキューパラメータセットが利用可能です。#10753
  • Tracing:tracing_sampling_rateのデフォルトが、以前の1(すべてのリクエストをトレースする)ではなく、01(100リクエストのうち1つをトレースする)になりました。すべてのリクエストをトレースすることは、ほとんどのプロダクションシステムでは不適切であるためです。 #10774

機能追加

  • runloopとinitのエラーレスポンスのコンテンツタイプをAcceptヘッダー値に準拠させました。 #10366
  • コアエンティティ ca_certificates、certificates、consumer、target、upstreams、plugins、workspaces、clustering_data_planes、snis に新しいフィールド updated_at を追加しました。#10400
  • カスタムエラーテンプレートを設定できるようにしました。#10374
  • デフォルトで解析されるリクエストヘッダー、レスポンスヘッダー、URIアーギュメント、ポストアーギュメントの最大数を、新しい設定パラメータlua_max_req_headers, lua_max_resp_headers, lua_max_uri_args, lua_max_post_argsで設定できるようになりました。 #10443
  • メタデータ情報を提供するために、データプレーンに対してラベルを設定できるようにしました。ラベルは、Kong Connect(SaaS)を使用したハイブリッドモードのデプロイメントにのみ対応します。 #10471
  • コアエンタイトおよびバンドルプラグインのエンティティにPostgresトリガーを追加し、期限切れの行を効率的かつタイムリーに削除するようにしました。#10389
  • ノードIDの設定をサポートしました。 #10385
  • リクエストとレスポンスのバッファリングオプションが、HTTP 2.0の着信リクエストでも有効になりました。#10595 #10204
  • Kongが上流にプロキシする際にDNS解決にかかる時間を記録できるように、ctxKONG_UPSTREAM_DNS_TIMEを追加しました。#10355
  • Tracing:トレースバックエンドでのフィルタリングを簡素化するためにスパンの名前を変更しました。#10577
  • ダイナミックログレベルのタイムアウトに対応しました。 #10288
  • プロキシ経由の場合、クライアントのIPを取得するための新しいspan属性client_ipを追加しました。#10723
  • upstreams/<upstream>/health?balancer_health=1 エンドポイントは、新しい属性値 balancer_health を通して、バランサの状態を常に表示するようになりました。この属性はアップストリーム全体の健康状態が HEALTHCHECKS_OFF であっても、常に HEALTHY または UNHEALTHY を返し、バランサの真の状態を報告します。#5885
  • status_listenサーバーは、Kongの健全性を監視するための/status/ready APIが追加され、強化されました。このエンドポイントは、有効かつ空でない設定がロードされ、Kongがユーザーリクエストを処理する準備が整っている場合にのみ、GETリクエストの受信に対して200レスポンスを提供します。ロードバランサーは、この機能を頻繁に利用することで、Kongの可用性を確認し、インカミングのリクエストを分散させます。#10610, #10787
  • ACME: acme プラグインが keykey_setsaccount_key を設定できるようになりました。 #9746
  • Proxy-Cache: キャッシュキーの URI を小文字で処理する設定に ignore_uri_case を追加しました。 #10453
  • HTTP-Log: 文字セット宣言を必要とするログコレクター向けに、http-log プラグインの Content-Type ヘッダーに application/json; charset=utf-8 オプションを追加しました。#10533
  • Datadog: hostの値を参照できるようにしました。#10484
  • Zipkin&Opentelemetry: http レスポンスヘッダの traceid を hex 形式に変換 #10534
  • ACME: 後方互換性を保つため、デフォルトが空文字列であるredisストレージのnamespaceの設定をサポートしました。#10562
  • AWS Lambda: Lambda サービス API エンドポイントでスキーム構成をサポートするために新しいフィールド disable_https を追加しました。#9799
  • OpenTelemetry: ダウンストリームの Datadog トレースでスパンが正しく相関されるようになりました。10531
  • OpenTelemetry: header_typeフィールドを追加しました。以前のheader_type preserve にハードコードされていましたが、現在は preserve, ignore, b3, b3-single, w3c, jaeger, ot のいずれかを設定可能です。#10620
  • PDK で plugin.get_id からプラグイン ID を取得することが可能になりました。#9903

不具合対応

  • アップストリームキープアライブプールにCRC32のコリジョンが発生する問題を修正しました。#9856
  • 古いバージョンのデータプレーンに対して、コントロールプレーンがaws_lambdazipkinの設定をダウングレードしない問題を修正しました。#10346
  • 古いバージョンのデータプレーンのsessionで、コントロールプレーンがフィールドの名前を正しく変更しない問題を修正しました。#10352
  • DBレスKongで旧式のコンフィグを使用した場合、regexルートへのバリデーションがスキップされることがある問題を修正しました。#10348
  • トレースによって予期せぬ動作が発生する可能性がある問題を修正しました。#10364
  • header_filterフェーズでkongが上流からステータスコードを変更した場合に、バランサーのpassive healthcheckが誤ったステータスコードを使用する問題を修正しました。#10325 #10592
  • ネストしたレコードでスキーマ検証に失敗した場合、エラーが正しく伝搬されない問題を修正しました。#10449
  • Dockerコンテナにおいて、Kongが適切に停止されていない場合に、Unixソケットの影響で再起動ができなくなる問題を修正しました。#10468
  • 従来のルーターのソース/デスティネーションに対するソート機能で、”Invalid order function for sorting “エラーが発生する不具合を修正しました。#10514
  • 頻繁なDNSクエリによって発生するUDPソケットリークを修正しました。#10691
  • mlcacheのオプションshm_set_triesの誤植を修正しました。#10712
  • Goプラグインサーバーの起動が遅いためにデッドロックが発生する問題を修正しました。#10561
  • トレース:受信する伝搬ヘッダーのサンプリングフラグが正しく処理されず、一部のスパンにしか影響しない問題を修正しました。#10655
  • トレース:OpenRestyのHTTPクライアントリクエストでhttp_clientスパンが作成されない問題を修正しました。#10680
  • トレース:バランサースパンの開始時刻と終了時刻の精度を低下させる近似値の問題を修正しました。#10681
  • トレース:tracing_sampling_rateのデフォルトが、以前の1(すべてのリクエストをトレースする)ではなく、01(100リクエストのうち1つをトレースする)に変更されました。すべてのリクエストをトレースすることは、ほとんどのプロダクションシステムで不適切であるためです。 #10774
  • Vaultリファレンスを使用している場合、Kongの停止がエラーになることがある問題を修正しました。 #10775
  • Vaultの設定が変更されても、スティッキーでキャッシュされたままになっていた問題を修正しました。#10776
  • チャンクエンコードされたレスポンスデータの破損につながる openresty ngx.print チャンクエンコーディングバッファのダブルフリーバグの修正をバックポートしました。#10816 #10824
  • URIの引数custom_idの値が空だと、/consumerがクラッシュする問題を修正しました。#10475
  • Request-Transformer: 不正なクエリパラメータでリクエストが断続的にプロキシされる問題を修正しました。10539
  • Request Transformer: untrusted_lua 設定パラメーターの honor 値 #10327
  • OAuth2: OAuth2 トークンが誤ったサービスにアクセスした際に nil にキャッシュされる問題を修正しました。#10522
  • OpenTelemetry: OpenTelemetryの再設定が反映されない問題を修正しました。#10172
  • OpenTelemetry: トレースバックエンドでスパンが正しく伝搬されず、間違った階層がレンダリングされる問題を修正しました。#10663
  • gRPC gateway:JSONペイロードに含まれたnull値によって、encode中に捕捉不能な例外が発生する問題に対応しました。#10687
  • Oauth2: あるプラグインインスタンスで作成された認証コードが、別のプラグインインスタンスでアクセストークンと交換されることを防ぎます。#10011
  • gRPC gateway:JSONの空配列が“{}”として不正にエンコードされる問題を修正しました。“[]”としてエンコードし、標準に準拠させます。#10790
  • PDKをトレースする際に、サンプルレートが効かない問題を修正しました。#10485

仕様変更

  • Postgres TTLクリーンアップタイマーは、Admin APIを有効にしたトラディショナルプレーンとコントロールプレーンのノードでのみ実行されるようになりました。#10405
  • Postgres の TTL クリーンアップタイマーが、各 TTL 有効テーブルで、バッチごとに000 行の削除ループを実行するようになりました。#10407
  • PostgresのTTLクリーンアップタイマーが60秒ごとから5分ごとに実行されるようになりました。#10389
  • Postgres TTLクリーンアップタイマーが、データベースサーバー側のタイムスタンプに基づいて期限切れの行を削除するようになり、Kongとデータベースサーバー間の時計時刻の違いによって引き起こされる潜在的な問題を回避できるようになりました。#10389
  • get_uri_capturesが無名部分を配列としてタグ付けして返すようになりました。(json化するため)。#10390
  • Request-Termination: echo オプションが使用された場合、uri-capture が返却されない問題に対応しました。 #10390
  • OpenTelemetry: OpenTelemetry プラグインに http_response_header_for_traceid フィールドを追加しました。このフィールドが文字列値で指定された場合、プラグインはレスポンスに対応するヘッダーを設定します。#10379

依存関係

  • lua-resty-session を0.2 から 4.0.3 へ更新。 #10338
  • lua-protobuf を3.3 から 0.5.0 へ更新。 #10137 #10790
  • lua-resty-timer-ng を2.3 から 0.2.5 へ更新。 #10419 #10664
  • lua-resty-openssl を8.17 から 0.8.20 へ更新。 #10463 #10476
  • lua-resty-http を17.0.beta.1 から 0.17.1 へ更新。 #10547
  • LuaSec を2.0 から 1.3.1 へ更新。 #10528
  • lua-resty-acme を10.1 から 0.11.0 へ更新。 #10562
  • lua-resty-events を1.3 から 0.1.4 へ更新。 #10634
  • lua-kong-nginx-module を5.1 から 0.6.0 へ更新。 #10288
  • lua-resty-lmdb を0.0 から 1.1.0 へ更新。 #10766

 

 

本ページに関する免責事項については、推奨モジュールの更新情報ページをご確認下さい。