Configurar sandboxes para serviços

As sandboxes do Cloud Run oferecem um ambiente rápido, seguro e isolado para executar códigos não confiáveis ou ferramentas, como agentes de IA, no serviço atual no ambiente de segunda geração. As sandboxes são altamente otimizadas para latência e são executadas na mesma instância do contêiner, compartilhando a CPU e a memória alocadas.

Esta página descreve como configurar sandboxes no contêiner. Para detalhes sobre como escrever código para interagir com a sandbox usando a CLI, consulte Execução de código no Cloud Run.

Antes de começar

  1. Faça login nasua Google Cloud conta. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  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. Instale e inicialize a CLI gcloud.
  7. Implante um serviço do Cloud Run service no ambiente de execução de segunda geração.

Funções exigidas

Para receber as permissões necessárias para configurar e implantar os serviços do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:

Se você estiver implantando um serviço ou função do código-fonte, você também precisará ter outros papéis concedidos no projeto e na conta de serviço do Cloud Build.

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Ativar sandboxes

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

Quando você ativa as sandboxes, o serviço do Cloud Run é implantado no ambiente de execução de segunda geração. Para ativar as sandboxes nos serviços do Cloud Run, use a Google Cloud CLI ou uma configuração YAML:

gcloud

Para implantar ou atualizar o serviço, especifique a flag --sandbox-launcher:

  • Para implantar um novo serviço, execute o seguinte comando:

    gcloud beta run deploy SERVICE --image IMAGE_URL --sandbox-launcher

    Substitua:

    • SERVICE: o nome do serviço do Cloud Run.
    • IMAGE_URL: uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • Para atualizar um serviço atual, execute o seguinte comando:

    gcloud beta run services update SERVICE --sandbox-launcher

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize o arquivo YAML para incluir o atributo sandboxLauncher definido como true na configuração do contêiner:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        spec:
          containers:
          - name: CONTAINER
            image: IMAGE_URL
            sandboxLauncher: true
            port: 8080
    

    Substitua:

    • SERVICE: o nome do serviço do Cloud Run.
    • CONTAINER: o nome do contêiner.
    • IMAGE_URL: uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    O comando gcloud run services replace usa o arquivo service.yaml por padrão, se presente.

As sandboxes compartilham a CPU e a memória alocadas ao contêiner host. Verifique se os limites de CPU e memória do contêiner principal podem acomodar o aplicativo e as sandboxes ativas que você executa ao mesmo tempo.

Desativar sandboxes

Para desativar a capacidade de iniciar uma sandbox no serviço, use a Google Cloud CLI ou uma configuração YAML:

gcloud

Atualize o serviço usando a flag --no-sandbox-launcher executando o seguinte comando:

gcloud beta run services update SERVICE --no-sandbox-launcher

Substitua SERVICE pelo nome do serviço.

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize o arquivo YAML para remover o atributo sandboxLauncher na configuração do contêiner:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - name: CONTAINER
            image: IMAGE_URL
            port: 8080
    

    Substitua:

    • SERVICE: o nome do serviço do Cloud Run.
    • CONTAINER: o nome do contêiner.
    • IMAGE_URL: uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    O comando gcloud run services replace usa o arquivo service.yaml por padrão, se presente.

Ver configurações de sandbox

Para ver as configurações atuais da sandbox do serviço do Cloud Run, faça o seguinte:

Console

  1. No Google Cloud console, acesse a página Serviços do Cloud Run:

    Acesse o Cloud Run

  2. Clique no serviço para abrir a página Detalhes do serviço.

  3. Clique na guia Histórico de revisões.

  4. Na guia Contêineres, localize a configuração do iniciador de sandbox para conferir se os contêineres em sandbox estão ativados ou desativados.

gcloud

  1. Use o comando a seguir:

    gcloud beta run services describe SERVICE

    Substitua SERVICE pelo nome do serviço.

  2. Para verificar se os contêineres em sandbox estão ativados, localize o atributo sandboxLauncher: true na configuração retornada.

Para executar código não confiável em uma sandbox do serviço, consulte Execução de código no Cloud Run.