Execução de código no Cloud Run

O Cloud Run já é isolado e em sandbox, o que o torna ideal para hospedar agentes de IA. Quando você ativa os sandboxes do Cloud Run, a ferramenta de linha de comando sandbox fica disponível no contêiner. Use essa ferramenta de linha de comando para executar código não confiável escrito em qualquer linguagem, em um ambiente de sandbox altamente otimizado e isolado do restante do contêiner.

Os agentes de IA podem usar sandboxes para executar subagentes com segurança, realizar tarefas computacionais ou abrir navegadores em um ambiente rápido e isolado sem arriscar o sistema host.

Os sandboxes do Cloud Run oferecem as seguintes vantagens principais:

  • Criação rápida: os sandboxes são interativos e estão prontos para executar comandos quase instantaneamente. Ao criar sandboxes em um recurso do Cloud Run em que o agente é executado, você reduz os tempos de criação em comparação com a criação de um novo recurso do Cloud Run para cada tarefa. Essa eficiência ajuda a garantir que o agente continue responsivo.

  • Segurança: as sandboxes isolam a execução de processos. Por padrão, os sandboxes não têm acesso à carga de trabalho principal, às variáveis de ambiente, aos secrets ou ao servidor de metadados Google Cloud . Todas as caixas de areia são completamente isoladas umas das outras.

  • Controle de acesso e ambiente: os processos são executados com privilégios sudo como um usuário não raiz, permitindo que você instale ferramentas usando gerenciadores de pacotes como apt, pip ou npm durante a execução. Embora o ambiente de sandbox seja temporário e excluído após a conclusão, é possível usar diretórios permanentes ou snapshots para salvar espaços de trabalho específicos ou mapear dados para um bucket do Cloud Storage.

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de 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 no ambiente de execução de segunda geração.

Ativar sandboxes

Quando você ativa os sandboxes, o serviço do Cloud Run é implantado no ambiente de execução de segunda geração. Para ativar sandboxes em 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 seu 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 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • Para atualizar um serviço, 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 do serviço 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 seu 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 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

    Por padrão, o comando gcloud run services replace usa o arquivo service.yaml, se ele estiver presente.

Os sandboxes compartilham a CPU e a memória alocadas para o contêiner host. Verifique se os limites do contêiner principal para CPU e memória são suficientes para acomodar o aplicativo e as sandbox ativas que você executa ao mesmo tempo.

Desativar sandboxes

Para desativar a capacidade de iniciar uma sandbox no seu 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

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