サイドカー コンテナと Apigee による Cloud Run のセルフサービス API コンシューマー オンボーディング
Google Cloud Japan Team
※この投稿は米国時間 2023 年 8 月 17 日に、Google Cloud blog に投稿されたものの抄訳です。
ほとんどの企業が公共のインターネットへの API の公開方法について厳格な要件を定めており、認証情報の一元的な処理、指標の収集、その他の従来からの API 管理機能を求めています。Cloud Run にサイドカーが導入される前は、デベロッパーがこれらの要件をサービスそのものの中に実装するか、サービスの前にフル ライフサイクルの API 管理プラットフォームを追加しなければなりませんでした。詳細については、以前のブログ投稿をご覧ください。
今回のブログ投稿では、Cloud Run における API 管理の要件を満たすための新たな方法をご紹介します。具体的には、最近発表された Cloud Run のマルチコンテナ機能により、Cloud Run サービスのデベロッパーが事前にパッケージ化された API 管理機能を追加するために使用できるサイドカー パターンを有効にする仕組みについて取り上げます。これらの管理機能には、デベロッパー ポータルにおけるセルフサービスのデベロッパー オンボーディング、認証情報の検証、割り当ての適用などが含まれます。このソリューションのその他の運用上のメリットとして、Cloud Run を介して公開される API の分析と指標の一元化も挙げられます。
Cloud Run 向けの API 管理機能を追加する Google のソリューションは、次の 3 つのコンポーネントによって実現されます。
Cloud Run サービス: 従来の RESTful ウェブ アプリケーションをホストし、その前には一般的な Envoy プロキシが配置されます。
Apigee Envoy Adapter(リモート サービス): GKE Autopilot で実行され、Envoy の外部認証フィルタのポリシー決定点(PDP)の役割を果たします。また、Cloud Run サービスの呼び出しの受け入れ / 拒否を処理します。
Apigee API Platform: Cloud Run サービスの API ライフサイクルを管理するために使用されます。Apigee は、デベロッパーが API にアクセスするための認証情報を取得できるターンキー デベロッパー ポータルも提供します。
API 管理を使用して新しい Cloud Run サービスへの受信リクエストを処理する場合、次のような流れになります。
API デベロッパー自身が Apigee デベロッパー ポータルに登録し、API へのアクセス認証情報を取得する。
デベロッパーが Cloud Run エンドポイントを呼び出し、認証情報を提供する。
Cloud Run サービスで Envoy プロキシ コンテナがリクエストをインターセプトし、Apigee Envoy アダプタへの gRPC 呼び出しを開始してクライアントを認証する。
Apigee Envoy アダプタがリクエストの認証情報を確認し、Apigee で定義された対応する API プロダクトを特定する。Envoy アダプタはクライアントに関連付けられた呼び出し割り当ても確認し、分析データとアクセスログをコントロール プレーンに戻す。
認証情報が有効で、クライアントが呼び出し割り当てを使い切っていない場合、Apigee Envoy アダプタが Cloud Run サービスの同じ場所にあるコンテナにリクエストを転送する。


前述のアーキテクチャを構成するための詳細な手順については、こちらのブログ投稿をご覧ください。
まずは既存の Apigee インストールから、Apigee Envoy アダプタを使用して Apigee ランタイムとコントロール プレーンに接続します。次に、API プロダクト定義にアクセスして、発行済みの認証情報と割り当てに受信リクエストをリンクします。高可用性を目的として Apigee Remote Service コンポーネントを複製し、サイドカーの外部認証フィルタ用に gRPC ターゲットを必要とする複数の Cloud Run サービス間で共有できます。
Cloud Run サービスは、メインのアプリケーションに対してサイドカーの役割を果たす Envoy プロキシを介して Apigee Remote Service に接続します。Envoy プロキシの構成は、カスタマイズされた Envoy イメージ内に埋め込まれるか、上の図にあるように Cloud Run の Secret Manager の統合を介してマウントされます。構成を外部に置くことで、Envoy の最新パッチ バージョンを定期的に pull できるため、サイドカー コンテナのメンテナンスとアップグレードが簡素化されます。
新しく追加された API 管理機能は Cloud Run サービス内のプライマリ アプリケーション コンテナに対して透過的であり、アプリケーションのソースコードの変更は一切必要ありません。サイドカーを設定して Cloud Run サービスを再デプロイすると、消費側のアプリケーションが Apigee API 管理プラットフォームまたは API デベロッパー ポータルを介して取得した認証情報を使用して Cloud Run サービスを消費できるようになります。運用レベルでは、Apigee の分析ダッシュボードに表示される Cloud Run サービスへのリクエストをプラットフォーム オペレーターが確認し、API プロダクト レベルで消費と公開をトラッキングできるようになります。
次のステップ
Cloud Run のマルチコンテナ サポートをご自身で試されたい場合は、さらに数多くのユースケースを取り上げているリリースに関するお知らせをご覧ください。Cloud Run のサイドカーを使用してカスタム指標を Google Cloud Managed Service for Prometheus にレポートする別の例と詳細な手順については、Cloud Run ドキュメントのチュートリアルをご覧ください。最後に、Cloud Run の最新の機能が押し進めるサーバーレスの進化を大局的に把握したいとお考えなら、ぜひこちらの動画をご覧ください。
- アプリケーション モダナイゼーション担当 EMEA ソリューション リード Daniel Strebel
- BAP、プロダクト マネージャー Geir Sjurseth