Envoy を使ったサービスの API 管理について
Google Cloud Japan Team
※この投稿は米国時間 2020 年 6 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。
Envoy は、プラグイン対応の高パフォーマンスなプロキシとして、一歩先を見据えたソフトウェア デベロッパーの間で広く使われており、ネットワーキングやオブザーバビリティの向上により、サービス トラフィックの増加に対応します。HAProxy および nginx から得られた知見を基に開発された Envoy は、今や Cloud Native Computing Foundation の公式プロジェクトとなり、Google の API 管理プラットフォームである Apigee のユーザーを含め、多くのユーザーの間で高い人気を誇っています。
Google はこのたび、Apigee 環境に Envoy ベースのサービスを組み込むための支援ツール Apigee Adapter for Envoy のベータ版を提供することを発表いたします。Apigee は、自社内で使用する API や、パートナーやサードパーティに公開する API を一元管理するためのプラットフォームであり、API の公開、参照、管理や、使用状況の分析を集中的に行えるのが特長です。Apigee Adapter for Envoy を使えば、Envoy に API 管理機能を追加して、Envoy の背後にあるサービスを API として公開できます。Apigee Adapter for Envoy では、以下のようなことができます。
- OAuth トークンや API キーを検証する
- API プロダクトへの割り当てに基づき、API コンシューマを確認する
- API の使用状況分析データを収集する
Apigee Adapter for Envoy を使用すれば、Envoy ベースの最新型サービスを API として提供できるようになり、アプリケーションをより広く使ってもらうことが可能となります。具体的に見ていきましょう。
仕組み
Envoy では、多数のフィルタ(C++ で記述、コンパイルされ Envoy に組み込まれた拡張機能)をサポートしています。その中で Apigee Adapter for Envoy が特に利用しているのは、External Authorization フィルタです。このフィルタは、Envoy が管理する呼び出しの認可判断を外部システムに委任することを目的としています。
Apigee Adapter for Envoy の仕組みは以下のとおりです。
- Envoy が公開した API エンドポイントに、コンシューマまたはクライアント アプリがアクセスします(1)
- Envoy が、セキュリティ コンテキスト(HTTP ヘッダー)を Apigee リモート サービスに渡します(2)
- Apigee リモート サービスが Policy Decision Point(ポリシー決定点)としての役割を果たし、API コンシューマからリクエスト対象の API へのアクセスを許可すべきか、拒否すべきかを Envoy に伝えます(3)
高パフォーマンス システムでは、こうした呼び出しの処理が 1 秒に数千回、発生する場合もあります。このような大量処理に対応するため、Envoy と Apigee リモート サービスの接続には gRPC が使用され、高速、高効率を実現しています。さらに、Apigee リモート サービスは、リモートの Apigee コントロール プレーンから、帯域外で非同期に構成(API プロダクトや API キー(検証後)など)のポーリングとダウンロードを行います(4)。このコントロール プレーンは、Envoy クラスタとは別の VPC でホスト可能です。
Istio、Anthos との互換性
Apigee Adapter for Envoy は、Istio や Google の Anthos Service Mesh を使用しているユーザーを含め、標準の Envoy プロキシを使用しているユーザーであればどなたでも使用できるツールです。サービス メッシュ内で Apigee API 管理ポリシーを適用するのに特に便利です。
Apigee API ゲートウェイの比較
Apigee には、Apigee Adapter for Envoy のほかに以下の 2 つのゲートウェイがあります。
- Apigee Message Processor(Apigee のパブリック クラウド、プライベート クラウド、ハイブリッドに対応)
- Apigee Microgateway
これらのゲートウェイを比較した特長を以下にまとめましたので、使い分けや組み合わせを判断する際の参考にしてください。
次のステップ
Google Cloud の Apigee は業界有数の API 管理プラットフォームであり、Google ではこれまでこのプラットフォームの機能拡張に継続的に取り組んできました。Apigee Message Processor と Apigee Adapter for Envoy を組み合わせて、エンタープライズ クラスの API 管理機能を使用することが可能になりました。
Envoy をお使いで、API 管理の向上にご興味をお持ちでしたら、ぜひこちらのページで、Apigee Adapter for Envoy の概要をご確認ください。
- By Apigee プロダクト マネージャー Nandan Sridhar、GCP カスタマー エンジニア Dino Chiesa