📑

ダイレクトVPC外向きとは

に公開

ダイレクトVPC外向きとは

ダイレクトVPC外向きはCloudRunのサービスやジョブなどをVPCアクセスコネクタなしでトラフィックをVPCネットワークへ送信する機能になります。

外向きのみのトラフィックの送信のみなのでVPCからCloudRunへのアクセスはできません。

https://cloud.google.com/run/docs/configuring/vpc-direct-vpc?hl=ja

仕組み

実際の用途を考えながら仕組みを追っていきます。
例えばCloudRunからVPCネットワーク内に構築したCloudSQL(パブリックIPなし)へトラフィックを送信したい状況でダイレクトVPC外向きを使いたい場合、ざっくりとした構成図は以下のようになります。

image.png

まずダイレクトVPC外向きを有効化するとCloudRunに使うVPCとサブネットを指定することができます。ただしサーバーレスのためVMのように物理的なサブネットが存在するわけではありません。
ここではCloudSQLが配置されているVPCを指定します。

CloudRunの通信は外向きのトラフィックを指定したVPCのサブネットを経由してCloudSQLのサブネットへルーティングすることができます。
具体的にはCloudRunは指定したサブネットから得られたIPを取得して、起動するインスタンスに割り当てます、割り当てられたIPを使ってVPC内のリソース(CloudSQL)にアクセスすることができます。

またCloudSQLはGoogle側が管理するVPCネットワークに配置されているので、裏側では指定した自分のVPCとGoogle側のVPCをピアリングさせています。

注意しないといけないのはサブネットのIPアドレスが枯渇させないことです。サブネット内で使えるIPアドレスには当然限りがあります。このダイレクトVPC外向きはCloudRunのインスタンスに対してサブネットのIPアドレスを割り当てるため、サブネットのIPアドレスの上限を超えるとCloudRunのインスタンスを起動できなくなる可能性があります。

https://blog.g-gen.co.jp/entry/cloudrun-direct-vpc-egress#サブネットに十分な-IP-アドレスが必要

VPCアクセスコネクタとの違いは?

VPCアクセスコネクタはVMインスタンスとして稼働するため、マシンタイプに応じた従量課金が発生します。

東京リージョンの毎月のコスト
image1.png

さらにVPCアクセスコネクタを利用する場合はCloudRunからの通信がプロキシされてからVPCネットワークにトラフィックが送信されるためレイテンシを発生させるなどコストとパフォーマンス面において違いがあり、基本的にはダイレクトVPC外向きを使用するのが良いと思います。(CloudRunの設定でVPCアクセスコネクタを使用するように変更が可能)

Discussion