今回は、2024年4月24日に一般提供(GA)が開始されたダイレクト VPC 下り(外向き)について解説します。このサービスは、サーバレス VPC アクセスの代替サービスとして2023年にリリースされました。今回は、サーバレス VPC アクセスとの主な違いを含め、詳細にわたって解説します。
企業がGoogle Cloudサービスを利用する際には、プレビュー段階のサービスは提供が予告なく停止されるリスクがあるため、通常は使用することが推奨されていません。しかし、今回ご紹介するダイレクト VPC 下り(外向き)は一般提供が開始されたため、安心して導入を検討できます。
なお、Cloud Run ジョブの場合、ダイレクト VPC 下り(外向き)は、プレビュー版であることにご注意ください。一方、Cloud Run サービスでは一般提供(GA)に移行しました。
是非、最後までご覧いただけると嬉しいです。
ダイレクト VPC 下り(外向き)とは
ダイレクト VPC 下り(外向き)は、Cloud RunサービスやジョブからVPC ネットワークへトラフィックを送信するように設定できる機能です。
ダイレクト VPC 下り(外向き)を使う理由については、下記のようなものがあります。
- プライベートな通信:ダイレクト VPC 下り(外向き)を使用すると、インターネットを経由せずに、Cloud RunのサービスからVirtual Private Cloud(VPC)内のリソースへ直接アクセスできます。これにより、データのプライバシーとセキュリティが向上します。
- ネットワークのパフォーマンス:インターネットトラフィックを避けることで、ネットワークの遅延が低減され、より高速なデータ転送が可能になります。これは、特に低遅延を要求するアプリケーションやサービスにとって重要です。
- コスト削減:データがVPC内でルーティングされるため、インターネット経由でデータを送信する場合に比べてコストが削減されます。特に、大量のデータを扱う場合には、コスト削減が顕著になります。
- 柔軟なネットワーク設計:VPC 内での直接通信を使用することで、より柔軟なネットワーク設計が可能になります。例えば、特定のサービスやアプリケーション間でのみ通信を許可するようなセキュリティポリシーの実装が容易になります。
- サーバーレス環境のサポート:サーバーレス環境やコンテナベースのアプリケーションでの使用を想定しており、サーバレス VPC アクセス コネクタを使用せずに、Cloud RunやCloud FunctionsなどのサービスからVPCリソースへのアクセスを簡単に設定できます。
私がこのサービスを利用する最大のメリットは、プライベート通信が可能である点だと考えています。企業がGoogle Cloudのサービスを使用する際、セキュリティは非常に重要な要素です。この観点から、Cloud Runのサービスが直接インターネットに接続すると、攻撃を受けるリスクが高まります。以前のブログで説明したように、インターネット上では常に様々な国や人からの不正アクセスの試みがあるからです。
プライベート通信を用いることでこのリスクを軽減できるため、ダイレクト VPC 下り(外向き)は、Cloud RunやCloud FunctionsなどのPaaS(Platform as a Service)を利用する際の非常に有効な選択肢となります。
サーバレス VPC アクセス
サーバレス VPC アクセスは、ダイレクト VPC 下り(外向き)の代替サービスです。これは、Cloud RunやCloud FunctionsからVPCネットワーク内のリソースへセキュアにアクセスする機能を提供します。この機能を活用することで、サーバレスアプリケーションがプライベートIPを介して、VPC内のリソース(例:Compute EngineのVMインスタンスやCloud SQLデータベース等)に直接アクセス可能になります。
サーバレス VPC アクセスは、一般提供(GA)されているサービスです。
サーバレス VPC アクセスの主な特徴と利点
サーバレス VPC アクセスの主な特徴と利点は以下になります。
- セキュリティとプライバシー:サーバレスアプリケーションとVPCリソース間の通信がインターネットを経由せず、プライベートなネットワーク内で完結するため、データのプライバシーとセキュリティが向上します。
- シンプルな設定:サーバレス VPC アクセスをプロジェクトに設定することで、サーバレスサービスからVPCリソースへのアクセスが可能になり、複雑なネットワーク構成を必要としません。
- スケーラビリティ:サーバレスアプリケーションのスケールに合わせて、サーバレス VPC アクセスコネクタも自動的にスケールアウト・スケールインします。これにより、アプリケーションの負荷変動に柔軟に対応できます。
サーバレスVPCアクセスを使用することで、開発者はサーバレスアプリケーションの構築に集中できるようになり、インフラストラクチャの管理にかかる手間を減らすことができます。また、企業はクラウドリソースをよりセキュアに、効率的に活用することが可能になります。
ダイレクト VPC 下り(外向き)とサーバレス VPC アクセスの比較
ダイレクト VPC 下り(外向き)とサーバーレス VPC アクセスの比較は下記になります。
特徴 | ダイレクトVPC下り(外向き) | サーバーレス VPC アクセス |
---|---|---|
レイテンシ | 低い | 高い |
スループット | 高い | 低い |
IP 割り振り | ほとんどの場合、より多くの IP アドレスを使用する | 使用する IP アドレスが少なくなる |
費用 | VM の追加料金はなし | VM の追加料金が発生 |
スケーリング速度 | インスタンスの自動スケーリングは、新しい VPC ネットワーク インターフェースが作成されるときのトラフィックの急増で遅くなります。 | ネットワーク レイテンシは、VPC ネットワーク トラフィックが急増している間に、より多くのコネクタ インスタンスを作成することで発生します。 |
Google Cloud コンソール | サポート対象 | サポート対象 |
Google Cloud CLI | サポート対象 | サポート対象 |
リリースステージ | 一般提供(Cloud Run ジョブを除く) | 一般提供 |
引用:比較表 Google Cloud ドキュメント
ダイレクトVPC下り(外向き)の最大のメリットは、サーバレスVPCアクセスに比べてネットワークの速度が向上する点です。ダイレクトVPC下り(外向き)は、レイテンシが低く、スループットが高いため、サーバレス VPC アクセスよりもネットワーク速度が速くなります。
もう一つのメリットは、VMにかかる料金が不要であることです。サーバレス VPC アクセスでは、VM を配置する際に、VM のスペックに応じた使用時間に基づいて料金が発生します。ダイレクト VPC 下り(外向き)では、VMを使用しないため料金はかかりません。ただし、下り(外向き)のネットワーク使用量には料金が発生します。
したがって、Cloud RunやCloud FunctionsでVPCを経由したネットワークを構築したい場合、速度と費用の面でメリットが大きいダイレクト VPC 下り(外向き)の使用を推奨します。
ダイレクト VPC 下り(外向き)の制限事項
ダイレクト VPC 下り(外向き)には、制限事項があります。下記、Google Cloud ドキュメントの英語ページに記載されています。なお、日本語ページはまだプレビュー版ですので、英語版のドキュメントを参照してください。
この中で一番注意が必要なのが、「VPCフローログとファイアウォールルールログは、Cloud Run のサービス名またはリビジョンを提供しません。」という点です。
これは、ダイレクト VPC 下り(外向き)を複数のCloud Run サービスで使用している場合、個々のサービスを特定することができません。そのため、何らかの問題が発生した場合に、問題のあるCloud Run サービスを特定することが困難になります。
しかし、サーバレス VPC アクセスを使用している場合も、VPC フローログに Cloud Run のサービス名やリビジョン名は出力されません。
他のログを参照して、該当のCloud Run サービスを特定する必要があります。
Cloud Runでダイレクト VPC 下り(外向き)を使用する方法
それでは、実際にCloud Run でダイレクト VPC 下り(外向き)を設定する方法について説明します。今回は2ステップです。
- VPCの作成
- Cloud Runの作成(ダイレクトVPV 下り(外向き)を使用)
1. VPCの作成
Google Cloud コンソールでVPC ネットワークをひらきます。コンソール上部の「VPC ネットワークを作成」を選択します。
VPCの名前を任意で入力します。ここでは、「vpc-directvpcegress」にしています。説明の入力は任意です。
サブネットの設定を任意で入力します。説明の入力は任意です。ここでは、下記で設定しています
- 名前:subnet-directvpcegress
- 説明:ダイレクトVPC下りようサブネット
- リージョン:asia-northeast1
- IPv4 範囲:192.168.100.0/24
オプション設定は、初期設定のまま進めます。
ファイアウォール ルールも初期設定のまま進めます。
動的ルーティングモードも、初期設定のままで、最後に「作成」を選択します。
正常に作成されると、VPC ネットワーク一覧に表示されます。
以上で、VPCの作成は終わりになります。
2. Cloud Runでサービスを作成(ダイレクトVPV 下り(外向き)を使用)
次は、Cloud Runでサービスを作成します。今回は、サンプル コンテナを使用して作成します。上部の検索窓に「cloud run」で検索し、「Cloud Run」を開きます。
コンソール上部の「サービスを作成」を選択します。
「コンテナイメージのURL」は、「サンプル コンテナでテスト」を選択します。リージョンは、VPCを作成したときのリージョンを選択します。ここでは「asia-northeast1」にしています。
上り(内向き)の制御は、今回ロードバランサーからCloud Runのコンテナにアクセスすることを想定し、「内部」を選択し、「外部アプリケーションロードバランサーからのトラフィックを許可する」にチェックを入れます。こうすることで、インターネットから直接Cloud Runにアクセスすることを回避することができます。その他の設定は、初期設定のまま進めます。
「コンテナ、ボリューム、ネットワーキング、セキュリティ」を展開し、「ネットワーキング」タブを開きます。
「アウトバウンド トラフィック用の VPC に接続する」を選択し、「VPCに直接トラフィックを送信する」にチェックを入れます。この設定がダイレクト VPC 下りの設定になります。ネットワークとサブネットは、「1. VPCの作成」で作成したものを選択します。
- ネットワーク:vpc-directvpcegress
- サブネット:subnet-directvpcegress
「トラフィック ルーティング」は「すべてのトラフィックを VPCにルーティングする」を選択します。最後に「作成」を選択します。
正常にコンテナがデプロイされると、コンテナ名の左側が緑色になります。
以上で、Cloud Run でダイレクト VPC 下りの設定は、終わりになります。
このように、Cloud Run作成時に、「ダイレクト VPC 下り」の設定を行うことができます。
ここで1点注意点です。作成したVPCを直ちに削除しようとしても、削除ができないことがあります。そのような場合、数日間待ってから削除を試みると成功することがあります。私がダイレクト VPC 下り(外向き)を設定した VPCを削除しようとした際、エラー画面が表示されて削除できませんでした。しかし、2日後に再度試みたところ、削除することができました。
まとめ
本日は、下記3点について説明しました。
- ダイレクト VPC 下り(外向き)とは
- サーバレス VPC アクセス
- Cloud Runでダイレクト VPC 下り(外向き)を使用する方法
ダイレクト VPC 下り(外向き)は、サーバーレスVPCアクセスと比較してネットワーク性能が向上し、コストも削減できるため、推奨されるサービスです。これまでサーバーレス VPC アクセスを利用していた方は、変更を検討する価値があるでしょう。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!