Filestore インスタンスを Cloud Workstations にマウントする

Cloud Workstations は、同じ VPC ネットワーク内にある Filestore ネットワーク ファイル システム(NFS)インスタンスをマウントできます。Filestore インスタンスには、複数の Cloud Workstations インスタンスから同時にアクセスできます。

Filestore の詳細については、Filestore のドキュメントをご覧ください。

始める前に

プロジェクトを作成する

  1. ワークステーション プロジェクトで、Filestore API と Cloud Workstations API が有効になっていることを確認します。

    Filestore と Cloud Workstations API を有効にする

  2. gcloud CLI をインストールして初期化します。gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
    

必要なロール

ワークステーションの作成と更新に必要な権限を取得するには、ワークステーション プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

  • Cloud Workstations 管理者の場合は、次のロールを付与するよう管理者に依頼してください。 Cloud Workstations 管理者(roles/workstations.admin)。
  • Filestore 管理者の場合は、次のロールを付与するよう管理者に依頼してください。 Filestore 編集者(roles/file.editor)。

ロールの付与の詳細については、アクセスの管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Filestore インスタンスを作成する

Filestore インスタンスをまだ作成していない場合は、次の gcloud CLI filestore instances create コマンドを使用して作成します。命名の詳細については、Filestore インスタンスの命名と、ファイル共有の命名をご覧ください。

  gcloud filestore instances create INSTANCE_ID \
    --file-share=name=FILE_SHARE_NAME,capacity=1TiB \
    --tier=ENTERPRISE \
    --network=name=NETWORK_NAME \
    --region=LOCATION \
    --project WORKSTATIONS_PROJECT_ID

以下を置き換えます。

  • INSTANCE_ID: Filestore インスタンスを一意に識別する ID。
  • FILE_SHARE_NAME: Filestore インスタンスから提供されるディレクトリの名前(例: vol1)。
  • NETWORK_NAME: インスタンスが接続されている VPC ネットワークの名前。Cloud Workstations クラスタのネットワーク(default など)と一致する必要があります。
  • LOCATION: Filestore インスタンスのリージョン。 ワークステーション クラスタのリージョンと一致する必要があります。
  • WORKSTATIONS_PROJECT_ID: ワークステーション プロジェクトの ID。

Filestore インスタンスの IP アドレスを取得する

Filestore インスタンスを作成したら、filestore instances describe gcloud CLI コマンドを使用して IP アドレスを取得します。

  gcloud filestore instances describe INSTANCE_ID \
    --region=LOCATION \
    --project WORKSTATIONS_PROJECT_ID

以下を置き換えます。

  • INSTANCE_ID: Filestore インスタンスを一意に識別する ID。
  • LOCATION: Filestore インスタンスのリージョン。 ワークステーション クラスタのリージョンと一致する必要があります。
  • WORKSTATIONS_PROJECT_ID: ワークステーション プロジェクトの ID。

このコマンドにより、IP アドレスが次の形式で出力されます。

...
networks:
- connectMode: DIRECT_PEERING
  ipAddresses:
  - FILESTORE_IP_ADDRESS
...

次の手順で必要になるため、FILESTORE_IP_ADDRESS をメモしておきます。

ワークステーション クラスタを作成する

ワークステーション クラスタをまだ作成していない場合は、gcloud CLI の clusters create コマンドを使用して作成します。

gcloud workstations clusters create \
    WORKSTATIONS_CLUSTER_NAME \
    --network=NETWORK_NAME \
    --region=LOCATION \
    --project=WORKSTATIONS_PROJECT_ID

以下を置き換えます。

  • WORKSTATIONS_CLUSTER_NAME: ワークステーション クラスタの名前。
  • NETWORK_NAME: Cloud Workstations インスタンスが接続されている VPC ネットワークの名前。Filestore インスタンスのネットワーク(default など)と一致する必要があります。
  • LOCATION: ワークステーション クラスタのリージョン名。Filestore インスタンスのリージョンと一致する必要があります。
  • WORKSTATIONS_PROJECT_ID: ワークステーション プロジェクトの ID。

ワークステーション構成とワークステーションを作成する

Cloud Workstations の構成とワークステーション インスタンスをまだ作成していない場合は、ワークステーション構成を作成するワークステーションを作成するをご覧ください。

ワークステーションで Filestore インスタンスをマウントする

Cloud Workstations インスタンスを起動した後、ターミナル ウィンドウに移動して、次のコマンドを実行して Filestore インスタンスをマウントします。

sudo rpcbind
mkdir -p FILE_SHARE_NAME
sudo mount -o rw,intr FILESTORE_IP_ADDRESS:/FILE_SHARE_NAME FILE_SHARE_NAME

以下を置き換えます。

  • FILE_SHARE_NAME: Filestore インスタンスから提供されるディレクトリの名前(例: vol1)。
  • FILESTORE_IP_ADDRESS: Filestore インスタンスの IP アドレス。

mount コマンドが成功すると、ファイル共有パスに Filestore インスタンスの内容が表示されます。

Filestore インスタンスのマウントの詳細については、Compute Engine クライアントへのファイル共有のマウントをご覧ください。

Filestore の自動マウント用のカスタム コンテナ イメージを作成する

次の Dockerfile を使用して、起動時に Cloud Workstations 内の Filestore インスタンスを自動的にマウントするカスタム コンテナ イメージを作成できます。

FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest

RUN echo "#!/bin/bash\n\
sudo rpcbind\n\
sudo mkdir -p /home/user/FILE_SHARE_NAME\n\
sudo mount -o rw,intr FILESTORE_IP_ADDRESS:/FILE_SHARE_NAME /home/user/FILE_SHARE_NAME" | sudo tee -a /etc/workstation-startup.d/011_mount-filestore.sh

RUN sudo chmod +x /etc/workstation-startup.d/011_mount-filestore.sh

以下を置き換えます。

  • FILE_SHARE_NAME: Filestore インスタンスから提供されるディレクトリの名前(例: vol1)。
  • FILESTORE_IP_ADDRESS: Filestore インスタンスの IP アドレス。

Cloud Workstations のカスタム コンテナ イメージの作成の詳細については、コンテナ イメージをカスタマイズするをご覧ください。