在 Cloud Workstations 中挂载 Filestore 实例

Cloud Workstations 可以装载位于同一 VPC 网络中的 Filestore 网络文件系统 (NFS) 实例。多个 Cloud Workstations 实例可以同时访问 Filestore 实例。

如需详细了解 Filestore,请参阅 Filestore 文档

准备工作

在开始之前,请创建项目设置所需的 IAM 角色

创建项目

  1. 工作站项目中,确保您已启用 Filestore API 和 Cloud Workstations API。

    启用 Filestore 和 Cloud Workstations API

  2. 确保您已安装并初始化 gcloud CLI。 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
    

所需的角色

如需获得创建和更新工作站所需的权限,请让管理员向您授予工作站项目的以下 IAM 角色:

  • 如果您是 Cloud Workstations Admin,请让您的管理员为您授予以下角色: Cloud Workstations Admin (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 创建自定义容器映像,请参阅自定义容器映像