DX開発事業部の田村です。
Google Cloud Next Tokyo ’24より、2日目に拝聴したライトニングトークの様子をご紹介いたします。

セッション情報

セッションタイトル:実践 Cloud Run
スピーカー:newmo 株式会社 伊藤 雄貴氏

Cloud Run について、基礎的な機能を踏まえつつ、Ingress のアクセスコントロール、Direct VPC Egress を用いた VPC Network との接続、Shared VPC Network 配下での利用、Sidecar Container での拡張といった実践的な内容を中心に解説します。

セッション内容

このセッションではCloud Runを使って開発をすすめる上でより実践的なシステム構成にするための機能を紹介されていました。

サイドカーコンテナ

サイドカーコンテナ機能の利用用途としては、Cloud Run内に複数のコンテナを持たせて分離をさせたい場合です。

1つ目のユースケースとして例えば、アプリケーション用のコンテナは持ちつつ、オブザーバビリティを高めるためにOpenTelemetry Collectorといったアプリケーションを補助するようなイメージを含める際に有用となっております。

また既存のイメージを使っている場合は認証認可のロジックを新しく入れようと思っても、なかなか入れられないといったケースが考えられサイドカーとしてEnvoyを入れておくことで、デプロイ対象に手を入れることなくCloud Runサービスを拡張することができるようになります。

既存のコンテナイメージを組み込んだり、機能分離をしつつもコンテナを拡張していける点でサイドカーは有用な機能だと思いますのでぜひ活用していきたいですね!

アクセスコントロール

Cloud Runのアクセスコントロールの手段としては大きく2つあります。

  • IAMによるアクセスコントロール
  • Ingressの設定による通信のコントロール

IAMによるアクセスコントロール

上記のようなAPI Gateway、ServiceA、ServiceBというシステム構成図においては、次のような要件がよくあるアクセス制御例となっています。

  • ServiceAへのアクセスをAPI Gatewayからの通信に制限する
  • ServiceBへのインターネットからのアクセスを禁止し、API Gatewayからの直接通信を制限する

このような場合に使える他、OIDCトークンを発行して認証制御をしている場合においては、認証後にアクセス可能なサービスに対して、インターネットからの通信を制限することができます。

Ingressの設定による通信のコントロール

Ingressの通信を制御したいケースとしては、インターネットからのすべてのアクセス、Load Balancerなどを経由したアクセス、VPC内部通信によるアクセスの3つが考えられます。

上記の構成においてはServiceBをセキュアな環境に置きたいというケースになりますので、インターネットやLoad Balancerからの通信は遮断し、同じVPC内のServiceAからの通信のみ許可するといった制御を行うことができます。

ネットワーク

Cloud Runにおけるネットワークの設定方法はServerless VPC Access Connectorを使うパターンとDirect VPC Egressを使うパターンの2つがあります。

Serverless VPC Access Connector

こちらはCloud RunとVPC内のリソースの通信を行う際に作成する必要があったVPCコネクタとなります。裏側ではGCEが立ち上がって通信を行う都合上、コストがかかったりレイテンシが発生したりという課題が残っています。

ただしGCEが動く手前、使用されるIPが少ないため大規模になったとしてもIPキャパシティを意識する必要はありません。
次に紹介する機能がGAされるまでは、多くのケースにおいてVPCコネクタを作成するソリューションが使われていたかと思います。

Direct VPC Egress

こちらは今回のイベントでGAされた機能の1つであり、VPCコネクタを作成することなくCloud RunからVPCリソースへのアクセスを可能とするものになります。

VPCコネクタを作成しないということでコネクタ管理分の費用を削減することが可能になっています。
通信の制御方法についてはYAML形式でEgressの方向を設定することができるようです。

注意点としてはGCEが立たないためIPを絞ることができず別途IPキャパシティプランニングが必要となってくる点です。

上記を踏まえ、大規模になるのであればVPCコネクタを使った場合の方が通信制御がしやすいといったことも考えられ、適材適所で使い分けていく必要があります。
ただ多くのケースではDirect VPC Egressを使うことがベストプラクティスになってくるように思います。

さいごに

最後までご覧いただきありがとうございます。サイドカー運用からVPCコネクタやDirect VPC Egressを使ったネットワークの構成まで実践的に取り入れられるユースケースをこのLTでは知ることができました。

今回GAされたDirect VPC EgressはこれからCloud Runを構築する上では重要な概念になってくるため、しっかりインプットして今後のシステム開発に活用していきたいと思います。