Kong Gateway 3.0 の提供開始

Kong Gateway 3.0 は、Kong のクラウドネイティブ API プラットフォームに新たな進化をもたらす重要なマイルストーンです。Kong Gateway 3.0 の Enterprise とオープンソースの両エディションがお好みの配布チャネルから利用できるようになりました。

Kong Gateway 3.0 では、以下の主要な利点をもたらす多くの強力な機能を導入しています。

  • 強化されたセキュリティとガバナンス: FIPS 140-2 準拠の Kong Gateway ランタイムとセキュアなシークレット ストレージ (Gateway の操作とプラグイン全体で使用) により、セキュリティとコンプライアンス要件を満たします。
  • 柔軟性と拡張性: プラグインの実行順序の選択、WebSocket トラフィックのネイティブ サポートの追加、緊密な OpenTelemetry との統合の活用が可能です。
  • 容易な API 管理: Kong Manager UI の新しい機能はユーザー エクスペリエンスを向上します。複雑なルートを最適化し、ランタイム パフォーマンスを向上する強力な新しいルーティング エンジンが導入されました。
  • パフォーマンスの大幅な向上: Kong 3.0 は、複雑なルーティング シナリオにおいて、Kong 2.8.1.4 と比較して、スループットを 37% 向上し、99 パーセンタイルでは 47% 以上、100 パーセンタイルでは 27% のレイテンシを削減し、メモリ消費量を 9% 削減します。

本リリースの重要な機能を見ていきましょう。

トレースと OpenTelemetry EnterpriseOSS

Kong Gateway の動作を理解することは、どのような展開においても重要です。Kong Gateway は Enterprise と OSS の両方で広範なトレース サポートを提供しています。トレースを開始するには、2 つの方法があります。1 つ目の方法は、すぐに使える OpenTelemetry プラグインを使用して、OTel スパンを直接、準拠するバックエンド、あるいは OpenTelemetry コレクターに送ります。Honeycomb で Kong Gateway をテストしたところ、この方法でうまくいきました。

以下は、mockbin.org への単一のリクエストをプロキシするトレースです。

Kong Gateway 3.0 - 図 1
図 1: mockbin.org への単一のリクエストをプロキシするトレース

以下は、Rate Limiting プラグイン (Redis バックエンドを使用) を有効にした場合の同じリクエストです。

Kong Gateway 3.0 - 図 2
図 2: Rate Limiting プラグインを有効にした同じリクエスト

2 つ目の方法は、Kong のトレース Plugin Development Kit (PDK) を使用して、すべての主要なイベントにフックします。これは OpenTelemetry プラグインの仕組みで、トレース情報の収集とサンプリングの方法、およびそのデータを他のシステムにエクスポートする方法を完全に制御できます。

どちらの方法を選択しても、Kong Gateway の動作を理解することが鍵になります。各リクエストで時間が費やされている場所を特定することで、パフォーマンスを向上する最適化が可能となり、結果としてユーザーの満足度を高めることができます。

Websockets (ベータ) Enterprise

Kong Gateway 3.0 では、2 つの新しい Websocket プラグインと、独自の Websocket プラグインを作成できる Plugin Development Kit (PDK) が提供されます。

新しいプラグインの 1 つは、Websocket フレームが JSON スキーマを使用して正しくフォーマットされていることを確認するため、フレームを検証します。「クライアント」から受け取るフレームと、「アップストリーム」からクライアントに送り返されるフレームを検証できます。

# Require a 'message' key in the payload that's a string
curl localhost:8001/routes/ws-validator-route/plugins -d name=websocket-validator -d config.client.text.schema='{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}' -d config.client.text.type="draft4"

もう 1 つの新しいプラグインは、「クライアント」と「アップストリーム」の両方からフレームのサイズを制限できます。これにより、API とユーザーが、大きすぎてアプリケーションがクラッシュする可能性のあるフレームを受信しないように保護できます。

# Limit frames to 4kb
curl localhost:8001/routes/ws-framesize-route/plugins -d name=websocket-size-limit -d config.client_max_payload=4096

このベータ リリースを始めとして、Kong では Websocket サポートを強化していく予定です。Kong Nation で皆さんのご意見をお聞かせください。

Secrets Management (GA) EnterpriseOSS

Kong Gateway 2.8 でベータ版としてリリースされた Secrets Management が、本リリースで正式にサポートされました。

Secrets Management は、機密情報を外部の保管場所 (OSS の環境変数、AWS Secrets Manager、HashiCorp Vault Enterprise) に安全に保管し、Kong が実行時にアクセスできるようにします。機密性の高い値をシークレットとして保存することで、プラットフォーム、kong.conf や宣言型設定ファイル、ログ、Kong Manager UI でプレーン テキストとして見えないようにします。

さらに、Vault Secret を使用することで、開発環境、ステージング環境、本番環境にそれぞれ固有の値を設定し、全く同じ宣言型設定ファイルで各環境を構成できます。

Secrets Management は簡単に導入できます。これまで、パスワードをプレーン テキストで設定していたあらゆる場所を、次のようなデータ保管場所のパスに置き換えます。

{vault://hcv/redis/password}

Kong は、実行時にその参照を検出し、安全に解決します。

Secrets Management の理解を深めるため、次回のブログでは Proxy Cache Advanced プラグインを使用する際に、HashiCorp Vault に Redis のパスワードを保存する方法を説明します。

FIPS 140-2 準拠 Enterprise

「Federal Information Processing Standards (FIPS)」という言葉をご存じの方 (政府や金融サービス業界で働いている方など) は、この機能に興味を持たれることでしょう。Kong Gateway は、FIPS 140-2 準拠のコアを持つ BoringSSL ベースのビルドの提供を開始しました。

現在、すべてのプラグインを FIPS 準拠に更新中です。特定のプラグインの詳細は、お問い合わせください。

プラグインの順序付け Enterprise

プラグインは Kong Gateway の中核であり、プラグインの実行順序を決めるのは容易ではありません。レート制限は認証の前に実行すべきか? レート制限を確認する前に、リクエスト変換を実行できるようにするべきか? など、さまざまな要因を考慮する必要があります。

チームごとにニーズが異なるため、Kong Gateway 3.0 では、プラグインの実行順序を柔軟に決定できるようにしました。合理的なデフォルトが設定されていますが、総当たり攻撃を防ぐため認証の前にレート制限を実行したい場合は、設定を 1 つ追加するだけです。


curl -i -X POST http://localhost:8001/plugins \
--data name=rate-limiting \
--data config.minute=5 \
--data config.policy=local \
--data ordering.before.access=key-auth

プラグインの順番は、「前」または「後」に実行すべきプラグイン名を指定して、Admin API や decK を使った宣言型設定ファイルで定義できます。

新しいルーティング エンジン EnterpriseOSS

Kong Gateway 3.0 には、アップストリーム API へのリクエストをルーティングする、全く新しいルーティング エンジンが搭載されています。

GET リクエストと POST リクエストが HTTP リクエストである場合のみルーティングするケースについて考えてみましょう。JSON を使ってルートを設定する代わりに、次のように表現できます。


net.protocol == "https" && (http.method == "GET" || http.method == "POST")

これは単純な例ですが、別の例として、特定のホストに一致するホスト名を含むヘッダーのリクエストをルーティングするケースについて考えてみましょう。この場合、次のように表現できます。


(http.host == "example.com" && http.headers.x_example_version == "v2" ) ||
(http.host == "store.example.com" && http.headers.x_store_version == "v1")

このルートは、hostexample.com かつ x-example-version ヘッダーが v2 の場合、またはホストが store.example.com かつ x-store-version ヘッダーが v1 の場合にのみ一致します。これは、Kong Gateway 3.0 の新しいルーティング エンジンの柔軟性がよくわかる例です。2.x で同じ動作を実現するには、2 つの別々のルートを作成する必要があります。

 

新しいルーターは表現力に優れているだけでなく、パフォーマンスも向上しています! 大規模なルーティング設定では、設定変更のたびにルーター全体を再構築する代わりに、インクリメンタルに再ロードできるようになりました。これにより、社内テストでは P99 の時間が 1.5 秒から 0.1 秒に短縮されました。

最後に、2.x の JSON ルーターも引き続き利用できます。サポートが必要な既存のルーティング ルール向けに、3.0 でも既存のルーターを維持しています。kong.conf で router_flavortraditional に設定すれば、2.x と同様に動作します。

Kong Manager 3.0 Enterprise

3.0 では Kong Manager が刷新され、Service、Route、Consumer、Plugin など、Gateway の中核となるエンティティをより直感的に構成できるようになりました。これまで [View Config] ボタンをクリックしないと表示されなかったエンティティの設定がビューに表示され、同じビュー内で編集することが可能です。

Kong Gateway 3.0 - 図 3.5
図 3: 設定の変更点

空の状態から簡単に始められるように、設定オプションを説明するヒントが追加され、サービスやプラグインを誤って削除しないように防止策が取られています。

Kong Gateway 3.0 - 図 4.5
図 4: 設定オプションのヒント

最後に、サービスの Overview ダッシュボードが、より多くの情報を提供し、利便性を高めるように改良されました。提供する API サービスの数、リクエスト数、HTTP ステータスの内訳 (エラー率など) をダッシュボード上で瞬時に確認できます。さらに、ライセンスの期限切れを防ぐため、新しい「License expiration」ウィジェットが追加されました。

Kong Gateway 3.0
図 5: 改良された Overview ダッシュボード

Kong Gateway 3.1 以降では、さらに多くのアップグレードが予定されているので、ご期待ください。

非推奨および削除項目

Kong は安定性を確保するため、メジャー バージョン内のすべてのリリースとの下位互換性を維持しています。

Kong Gateway 3.0 では、製品の品質を向上させるため、以下の項目が非推奨または削除されました。

  • Kong Gateway は、route.path が正規表現パターンであるかどうかを推測するヒューリスティックを使用しなくなりました。3.0 以降では、すべての regex パスの先頭に「~」を付ける必要があります。「~」で始まらないパスはすべてプレーン テキストと見なされます。2.x から 3.0 へアップグレードする場合、移行プロセスによって regex パスが自動的に変換さます。
  • nginx-opentracing モジュールのサポートは 3.0 で非推奨となり、4.0 で Kong から削除される予定です。代わりに、新しいトレース PDK と OpenTracing モジュールを使用してください。
  • Amazon Linux 1 と Debian Jesse オペレーティング システムはサポートされなくなりました。
  • /targets エンドポイントの POST リクエストは、既存のエンティティを更新できなくなりました。エンティティの新規作成のみが可能です。POST リクエストを使用して /target を変更するスクリプトがある場合は、Kong Gateway 3.0 にアップデートする前に、適切なエンドポイントへの PUT リクエストに変更してください。
  • Prometheus プラグインで、高カーディナリティ メトリックがデフォルトで無効になりました。これにより、Prometheus が統計情報を取得する際のデータベースへの負荷が軽減されます。

完全なリストについては、Kong Gateway の変更履歴を参照してください。

その他の注目点

長くなってしまいましたが、最後に本バージョンのその他の機能強化について簡単に触れたいと思います。

  • プラグイン バージョンの調整: これまでは、プラグインのバージョンを正確に把握するのは困難でした。Kong Gateway 3.0 では、プラグインのバージョンをゲートウェイのバージョンと一致させ、どのバージョンのプラグインを実行しているのかを正確に把握できるようになりました。
  • Slim/UBI イメージ: Docker ビルドのベース イメージを debian-slim と rhel-ubi に変更しました。これにより、イメージ サイズとインストールされるパッケージの数が減り、イメージの安全性が高まります。
  • システム認証局: Kongは、デフォルトでホスト OS にインストールされている任意の CA 証明書を使用するようになりました。これにより、すべてのソフトウェアの認証局を 1 箇所で管理できます。
  • LDAP 認証: LDAP 認証プラグインは、LDAP サーバーに対して認証することで、サービスを保護します。Kong Gateway 3.0 は、グループ メンバーに基づく認証をサポートします。これにより、「FinanceDev チームのメンバーだけにこの API へのアクセスを許可する」というような設定が可能になります。

今すぐ Kong Gateway 3.0 を使い始めましょう

機能、修正、アップデートの完全なリストは、Kong Gateway の変更履歴と Kong Gateway OSS の変更履歴を参照してください。

今すぐ Kong Gateway 3.0 を使い始めましょう! 商用版、オープンソース版ともに無料でダウンロードできます。すでに Kong Gateway をインストールしている場合、3.0 へのアップグレードは簡単です。アップグレード ガイドを参照してください。

Kong Gateway 3.0 や Kong の最新情報は、Kong Summit を確認してください。


Kong Enterprise の概要、価格、およびライセンス体系などの詳細は、こちらを参照してください。


参考記事: 2022 年 9 月 28 日
Michael Heap
© Kong Inc. 2022
Announcing General Availability of Kong Gateway 3.0

タイトルとURLをコピーしました