本页面介绍如何使用 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 卷
您可以在不同的装载路径中装载多个存储桶。您还可以跨容器使用相同或不同的装载路径将卷装载到多个容器。
如果您使用多个容器,请先指定卷,然后为每个容器指定卷装载。
控制台
在 Google Cloud 控制台中,前往 Cloud Run:
如果您是要配置一个新服务来作为部署目标,请点击创建服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本。
如果您要配置新服务,请根据需要填写初始服务设置页面,然后点击容器、网络、安全性以展开服务配置页面。
点击卷标签页。
- 在卷下:
- 点击添加卷。
- 在卷类型下拉列表中,选择 Cloud Storage 存储桶作为卷类型。
- 在卷名称字段中,输入要用于卷的名称。
- 浏览并选择要用于卷的 Cloud Storage 存储桶,或视需要创建新的存储桶。
- 如果您要将存储桶设为只读,请选中“只读”复选框。
- 点击完成。
- 点击“容器”标签页。
- 点击卷装载标签页。
- 点击装载卷。
- 从菜单中选择存储卷。
- 指定您要用于装载卷的路径。
- 点击完成。
- 在卷下:
点击创建或部署。
命令行
注意:我们会显示 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。请务必严格按照说明修改字段。
如需查看和下载配置,请运行以下命令:
gcloud run services describe SERVICE --format export > service.yaml
请根据需要进行更新。
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 存储桶的名称。
- 将 IMAGE_URL 替换为对容器映像的引用,例如
使用以下命令将服务替换为其新配置:
gcloud run services replace service.yaml
查看卷装载设置
如需查看 Cloud Run 服务的当前卷装载设置,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud Run:
点击您感兴趣的服务以打开“服务详细信息”页面。
点击修订版本标签页。
在右侧的详细信息面板中,卷标签页下列出了卷装载设置。
命令行
使用以下命令:
gcloud run services describe SERVICE
在返回的配置中找到卷装载设置。