ハイブリッドでクラウドネイティブなアーキテクチャを管理、保護、接続する、スケーラブルで高速、オープン ソースのマイクロサービス API ゲートウェイ、 Kong 1.0 GA 版のリリースを本日発表できることを大変うれしく思います。Kong はあらゆるサービスの手前で実行可能で、認証、トラフィック制御、可観測性などのプラグインを通じて拡張できます。
1.0 のリリースにより、今後の後方互換性が確実なものとなります。長年の開発と数千人にわたる実稼働ユーザーを経て、より高速で、柔軟性と回復性を持ち備えた Kong に、以下に挙げる重要な機能および修正が追加されました。
サービス メッシュ
1.0 では、API ゲートウェイとしてだけでなく、スタンドアロンのサービスメッシュプロキシとしても Kong をデプロイできるようになりました。 Kong のプラグインによって、サービス メッシュの主要な機能が即時に提供され、Prometheus、Zipkin、 ヘルス チェック、カナリア、ブルーグリーンなど、他のクライドネイティブなテクノロジとの統合も可能となりました。
相互トランスポート層セキュリティ (mTLS) と TCP
1.0 では、Kong クラスターによる認証局 (CA) を介し、Kong ノードは相互トランスポート層セキュリティ認証を確立できます。さらに、Kong では、生の TCP トラフィックをルーティングできるようになり、ロードバランサー L7 から L4 にいたるまで、メール サーバーや TCP ベースのアプリケーションからのトラフィックを分散できます
gRPC
Kong 1.0 は、REST に加え、gRPC プロトコルもサポートしています。HTTP/2 上に構築された gRPC のサポートにより、低オーバーヘッド、低レイテンシで East-West トラフィックの接続を望む Kong ユーザーのオプションが拡がります。これは、ハイブリッド環境でメッシュ構造のデプロイメントを展開する上で特に役立ちます。
新しいマイグレーション フレームワーク
Kong 1.0 には、新しくデータベース抽象化オブジェクト (Database Abstraction Object/DAO) が導入されており、データベース スキーマ間でのマイグレーションをほぼダウンタイムなしで実現します。この DAO により、各ノードを手動操作でアップグレードすることなく、Kong クラスターを一度にアップグレードできます。
プラグイン開発キット (PDK)
プラグイン開発キット (PDK) は、カスタムプラグイン独自のロジックを Kong に実装するための Lua 関数と変数です。PDK は 0.14.0 ですでにリリースされましたが、1.0 では、新たに PDK で構築したプラグインとバージョン 1.0 以降の Kong の互換性を追加しています。
100 を超える新機能と修正
Kong のリリースに伴うすべての変更箇所は、Changelog に列挙されています。今回のリリースでは、いくつかの大きな変更点がありますので、1.0 の推奨アップグレード パスを必ずご参照ください。
Kong のこれから
Kong は現時点で安定性と後方互換性を約束していますが、Kong の進化はまだまだ続きます。ユーザーの皆さまと共にこのプロジェクト、そしてコミュニティを強化し続けていくことを非常に嬉しく思っています。皆さまの多大なサポートのおかげでこの大きなマイルストーンを迎えられたことを、心から感謝いたします。そして、今後も皆さまと共に成長していくことを楽しみにしています。
Kong 1.0 をお試しの上、フィードバックをお寄せください。
追加情報
4 年前に Kong をオープンソース化して以来、世界中の何百人もの共同作成者が Kong のコードベースに無数の改良を加えてくれたおかげで、今回の 1.0 リリースを迎えることができました。1.0 の新機能や修正点を紹介する前に、素晴らしい Kong のユーザー コミュニティおよび共同作成者の皆さまに感謝の意を表したく思います。Kong をオープンソース化した時に、今日も成長し続ける Kong のコミュニティがここまで育つとは想像にもおよびませんでした。
「Kong は、ハイブリッドの世界を念頭に生み出され、Kong 1.0 はそのビジョンにおける重要なステップとなりました。コミュニティの皆さまと共に、ベンダー、環境、エコシステムの相違に関わらずデプロイメントが可能となるサービス メッシュのサポートなど、プラットフォームのアーキテクチャに大きな変更を施しました。これからは、さらに新しく発生するエコシステムのサポートに向けてコミットします。」 – Kong CTO/Marco Palladino 氏
それでは、1.0 の新機能のいくつかについて、またそれらがどのように皆さまの役に立てるのかを詳しく見ていきましょう。
サービス メッシュのサポート
1.0 では、Kong をスタンドアロンのサービス メッシュとしてデプロイできます。 サイドカー プロキシが可視性、セキュリティ、回復性をより強化し、サービス メッシュはマイクロサービスの課題に対応しています。これらの利点に加え、Kong のサービス メッシュは、サイドカー プロキシとしてエッジで使用するのと同様のランタイムを投入することで、他のベンダーに比べていくつかの重要なアドバンテージを提供しています。
即座に開始
Kong では、エッジで使用しているのと同じ機能を瞬時にメッシュに拡張できます。サービスを実行しているコンテナーと同じホストに Kong をデプロイすることにより、独自のペースで簡単にサービスをメッシュに移動できます。
シームレスな接続
メッシュ内のサービスをすべての環境、プラットフォーム、ベンダーに接続しましょう。Kong を使って、サービスのコードを変えることなく、クラウドネイティブなデザインと従来型のアーキテクチャ パターンのギャップを埋めることができます。
強固なプラグイン ライブラリ
Kong のプラグイン アーキテクチャ は、類まれなる柔軟性を提供しています。Kong のプラグインにより、重要な機能の即時利用が可能となり、Prometheus や Zipkin、その他多数のクラウドネイティブなテクノロジとの統合が実現します。プラグインは、余計にネットワークを介して別のコンポーネントに飛ぶ必要はなく、各サービスについてローカルで実行されます。
低レイテンシ
Kong とそのプラグインのパフォーマンスは、最適化されています。他のプラットフォームでは、コンテナーまたはメッシュ内でのサービス間でレイテンシが生じる可能性があるのに対し、Kong では遅延をミリセカンド以下に抑えます。
gRPC のサポート
Kong 1.0 は、オーバーヘッドを抑えて高パフォーマンスの APIを構築したいユーザーのために、REST に加えて gRPC プロトコルをサポートしています。
相互トランスポート層セキュリティ (mTLS) と TCP のサポート
Kong のサービス メッシュのサポートは、Kong インスタンス間の相互トランスポート層セキュリティ (TLS) の追加と、プラグインの実行ループの変更によって実現しました。これらの変更により、Kong をサービスのインスタンスごとにデプロイすることが可能となり、サービス間において情報を仲介し、サービスの規模に合わせて自動的にスケーリングできます。Kong クラスターによる認証局 (CA) を介し、Kong ノードは mTLS 認証を確立します。
新しい mTLS サポートにより、Kong のコア ルーターは生のTCP トラフィックをルーティングできるようになりました。これにより、メール サーバーや他の TCP ベースのアプリケーションからのトラフィックを分散できます。
データ プレーンとコントロール プレーンの分離
Kong 1.0 では、Kong の設定でコントロール プレーンとデータ プレーンを別々に指定できます。以前は、各クラスターのデータ プレーンとコントロール プレーンを別々に設定する必要がありましたが、現在では一元的な変更が複数の Kong クラスターに反映されます。データ プレーンとコントロール プレーンの分離構成により、大規模なデプロイメントの管理がより容易になりました。また、この分離により、Kong の設定はファイアウォールの背後で保護し、データ プレーンのみを公開できるため、よりセキュアなデプロイメントが可能となります。
新しいマイグレーション フレームワーク
Kong 1.0 では新しいデータベース抽象化オブジェクト (DAO) が導入され、ほとんどダウンタイムなしでのデータ スキーマ間のマイグレーションが容易になりました。Kong クラスターを一度にアップグレーすることが可能となり、各ノードを順番に手動でアップグレードする必要がなくなりました。
プラグイン開発キット
このタイミングで Kong 1.0 を発表した理由には、プラグイン開発キット (PDK) が挙げられます。 プラグインを使った拡張性は、Kong の開発が始まった当初から Kong の設計基準となっており、PDK によってそのプラグインの構築が安全で容易になりました。PDK は 0.14.0 ですでにリリースされましたが、1.0 では、新たに PDK で構築したプラグインとバージョン 1.0 以降の Kong の互換性を追加しています。
プラグイン開発キット (PDK) は、カスタムプラグイン独自のロジックを Kong に実装するための Lua 関数と変数です。プラグインをゼロから作成するのに比べ、以下のような多くの利点があります。
標準化
すべての Kong プラグインには標準機能が必要とされていますが、PDK では追加設定の必要なく提供されています。プラグイン開発者は時間が節約でき、PDK で作成したプラグインは (たとえば同じ解析ルール、同じエラー、など) 同様の動作をするため、使い勝手がよくなることも保証されます。
ユーザビリティ
PDK のインターフェイスは、必要最小限の機能だけを備えた ngx_lua API に比べ、非常に使いやすくなっています。PDK の使用によって、他のプラグインのログやキャッシュなどの操作分離することができます。
互換性
PDK には、後方互換性の管理にセマンティック バージョニング (Semantic Versioning) を導入しています。将来的には、プラグインが依存する PDK のバージョンにロックすることができます。
詳細は、PDK リファレンス (“Plugin Development Kit Reference”) をご参照ください。
Runloop の性能アップ
データ プレーンのパフォーマンスがサービス メッシュや他の分散アーキテクチャの要件を超えているように、プラグインのランループ (run loop) に改善を加えました。それらの改善点、およびその性能へのインパクトについて以下で説明します。
Preread (先読み) 実行
プラグインは、新しく preread フェーズでのコードの実行が可能となりました。これによって、最初の TCP 接続時にプラグインを初期化できるため、パフォーマンスの改善が実現します。
ゲートウェイ vs. メッシュ構成
すべてのプラグインには、run_on という新しいフィールドがあり、サービス メッシュや「通常の API ゲートウェイ」モードでのアクティベーションを管理します。これにより、冗長性を回避し、パフォーマンスをさらに向上するために、プラグインの動作をより細かく制御できます。
AWS Lambda と Azure FaaS
Kong 1.0 には、HTTP/2 クライアントへの HTTP/1.1 応答をプロキシする場合に HTTP/2 に許可されないヘッダーを除外するための Lambda プロキシ統合や Azure Functions プラグインへの改善など、AWS Lambda や Azure FaaS とのインタラクションへの大幅な改善も含まれています。
Kong Enterprise の概要、価格、およびライセンス体系などの詳細は、こちらを参照してください。デモをご希望の方は、こちらよりお問い合わせください。
記事参照: 2018 年 12 月 20 日
Marco Palladino
© Kong Inc. 2018
「Kong 1.0 GA」