⚒️

Cloud Run で Filestore をマウントしてみる

2024/03/22に公開

先日、Cloud Run から NetworkFileSystem をマウントできる機能が Preview になりましたね!自身が構築中のアーキテクチャでも Cloud Run の永続化はポイントになるのでさっそく触ってみました。

機能としては VPC/オンプレ の NFS に対応したってことだったので、自分自身あまりゆかりのない Filestore へのマウントをやってみました。

Overview

Cloud Run Service から Filestore へのマウントが可能

  • gcloud beta run services update コマンドで Filestore へのボリュームマウントをすんなりと実行可能
  • 制約条件として 「NFS への書き込み時にはコンテナは root で実行する必要あり」「読み取り専用する場合は root 以外のユーザーで実行する必要あり」「マウントされる NFS は自動的にノーロックモードとなる」 といったものが存在するため、ユースケースによっては要注意

所感

マウント作業自体は難しいことがなく、期待した結果を得ることができました。

永続化という点では Cloud Storage へのボリュームマウントも選択肢にあがりますが、私が想定しているユースケースでは複数の Cloud Run Service から接続することがないという点や格納されるデータが多くないという点から Cloud Storage へのボリュームで良いと感じました。

上記とは逆のユースケースであれば、Filestore へのボリュームマウントは非常に便利だとも感じました。

キーワード

マウントまでの流れ

Filestore の作成

コンソールから Filestore を作成します。今回は検証用ということで極力費用がかからない設定とします。Filestore は格納されているデータ量ではなく割り当てられたデータ量によって課金されるようなので、最低量の 1 TiB としています。

また、マウントさせたい Cloud Run Service から接続可能な VPC に作成することもポイントです。Cloud Run Service からは Direct VPC Egress で接続することがサーバーレス VPC コネクタより良い性能を発揮するとも公式ドキュメントに記述があります。

  • A VPC Network where your NFS server or Filestore instance is running.
  • An NFS server running in a VPC network, with your Cloud Run service connected to that VPC network. If you don't already have an NFS server, create one by creating a Filestore instance.
  • Your Cloud Run service is attached to the VPC network where your NFS server is running. For best performance, use Direct VPC rather than VPC Connectors.

NFS マウントポイントの確認

作成が完了すると NFS マウントポイントが払い出されるため、確認しておきます。

Cloud Run Service からマウント

今回は Cloud Run Service にデプロイしている Grafana をサンプルとして扱います。

マウント前

マウント前の Cloud Run Service のリビジョン情報です。コンテナタブのボリュームマウントや VOLUMES タブには特に設定はありません。

マウントコマンド

コマンドは Preview ということもあり beta のものを使用します。

Terminal
gcloud beta run services update grafana-test \
--add-volume=name=test_filestore,type=nfs,location=10.229.177.2:/test_filestore \
--add-volume-mount=volume=test_filestore,mount-path=/var/lib/grafana

私は Cloud Shell で実行したのですが、最初のコマンドは失敗しました。beta のものを使用するにあたって、gcloud components update をする必要がありました。(実際には、表示された長い install コマンドを実行しました。)

マウント後

コマンドが実行されると新しいリビジョンが作成されます。コンテナタブのボリュームマウントには NFS の種類とマウントポイントが表示されていました。ただ、VOLUMES タブには特に表示はありませんでした。

NFS の中身を確認

最後に実際にマウントした NFS にファイルが作成されているかを確認します。今回、Grafana を扱ったのは実行時に特定のディレクトリおよびファイルを作成してくれるからです。

期待しているのは、マウントした先に Grafana のセットアップ時の諸々が作成されている状態です。Filestore が作成されている VPC 上の Compute Engine から NFS をマウントして中身を確認します。

Terminal
sudo mount -o rw,intr 10.229.177.2:/test_filestore ./test

マウントが成功すると test ディレクトリにちゃんとセットアップ時の諸々が作成されていたため、期待通りに動いていることがわかりました。Cloud Run によって生成されたディレクトリやファイルは root で書き込みされていますね。

参考

さいごに

Cloud Storage へのマウントに続き、Filestore へのマウントも Preview となり Cloud Run のユースケースがどんどん広がっていくなと感じました!

https://twitter.com/pHaya72

Discussion