Cloud Run から内部通信で 別のCloud Run にアクセスするための Direct VPC Egress についてただまとめる
はじめに
本記事では、Direct VPC Egress を活用し、別の Cloud Run サービスに内部ネットワーク経由で接続する方法について取り上げます。また、Serverless VPC Access connectors との違いについても紹介します。
Cloud Run 間の内部通信に必要な設定
通信が「内部」に設定された Cloud Run にアクセスする際、通信は必ず VPC を経由します。そのため、アクセス元の Cloud Run は以下のどちらかの方法で VPC に接続できる必要があります。
- Direct VPC Egress(推奨)
- Serverless VPC Access connectors
Direct VPC Egress と Serverless VPC Access connectors の違い
Serverless VPC Access connectors とは
従来の方法では、Cloud Run が VPC 内のリソースにアクセスするために Serverless VPC Access connectors が必要でした。このコネクタは、GCE(Google Compute Engine)のインスタンスを介して VPC に接続します。
https://cloud.google.com/blog/ja/products/serverless/announcing-direct-vpc-egress-for-cloud-run
役割:
Cloud Run からのトラフィックを受け取り、VPC 内のリソースにルーティング。
スケール:
コネクタはトラフィック量に応じてスケールアウト可能(最小/最大数を設定)。
課題:
GCE インスタンスが必要なため、コストや設定が複雑化。
Direct VPC Egress とは
Direct VPC Egress は、2024/04/24 に一般提供された 機能です。
Direct VPC Egress を利用すれば、コネクタを介さず直接 VPC にトラフィックを送信可能です。
https://cloud.google.com/blog/ja/products/serverless/announcing-direct-vpc-egress-for-cloud-run
特徴:
コネクタ不要、GCE インスタンスの設定不要。
ネットワークコストのみ発生し、パフォーマンスが向上。
課題:
使用する IP アドレス数が多くなるため、十分なアドレス範囲を確保する必要があります。
両者の比較表
機能 | Serverless VPC Access connectors | Direct VPC Egress |
---|---|---|
接続方法 | プロキシ経由 | 直接接続 |
パフォーマンス | 低 | 高 |
費用 | 高(VM 料金 & ネットワークコスト) | 低(ネットワークコストのみ) |
IP 割り当て | コネクタインスタンスの数だけ IP が割り当てられるため、使用する IP アドレスが少ない | 使用する IP アドレス数 >= Cloud Run のコンテナインスタンス数となるため、多くの IP アドレスを使用する傾向がある |
Direct VPC Egress の使用方法
必要な設定
VPC とサブネットの指定
Cloud Run サービス作成時、接続する VPC とサブネットを指定します。サブネットは /24
以上の CIDR 範囲である必要があります。
IP アドレスの管理
サブネットには最大コンテナインスタンス数の 4 倍の IP アドレスを確保。
推奨範囲:
-
10.0.0.0/8
(RFC 1918) -
100.64.0.0/10
(RFC 6598)
IAM 設定:
アクセス元サービスに必要な IAM 権限を付与。
構成図
以下は、Direct VPC Egress を利用してフロントエンドの Cloud Run からバックエンドの Cloud Run に内部通信を行う例です。
Frontend Service:
外部トラフィックを受け、内部通信でバックエンドにデータを送信。
Backend Service:
上り通信を「内部のみに限定」し、認証されたリクエストのみ許可。
注意点
サブネットの IP アドレス枯渇に注意
サブネットのアドレス範囲が不足している場合、Cloud Run のスケールアウトが制限されます。
必要なアドレス数を事前に計画することが重要です。
メンテナンスイベントへの対応
ネットワークメンテナンス中は接続が一時的に切断される可能性があります。
まとめ
Direct VPC Egress は、Cloud Run から VPC 内リソースへのアクセスを簡略化できます。また、低コストで高いパフォーマンスを発揮します。
参考
Discussion