Cloud Run

VPCのアクセス

下り(外向き)

サーバーレスVPCアクセス

サーバーレス環境でサーバーレスVPCアクセスコネクタ経由で内部DNSと内部IPアドレスを使用してVPCネットワークにリクエストの送信とレスポンスの受信ができる。
反対に他の内部トラフィックをサーバーレス環境に送信する方法については、限定公開のGoogleアクセスを利用する必要がある。

コネクタの IP アドレス範囲を設定するには、次の 2 つの方法がある。

  • サブネットを使用するリソースがない場合は、既存の /28 サブネットを指定できる
  • 未使用の /28 CIDR 範囲を指定できる

サーバーレス VPC アクセス コネクタは、コネクタ インスタンスで構成されており、マシンタイプが大きいほどスループットが高くなる。

ダイレクトVPC

ダイレクトVPCを利用するとサーバーレスVPCアクセスコネクタを使用せずにCloud RunがVPCネットワークに直接トラフィックを送信できる。
また、インスタンスを使用しないためアクセス自体に必要な費用がネットワークの費用だけになる。

ダイレクトVPCで利用すると各インスタンスにサブネット内のIPアドレスが割り当てられるため、サブネット内には十分なIPアドレスが使用可能な状態である必要がある。また、トラフィックが急増したときに備えて事前にIPが割り振られるため、存在するインスタンス数よりも多くなることも留意する。
そのほか制限事項がいくつか存在するため、ドキュメントを参照。

ダイレクトVPCを有効にするとVPC内にCloud Runインスタンスが立ち上がるようになり、Cloud RunからVPC内部のサービスへのリクエストは許可される。一方でVPCのほかのサービスからのCloud Runのインスタンスへのアクセスはできない。
ダイレクトVPCを利用しても、通常通りCloud RunのエンドポイントへのリクエストはCloud Runにルーティングされる。(ここの制御は上り(内向き)の制御でする。)

上り(内向き)

デフォルトの設定では、Cloud Runに設定されたドメイン(run.appまたはカスタムドメイン)にインターネット経由でアクセスができる。
上りの設定でこれらのアクセスの制限をかけることができる。

  • 内部
    以下のソースからのリクエストを許可する。ron.appにアクセスする場合でもGoogleのネットワーク内に閉じる。ほかのソースからのリクエストは到達できない。
    Cloud Runなどのサーバレスサービスからのリクエストを内部リクエストとみなすためにはVPCネットワークを経由する必要がある。
    限定公開の Google アクセスを構成する  |  VPC  |  Google Cloud

    • 内部アプリケーション ロードバランサ
    • VPC Service Controlsの境界内
    • Cloud Runと同じプロジェクトまたはVPC Service Controlsの境界内にあるVPCネットワーク
    • 共有VPC
    • 特定のGoogle Cloudのプロダクト
  • すべて
    インターネットから直接run.appへ送信されるリクエストを許可する

  • Cloud Run での上り(内向き)の制限  |  Cloud Run のドキュメント  |  Google Cloud

内部に設定されたCloud Runにアクセス

内部に設定されたCloud Runにアクセスするには、前述より内部のリクエストにする必要がある。
Cloud Run → Cloud Runにアクセスする場合について考える。

  1. 内部かつダイレクトVPCのCloud Runにリクエスト
  • サーバーレスVPCアクセス経由
    この場合、すべてのトラフィックをVPCにルーティングすると内部のリクエストとしてCloud Runに送信される。
    一方でプライベートIPのみの場合、Cloud Runにインターネット経由でアクセスするためアクセスできない。
  • ダイレクトVPC経由
    サーバーレスVPCアクセスでは有効だったすべてのトラフィックを VPC にルーティングに設定してもアクセスができない。
    これはダイレクトVPC内にCloud Runを配置するとVPCのほかのサービスからのCloud Runのインスタンスへのアクセスはできないという制約があるためだと考えられる。
    そのためダイレクトVPCに設定する場合、必ず限定公開のGoogeleアクセスの設定が必要になる。設定するとちゃんとできる。

プライベート IP へのリクエストのみを VPC にルーティングするの設定のままルーティングさせたい場合は、ドキュメントに記載されたPVCまたは内部ロードバランサーを設定しDNSでそっちを見るようにするか、限定公開のGoogleアクセスを有効にしてDNSを設定するの2通りにのどちらかを選択する必要がある。