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

Kong Gatewayに関する更新情報

2022年12月19日に、Kubernetes上でKongを利用するためのKong Ingress Controllerのバージョン2.8.0がリリースされました。このバージョンには25件の更新が含まれ、その内訳は重大な変更が1件、既知の問題が1件、非推奨が1件、機能追加が13件、不具合対応が9件でした。

更新情報のソース:https://github.com/Kong/kubernetes-ingress-controller/blob/main/CHANGELOG.md#280

重大な変更

  • CombinedRoutes 機能フラグはデフォルトで有効になり、従来のルート生成は非推奨となりました。これにより、ルーティングに影響を与えることなく設定サイズを小さくすることができますが、ルート名とIDが変更されます。ルート名やIDでデータを追跡するメトリクスモニター等のシステムでは、連続性が途切れることになります。feature gates documentで、より詳細な変更点が説明されています。移行に関する質問や懸念がある場合は、deprecation issueにコメントをお願いします。#3132

既知の問題

  • kong-custom-entities-secret フラグまたは CONTROLLER_KONG_CUSTOM_ENTITIES_SECRET 環境変数によるカスタムエンティティの処理が機能しない。#3278

非推奨

  • Kong Ingressのproxyとrouteフィールドは廃止され、ServiceとIngressアノテーションが使用されるようになりました。0リリースでは、このアノテーションがこれらの設定を行う唯一の手段となる予定です。#3246

機能追加

  • CombinedRoutes 機能の HTTPRoute サポートを追加しました。有効にすると、同一の backendRef を持つHTTPRouteRule オブジェクトは、ルールごとにサービスを生成する代わりに単一の Kong サービスを生成し、同一の backendRef を使用する HTTPRouteRule.HTTPRouteMatche オブジェクトは、マッチごとに常にルートを生成する代わりに単一の Kong ルートに統合でき、構成サイズを縮小できます。ただし、以下の制限があります。
    • HTTPRouteRuleオブジェクトは、異なるHTTPRouteに属している場合、単一のKongサービスに統合することはできません。
    • HTTPRouteRuleオブジェクトが異なるHTTPBackendRef[]オブジェクトを持っている場合、HTTPRouteRuleオブジェクトを1つのKongサービスに統合することはできません。バックエンドリファレンスの順序は重要ではありません。
    • 親であるHTTPRouteRuleオブジェクトが単一のKongサービスに統合できない場合、HTTPRouteMatchオブジェクトを単一のKong Routeに統合することはできません。
    • 親であるHTTPRouteRuleオブジェクトが異なるHTTPRouteFilter[]フィルタを持っている場合、HTTPRouteMatchオブジェクトは、単一のKong Routeに統合することはできません。
    • HTTPRouteMatchオブジェクトが異なるマッチング仕様(Header、HTTPHeaderMatch.QueryParams、HTTPHeaderMatch.Method)を持っている場合、単一のKong Routeに統合することはできません。HTTPRouteMatch[]オブジェクト間で異なるHTTPHeaderMatch.Pathのパスがあっても、連結は妨げられません。この変更は、機能的にはルーティングに影響しません。CombinedRoutesが有効な場合、元のメソッドで特定のサービスに行ったリクエストは、依然として同じサービスに行きます。#3008, #3060
  • デフォルトのコントローラーのキャッシュ同期タイムアウトを変更するための –cache-sync-timeout フラグを追加しました。#3013
  • シークレットのバリデーションを導入しました。CA 証明書が期限切れの場合、Kong に同期されません。#3063
  • オブジェクトキャッシュにシークレットを格納するロジックを変更しました。Kongのコンフィギュレーションで使用される可能性のあるシークレットのみがキャッシュに保存され、無関係なシークレット(例:サービスアカウントトークン)は保存されないようになりました。この変更は、キャッシュのメモリ使用量を減らすために行われました。#3047
  • サービスは、connect、read、writeのタイムアウトのためのアノテーションをサポートします。#3121
  • サービスは再試行のためのアノテーションをサポートします。#3121
  • ルートはヘッダに対するアノテーションをサポートします。これらは、特別なcom/headers.HEADERNAME フォーマットを使います。例えば、Ingressに konghq.com/headers.x-example: green を追加すると、 x-example: green のリクエストヘッダを持つリクエストにのみマッチするルートが作成されます。#3121, #3155
  • ルートは、パス処理のためのアノテーションをサポートします。#3121
  • 以下の場合に、Warning Kubernetes API イベントで KongConfigurationTranslationFailed の理由が記録されるようになりました。
    • CA シークレットが Kong コンフィギュレーションに正しく変換されない場合 #3125
    • 単一のルートをバックアップするサービスのアノテーションが一致しない場合 #3130
    • サービスが参照するclient-certが存在しない場合 #3137
    • Ingress関連の問題の1つが発生した場合(例: バックとなるKubernetesサービスが見つからない、マッチするKubernetesサービスポートが見つからない)。#3138
    • Gateway Listenerに複数のCertificateRefが指定されているか、有効なTLSキーペアを持たないSecretが参照されている場合 #3147
    • Ingressが、存在しないTLSシークレットを参照しているか、有効なTLSキーペアを持たない場合 #3150
    • HTTPRouteにbackendRefsが指定されていない場合 #3167
  • CRDのバリデーションの改善。Port, IngressRule.Port, IngressBackend.ServiceName は Parser で検証される代わりに、Kubernetes API で検証されるようになりました。#3136
  • ゲートウェイAPI。GEP-957 で定義された HTTPRoute, TCPRoute, TLSRoute のポートマッチングを実装。#3129, #3226
  • Gateway APIを追加しました。AllowedRoutes によるルートのマッチング #3181
  • Kong Ingressの非推奨フィールドのいずれかが入力されると、Admission webhookが警告を出すようになりました。#3261

不具合対応

  • コントローラーは、矛盾したサービスアノテーションを持つマルチサービスルールに対してエラーを記録し、スキップするようになりました。以前は、この問題は修正されるまでコントローラーが設定を適用するのを妨げていました。#2988
  • Gateway API が5.1 に更新されました。このバージョンでは、コンフォーマンステストのロジックにいくつかの変更が加えられています。リスナーの TLS コンフィグが存在しないシークレットを参照している場合、リスナーの ResolvedRefs 条件の理由が InvalidCertificateRef に設定されるようになりました。さらに、TLS構成が別の名前空間の秘密を参照し、その参照を許可するReferenceGrantがない場合、リスナーのResolvedRefsの条件理由はRefNotPermittedに設定されます。#3024
  • Distroless ターゲットは Dockerfile の最後のターゲットになりました。これにより、docker buildx buildがターゲットなしで起動された場合、これがデフォルトのターゲットとなります。カスタムイメージビルドパイプラインではターゲットを指定する必要がありますが、この変更により、デフォルトは公式リポジトリにある標準の kong/kubernetes-ingress-controller:X.Y.Z タグと同じターゲットがリリースされるようになりました。#3043
  • CRDがインストールされていない場合に、コントローラーがクラッシュすることはなくなりました。代わりに、指定されたリソースコントローラーが無効になったことを知らせる明示的なメッセージが記録されるようになりました。#3013
  • シグナル処理とキャンセルを改善しました。この変更により、Admin APIへの壊れた接続や最初のデータプレーンの同期が適切にキャンセルされるようになりました。#3076
  • デプロイマニフェストの Admin と Proxy のリスナーは、デフォルトのアップストリームconf と同じパラメータを使用するようになりました。#3165
  • 親ゲートウェイのリスナーがhostnameを指定した場合に,HTTPRouteでホスト名をフィルタリングする動作を修正しました。HTTPRouteがホスト名を指定しておらず,かつ親リスナーのいずれかがホスト名を指定していない場合,HTTPRouteは任意のホスト名とマッチします。HTTPRouteがホスト名を指定しており,親リスナーで交差するホスト名が見つからなかった場合,HTTPRouteは受け付けられません。#3180
  • ゲートウェイ API のルートオブジェクトの parentRefs に含まれる sectionName にマッチする。これにより、ルートが parentRefs で sectionName を指定し、指定した名前にマッチするリスナーがいない場合、そのルートは受け入れられません。#3230
  • GatewayのListenerに指定されたプロトコルに一致するKong Listenerがない場合、Listenerのステータスに1つのDetached条件のみが作成されます。#3257

Kong Gatewayに関する更新情報

2022年12月9日に、Kong Gatewayのバージョン3.1.1がリリースされました。このバージョンには1件の不具合対応が含まれます。

更新情報のソース:https://github.com/Kong/kong/blob/3.1.1/CHANGELOG.md#311

不具合対応

  • worker がクラッシュする可能性のある問題に対処するため、atc-router を0.2 に更新#9927

Kong Gatewayに関する更新情報

2022年12月5日に、Kong Gatewayのバージョン3.1.0がリリースされました。このバージョンには47件の更新が含まれ、その内訳は機能強化が18件、不具合対応が20件、仕様変更が2件、依存ライブラリの更新が7件でした。

更新情報のソース:https://github.com/Kong/kong/blob/3.1.0/CHANGELOG.md#310

機能強化

  • confのsslプロパティをvaultsまたは環境変数に格納できるようにした。そのようなプロパティをコンテンツやbase64エンコードされたコンテンツとして直接設定できるようになりました。#9253
  • スキーマにおける完全なエンティティ変換のサポートを追加 #9431
  • スキーマmapのタイプフィールドを参照可能としてマークできるようになりました#9611
  • ログレベルを動的に変更するためのサポートを追加 #9744
  • 非対称鍵の保存と管理のためのkeysのエンティティを追加 #9737
  • keyのグループ化と管理のためにkey-setsのエンティティを追加 #9737
  • レート制限プラグイン:レート制限されたリクエストの HTTP ステータスコードとレスポンスボディをカスタマイズできるようになりました #8930
  • Zipkinプラグイン:Zipkin プラグインに response_header_for_traceid フィールドを追加しました。このプラグインは、フィールドが文字列値で指定された場合、レスポンスに対応するヘッダを設定します。#9173
  • AWS Lambdaプラグイン:awsgateway_compatibleの入力データにrequestContextフィールドを追加#9380
  • ACMEプラグイン:設定プロパティstorage_config.redis.ssl, config.storage_config.redis.ssl_verify, config.storage_config.redis.ssl_server_name を通じて Redis SSL のサポートを追加しました #9626
  • Sessionプラグイン:ブラウザが閉じられていてもクッキーを持続させることができる、新しい設定cookie_persistentを追加しました。デフォルトはfalseで、これはブラウザの再起動の間、クッキーを持続させないことを意味します。 #8187
  • Response Rate Limitingプラグイン:Redis SSL のサポートを追加し、設定プロパティ redis_ssl (true または false に設定可能)、ssl_verify、および ssl_server_name を使用します。#8595
  • OpenTelemetryプラグイン:headersフィールドに参照可能な属性を追加し、vaultsに格納できるようにしました。#9611
  • データプレーンノード ID が再起動後も保持されるようになりました。#9067
  • Hybrid Mode 接続のための HTTP CONNECT forward proxy サポートを追加しました。新しい設定オプション cluster_use_proxy, proxy_server, proxy_server_ssl_verify が追加されました。#9758, #9773
  • lua_regex_cache_max_entries のデフォルト値を増加させ、regex のルートが多すぎて router_flavor がtraditionalである場合に警告を投げるようにしました。#9624
  • Datadog と StatsD プラグインにバッチキューを追加して、タイマーの使用量を削減します。#9521
  • client.tls.request_client_certificateを拡張し、受け入れたCA証明書のDN(Distinguished Name)リストのヒントを設定できるようにしました。#9768

不具合対応

  • 外部プラグインが未処理の例外でクラッシュした場合、自動再起動後にCPU使用率が高くなる問題を修正しました。#9384
  • Zipkin プラグインが無効な OT バゲージパターンのために OT バゲージヘッダーをパースできない問題を修正しました。#9280
  • バランサーの upstream に use_srv_name オプションを追加しました。#9430
  • header_filter のインストルメンテーションでスパンが正しく作成されない問題を修正しました。#9434
  • ルーター構築で、フィールドに空のテーブルが含まれる場合、生成された式が無効となる問題を修正。#9451
  • ルーターの再構築において、パスフィールドが無効な場合にルーターのミューテックスが適切に解放されない問題を修正しました。#9480
  • KONG_PREFIX に相対パスを設定すると kong の docker-start が失敗する問題を修正しました。#9337
  • kong startのエラー処理とプロセスのクリーンアップに関する問題を修正しました。#9337
  • コントロールプレーンワーカーとの最初のデータプレーン接続が確立されたときに、コンフィギュレーションプッシュイベントがドロップされるレースコンディションを修正しました。#9616
  • 保留中のタイマージョブのためにCLIのパフォーマンスが低下するのを修正 #9536
  • リクエスト引数の最大数を100から1000に増やし、リクエスト引数が制限に達した場合は400エラーを返して切り捨てを回避するようにしました。#9510
  • ページングサイズパラメーターが現在のリクエストで指定された場合、次のページにもプロパティーが適用されるようになりました。#9503
  • request.get_uri_captures (kong.request.getUriCaptures) のサポートを追加した #9512
  • service.request.set_raw_body (kong.service.request.setRawBody) のパラメータタイプ、 kong.service.response.get_raw_body (kong.service.request.getRawBody) のリターンタイプ、 kong.response.exit のボディパラメータタイプを bytes に修正しました。この変更後、古いバージョンのgo PDKは互換性がないことに注意してください。#9526
  • 複数のプラグインスキーマに不足しているプロトコルフィールドを追加。#9525
  • AWS Lambdaプラグイン:ECS環境で環境変数が読み込めない問題を修正しました。#9460
  • Request-Transformerプラグイン:ヘッダ名の変更が既存のヘッダを上書きし、予測不可能な結果を引き起こすバグを修正。#9442
  • OpenTelemetryプラグイン:
    • デフォルトのプロパゲーションヘッダーがw3cに正しく設定されていない問題を修正しました。#9457
    • データ競合を避けるために、WorkerレベルのテーブルキャッシュをBatchQueueに置き換えました。#9504
    • w3c traceparent の伝播時に span に parent_id が設定されない問題を修正しました。#9628
  • Response-Transformerプラグイン:Response-Transformer プラグインが、excepted でない body を受け取ったときに壊れるバグを修正した。#9463
  • HTTP-Logプラグイン:キューIDのシリアライゼーションにqueue_sizeとflush_timeoutが含まれない問題を修正しました。#9789

仕様変更

  • TRACEメソッドに対するレスポンスボディをThe upstream server responded with 405 から Method not allowedに、KongがTRACEメソッドをサポートしていないことをより明確に示すレスポンスに変更しました。#9448
  • 従来のハイブリッド設定プロトコルは削除され、0 で導入された wRPC プロトコルに変更されました。#9740

依存ライブラリの更新

  • openssl を1.1q から 1.1.1s に更新 #9674
  • atc-router を0.0 から 1.0.1 に更新 #9558
  • lua-resty-openssl を8.10 から 0.8.15 に更新 #9583, #9600, #9675
  • lyaml を2.7 から 6.2.8 に更新 #9607
  • lua-resty-acme を8.1 から 0.9.0 に更新 #9626
  • healthcheck を 1.6.1 から 1.6.2 に更新 #9778
  • pgmoon を15.0 から 1.16.0 に更新 #9815

 

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