为实例配置沙盒

Cloud Run 沙盒提供了一个快速、安全且隔离的环境,用于运行不受信任的代码执行工具或浏览器自动化软件,以供托管在现有实例上的代理使用。沙盒针对延迟进行了高度优化,并且与容器在同一实例中运行,共享其分配的 CPU 和内存。

本页面介绍如何在容器上配置沙盒。 如需详细了解如何编写代码以使用 CLI 与沙盒进行交互,请参阅 Cloud Run 中的代码执行

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud的新用户, 请创建账号,以便在 真实场景中评估我们产品的性能。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. 安装并初始化 gcloud CLI。
  7. 部署 Cloud Run 实例

所需的角色

如需获得配置和部署 Cloud Run 实例所需的权限,请让管理员为您授予以下 IAM 角色:

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。 如果您的 Cloud Run 实例与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅 服务身份配置指南。 如需详细了解如何授予角色,请参阅 部署权限管理访问权限

启用沙盒

如需在 Cloud Run 实例中启用沙盒,请使用 Google Cloud CLI 或 YAML 配置:

gcloud

如需创建或更新实例,请指定 --sandbox-launcher 标志:

  • 如需创建新实例,请运行以下命令:

    gcloud beta run instances create INSTANCE --image IMAGE_URL --sandbox-launcher

    替换以下内容:

    • INSTANCE:Cloud Run 实例的名称。
    • IMAGE_URL:对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest
  • 如需更新现有实例,请运行以下命令:

    gcloud beta run instances update INSTANCE --sandbox-launcher

YAML

  1. 如果您要创建新实例,请跳过此步骤。 如果您要更新现有实例,请下载其 YAML 配置

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 更新 YAML 文件,以在容器配置中包含设置为 truesandboxLauncher 属性:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER
        image: IMAGE_URL
        sandboxLauncher: true
    

    替换以下内容:

    • INSTANCE:Cloud Run 实例的名称。
    • CONTAINER:容器的名称。
    • IMAGE_URL:对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest
  3. 使用以下命令创建或更新实例:

    gcloud beta run instances replace instance.yaml

沙盒共享分配给宿主容器的 CPU 和内存。确保主容器的 CPU 和内存限制足以容纳您的应用以及您同时运行的任何活跃沙盒。

停用沙盒

如需停用在实例中启动沙盒的功能,请使用 Google Cloud CLI 或 YAML 配置:

gcloud

使用 --no-sandbox-launcher 标志更新实例,方法是运行以下命令:

gcloud beta run instances update INSTANCE --no-sandbox-launcher

INSTANCE 替换为您的实例名称。

YAML

  1. 如果您要创建新实例,请跳过此步骤。 如果您要更新现有实例,请下载其 YAML 配置

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 更新 YAML 文件,以移除容器配置中的 sandboxLauncher 属性:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
    spec:
      containers:
      - name: CONTAINER
        image: IMAGE_URL
    

    替换以下内容:

    • INSTANCE:Cloud Run 实例的名称。
    • CONTAINER:容器的名称。
    • IMAGE_URL:对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest
  3. 使用以下命令创建或更新实例:

    gcloud beta run instances replace instance.yaml

查看沙盒设置

如需查看 Cloud Run 实例的当前沙盒设置,请执行以下操作:

gcloud

  1. 使用以下命令:

    gcloud beta run instances describe INSTANCE

    INSTANCE 替换为您的实例名称。

  2. 在返回的配置中找到 sandboxLauncher: true 属性。

如需在实例的沙盒中运行不受信任的代码,请参阅 Cloud Run 中的代码执行