用于服务的 Cloud Storage 卷装载

本页面介绍如何使用 Cloud Run 卷装载将 Cloud Storage 存储桶作为存储卷进行装载。

在 Cloud Run 中将存储桶作为卷进行装载会将存储桶内容展示为容器文件系统中的文件,这样便可以使用标准文件系统操作和内容库来访问该文件系统。

限制

Cloud Run 使用 Cloud Storage FUSE 进行此卷装载。因此,在将 Cloud Storage 存储桶作为卷进行装载时,有一些注意事项:

  • Cloud Storage FUSE 不会为对同一文件的多次写入提供并发控制(文件锁定)。如果多次写入操作尝试替换某个文件,则最后一次写入的内容会生效,而先前写入的所有内容都会丢失。
  • Cloud Storage FUSE 不是完全符合 POSIX 标准的文件系统。如需了解详情,请参阅 Cloud Storage FUSE 文档

准备工作

您需要一个 Cloud Storage 存储桶来作为卷进行装载。

装载 Cloud Storage 卷

您可以在不同的装载路径中装载多个存储桶。您还可以跨容器使用相同或不同的装载路径将卷装载到多个容器。

如果您使用多个容器,请先指定卷,然后为每个容器指定卷装载。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

  2. 如果您是要配置一个新服务来作为部署目标,请点击创建服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本

  3. 如果您要配置新服务,请根据需要填写初始服务设置页面,然后点击容器、网络、安全性以展开服务配置页面。

  4. 点击标签页。

    图片

    • 下:
      • 点击添加卷
      • 卷类型下拉列表中,选择 Cloud Storage 存储桶作为卷类型。
      • 卷名称字段中,输入要用于卷的名称。
      • 浏览并选择要用于卷的 Cloud Storage 存储桶,或视需要创建新的存储桶。
      • 如果您要将存储桶设为只读,请选中“只读”复选框。
      • 点击完成
      • 点击“容器”标签页。
      • 点击卷装载标签页。
      • 点击装载卷
      • 从菜单中选择存储卷。
      • 指定您要用于装载卷的路径。
      • 点击完成
  5. 点击创建部署

命令行

注意:我们会显示 gcloud beta run services update 命令,但您也可以将 gcloud beta run deploy 命令与如下所示的参数结合使用。

  • 如需添加卷并装载,请运行以下命令:

    gcloud beta run services update SERVICE \
    --execution-environment gen2 \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

    您需要将其中的:

    • SERVICE 替换为您的服务名称。
    • MOUNT_PATH 替换为您用于装载卷的相对路径,例如 /cache
    • VOLUME_NAME 替换为您要用于卷的任何名称。VOLUME_NAME 值用于将卷映射到卷装载。
    • BUCKET_NAME 替换为 Cloud Storage 存储桶的名称。
  • 如需将卷装载为只读卷,请运行以下命令:

--add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
  • 如果您使用多个容器,请先指定卷,然后为每个容器指定卷装载:

    gcloud beta run services update SERVICE \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \
    --container CONTAINER_1 \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \
    --container CONTAINER_2 \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH2

YAML

您可以使用 gcloud run services describe --format export 命令下载并查看现有服务配置,该命令会生成清理后的 YAML 格式的结果。然后按照后续说明修改字段,最后使用 gcloud run services replace 命令上传修改后的 YAML。请务必严格按照说明修改字段。

  1. 如需查看和下载配置,请运行以下命令:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 请根据需要进行更新。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/execution-environment: gen2
        spec:
          containers:
          - image: IMAGE_URL
            volumeMounts:
            - name: VOLUME_NAME
              mountPath: MOUNT_PATH
          volumes:
          - name: VOLUME_NAME
            csi:
              driver: gcsfuse.run.googleapis.com
              readOnly: IS_READ_ONLY
              volumeAttributes:
                bucketName: BUCKET_NAME

    替换

    • IMAGE_URL 替换为对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。 如果您使用 Artifact Registry,则必须预先创建制品库 REPO_NAME。网址格式为 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • MOUNT_PATH 替换为您用于装载卷的相对路径,例如 /cache
    • VOLUME_NAME 替换为您要用于卷的任何名称。VOLUME_NAME 值用于将卷映射到卷装载。
    • IS_READ_ONLY 替换为 True 以将卷设为只读,或替换为 False 以允许写入。
    • BUCKET_NAME 替换为 Cloud Storage 存储桶的名称。
  3. 使用以下命令将服务替换为其新配置:

    gcloud run services replace service.yaml

查看卷装载设置

如需查看 Cloud Run 服务的当前卷装载设置,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

  2. 点击您感兴趣的服务以打开“服务详细信息”页面。

  3. 点击修订版本标签页。

  4. 在右侧的详细信息面板中,卷标签页下列出了卷装载设置。

命令行

  1. 使用以下命令:

    gcloud run services describe SERVICE
  2. 在返回的配置中找到卷装载设置。