G-gen の佐々木です。当記事では Cloud Run から VPC ネットワークに接続する際の、宛先サブネットの IP アドレス範囲に関する注意点を紹介します。
宛先サブネットの IP アドレス範囲に関する既知の問題
ドキュメントの記載
2024年3月の時点では、Cloud Run のドキュメントには以下のような記載があります。
プライベート IP 経由でいずれかの宛先にアクセスする場合、宛先をサブネット 192.168.1.0/24 上にすることはできません。このサブネットを使用すると、Cloud Run が宛先と通信できなくなります。
これは、Cloud Run でサーバーレス VPC アクセスや Direct VPC Egress を使用して、VPC 内のリソースを宛先とする通信を行う場合に起こりうる問題です。
代表的なケース
この問題の影響を受ける代表的なケースとして、Cloud Run から Cloud SQL、AlloyDB などのデータベースに接続するケースがあります。
Cloud Run からプライベート IP アドレスを使用して Cloud SQL(もしくは AlloyDB)インスタンスに接続する場合、以下のような構成となります。
このとき、接続先となる Cloud SQL(AlloyDB)インスタンスのプライベート IP アドレスが 192.168.1.0/24
の場合、以下のようにデータベースへの接続に失敗してしまいます。
アプリケーションのログ
2024/03/06 22:53:45 db.Query: failed to connect to `host=192.168.1.5 user=myuser database=mydb`: dial error (dial tcp 192.168.1.5:5432: connect: no route to host)
例外
当社が2024年3月に行った検証では、Cloud Run jobs ではドキュメントの記載通り192.168.1.0/24
の宛先に接続することができませんでしたが、Cloud Run services では接続できることを確認しました。
しかし、ドキュメントでは Cloud Run の種類を明記していないため、Cloud Run services でも引き続き接続できる保証はありません。
したがって、どちらの Cloud Run でも、接続先として 192.168.1.0/24
のサブネットを使用するのは避けたほうがよいでしょう。
対処法
プライベート IP アドレスを使用する場合
リソースを作り直す
理想的には、宛先となるリソースを作り直し、192.168.1.0/24
以外の IP アドレス範囲をもつサブネットに接続するように Cloud Run を構成するのがよいでしょう。
Compute Engine VM をプロキシとして使用する
どうしても作り直しができない状況では、192.168.1.0/24
以外のプライベート IP アドレスをもつ Compute Engine VM にプロキシを構成し、これを経由するように接続を行います。
例として、Cloud SQL や AlloyDB に接続したい場合は、Google Cloud から提供されている Auth Proxy を Compute Engine VM で実行し、Cloud Run から Auth Proxy を経由してデータベースに接続します。
この方法では、Compute Engine VM の運用を考慮しなければならない点に注意が必要です。Cloud Run からデータベースに常時接続するようなケースでは、なるべくは避けたほうがよいでしょう。
パブリック IP アドレスを使用する場合
宛先が Cloud SQL や AlloyDB の場合は、Cloud Run で Auth Proxy を使用することで、パブリック IP アドレスでも安全にデータベースに接続することができます。
Cloud SQL Auth Proxy は Cloud Run の種類を問わずネイティブ機能として利用できます。
その反面、AlloyDB Auth Proxy は Cloud Run のマルチコンテナ機能を使用し、サイドカーコンテナとして実行する必要があります。
2024年3月現在、マルチコンテナ機能は Cloud Run services でしかサポートされておらず、Cloud Run jobs の場合は Cloud Run 側で AlloyDB Auth Proxy を実行することはできません。
Cloud Run から Auth Proxy を使用して Cloud SQL、AlloyDB に接続する方法については、以下の記事をご一読ください。
なお、AlloyDB におけるパブリック IP アドレスの利用は2024年3月時点でプレビュー機能である点には注意してください。
以下の記事で、Cloud Run services から AlloyDB Auth Proxy を使用して AlloyDB に接続する方法を解説しています。
佐々木 駿太 (記事一覧)
G-gen最北端、北海道在住のクラウドソリューション部エンジニア
2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2025 Fellowに選出。好きなGoogle CloudプロダクトはCloud Run。
趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。
Follow @sasashun0805