NBD、9P、CIFS / Samba、Ceph ネットワーク ファイル システムを使用する

このページでは、Cloud Run で NBD、9P、CIFS / Samba、Ceph ネットワーク ファイル システムを使用する方法について説明します。

Cloud Run で NFS、Filestore、または Cloud Storage FUSE を使用している場合は、次のページをご覧ください。

NBD、9P、CIFS / Samba、Ceph のネットワーク ファイル システムを使用して、Cloud Run で複数のコンテナとサービス間でデータを共有し、保持できます。この機能は、Cloud Run の第 2 世代の実行環境を使用している場合にのみ使用できます。

ファイル システムを使用して Cloud Run サービスでファイルの読み取りと書き込みを行う場合には、複数の選択肢があります。

  • インスタンスの存続期間を超えてデータを保持する必要がない場合は、組み込みのメモリファイル システムを使用できます。
  • インスタンスの存続期間を超えてデータを保持する必要があり、標準のファイル システムのセマンティクスを使用する場合は、Cloud Run で NDB、9P、CIFS / Samba、Ceph のネットワーク ファイル システムを使用します。
  • インスタンスの存続期間を超えてデータを保持する必要があり、標準のファイル システム セマンティクスを必要としない場合は、Cloud Storage クライアント ライブラリを使用するのが最も簡単な方法です。これは、多数のインスタンスのデータに同時にアクセスする必要がある場合にも適しています。

制限事項

Cloud Run で NDB、9P、CIFS/Samba、Ceph ネットワーク ファイル システムを使用する場合は、次の点を考慮してください。

  • Cloud Run へデプロイするときに、第 2 世代の実行環境を指定する必要があります。

  • Cloud Run は、多数のインスタンスに迅速にスケーリングできるように設計されています。ただし、ほとんどのネットワーク ファイル システムは、多数のクライアントが同時に使用するようには設計されていません。最大インスタンス機能を使用して、Cloud Run インスタンスの数を制限することを検討してください。

ネットワーク ファイル システムをセットアップする

ファイル サーバーをまだ設定していない場合は、Compute Engine 上のファイル サーバー ソリューション ガイドに従って、ニーズに合ったファイル システムを選択して設定します。既存のファイル サーバーを使用している場合は、VPC ネットワークからアクセスできることを確認してください。

サーバーレス VPC アクセス コネクタを構成する

サーバーレス VPC アクセス コネクタを使用して、Cloud Run サービスをネットワーク ファイル システムが実行されている VPC ネットワークに接続する必要があります。

同じ VPC ネットワークにサーバーレス VPC アクセス コネクタを作成して Cloud Run サービスに接続するには、VPC ネットワークへの接続の手順に沿って行います。

Cloud Run サービスからファイル システムをマウントする

ネットワーク ファイル システムをマウントするには、以下のようにします。

  1. 以下の例を使用して、アプリケーションを起動し、Dockerfile のマウント ポイントを指定する起動スクリプトを定義します。その際、必要に応じて変数を置き換えます。

    • NBD の場合

       echo "mounting ext4 image via NBD"
       nbd-client -L -name image IP_ADDRESS DEVICE_NAME
       mount DEVICE_NAME MOUNT_POINT_DIRECTORY

    • NBD 経由の PD-SSD の場合

       echo "mounting PD-SSD via NBD"
       nbd-client -L -name disk IP_ADDRESS DEVICE_NAME
       mount DEVICE_NAME MOUNT_POINT_DIRECTORY

    • 9P の場合

       echo "mounting 9p export"
       mount -t 9p -o trans=tcp,aname=/mnt/diod,version=9p2000.L,uname=root,access=user IP_ADDRESS MOUNT_POINT_DIRECTORY

    • SMB の場合

       echo "mounting SMB public share"
       mount -t cifs -ousername=USERNAME,password=PASSWORD,ip=IP_ADDRESS //FILESHARE_NAME MOUNT_POINT_DIRECTORY
       echo "mounts completed"

  2. Dockerfile で環境構成を定義します。RUN は、NBD の nbd-client など、追加する必要があるシステム パッケージを指定するために使用します。CMD を使用して、イメージを動作させる際に実行するコマンド(起動スクリプト run.sh)を指定します。また、init プロセス バイナリを指定する ENTRYPOINT のデフォルト引数も指定します。

Cloud Run サービスのコードからネットワーク ファイル システムにアクセスする

サービスのコードでネットワーク ファイル システムにアクセスするには、通常行うようにファイル読み取りと書き込みのオペレーションを使用します。

コンテナ化とデプロイ

Cloud Run サービスのコードを作成したら、Cloud Run サービスに対して通常行うようにコンテナ化して、デプロイしますが、その際に必ず、第 2 世代の実行環境を指定します

次のステップ