Las zonas de pruebas de Cloud Run proporcionan un entorno rápido, seguro y aislado para ejecutar código no confiable o herramientas, como agentes de IA, dentro de tu servicio existente en el entorno de segunda generación. Las zonas de pruebas están altamente optimizadas para la latencia y se ejecutan dentro de la misma instancia que tu contenedor, y comparten la CPU y la memoria asignadas.
En esta página, se describe cómo configurar zonas de pruebas en tu contenedor. Para obtener detalles sobre cómo escribir código para interactuar con el entorno de pruebas con la CLI, consulta Ejecución de código en Cloud Run.
Antes de comenzar
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Instala e inicializa la CLI de gcloud
- Implementa un servicio de Cloud Run en el entorno de ejecución de segunda generación.
Roles obligatorios
Para obtener los permisos que necesitas para configurar y, luego, implementar los servicios de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Desarrollador de Cloud Run (
roles/run.developer) en el servicio de Cloud Run - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) en la identidad del servicio
Si implementas un servicio o una función desde el código fuente, también debes tener roles adicionales otorgados en tu proyecto y en la cuenta de servicio de Cloud Build.
Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con lasGoogle Cloud APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.
Habilita las zonas de pruebas
Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.
Cuando habilitas los entornos de pruebas, tu servicio de Cloud Run se implementa en el entorno de ejecución de segunda generación. Para habilitar las zonas de pruebas en los servicios de Cloud Run, usa Google Cloud CLI o una configuración en YAML:
gcloud
Para implementar o actualizar el servicio, especifica la marca --sandbox-launcher:
Para implementar un servicio nuevo, ejecuta el siguiente comando:
gcloud beta run deploy SERVICE --image IMAGE_URL --sandbox-launcher
Reemplaza lo siguiente:
- SERVICE: El nombre de tu servicio de Cloud Run.
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato deLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
Para actualizar un servicio existente, ejecuta el siguiente comando:
gcloud beta run services update SERVICE --sandbox-launcher
YAML
Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualiza el archivo YAML de tu servicio para incluir el atributo
sandboxLauncherestablecido entruedentro de la configuración del contenedor: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: 8080Reemplaza lo siguiente:
- SERVICE: El nombre de tu servicio de Cloud Run.
- CONTAINER: El nombre de tu contenedor
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato deLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
El comando
gcloud run services replaceusa de forma predeterminada el archivoservice.yamlsi está presente.
Las zonas de pruebas comparten la CPU y la memoria asignadas al contenedor host. Asegúrate de que los límites del contenedor principal para la CPU y la memoria sean suficientes para admitir tu aplicación y los sandbox activos que ejecutes al mismo tiempo.
Inhabilita las zonas de pruebas
Para inhabilitar la capacidad de iniciar una zona de pruebas en tu servicio, usa Google Cloud CLI o una configuración YAML:
gcloud
Actualiza el servicio con la marca --no-sandbox-launcher ejecutando el siguiente comando:
gcloud beta run services update SERVICE --no-sandbox-launcher
SERVICE por el nombre del servicio
YAML
Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualiza el archivo YAML de tu servicio para quitar el atributo
sandboxLauncherdentro de la configuración del contenedor:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - name: CONTAINER image: IMAGE_URL port: 8080Reemplaza lo siguiente:
- SERVICE: El nombre de tu servicio de Cloud Run.
- CONTAINER: El nombre de tu contenedor
- IMAGE_URL: Una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato deLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
El comando
gcloud run services replaceusa de forma predeterminada el archivoservice.yamlsi está presente.
Cómo iniciar zonas de pruebas
Una vez que habilites las zonas de pruebas, podrás iniciarlas desde tu entorno de ejecución de contenedores. El objeto binario de zona de pruebas se encuentra en /usr/local/gcp/bin/sandbox.
Puedes ejecutar el archivo binario haciendo referencia a su ruta de acceso absoluta en el código fuente. Por ejemplo, para imprimir Hello dentro de tu zona de pruebas aislada, elige una de las siguientes opciones:
Node.js
Para ejecutar el comando de zona de pruebas desde una aplicación de Node.js, incluye el siguiente código:
exec(`/usr/local/gcp/bin/sandbox do -- /bin/echo "Hello"`, (e, stdout, stderr) => {
res.send({ stdout, stderr });
});
Python
Para ejecutar el comando de zona de pruebas desde una aplicación de Python, incluye el siguiente código:
import subprocess
result = subprocess.run(
["/usr/local/gcp/bin/sandbox", "do", "--", "/bin/echo", "Hello"],
capture_output=True,
text=True,
)
return {"stdout": result.stdout, "stderr": result.stderr}
Go
Para ejecutar el comando de zona de pruebas desde una aplicación de Go, incluye el siguiente código:
cmd := exec.Command("/usr/local/gcp/bin/sandbox", "do", "--", "/bin/echo", "Hello")
out, err := cmd.CombinedOutput()
CLI de Sandbox
Para ejecutar el comando de zona de pruebas directamente desde la línea de comandos, ejecuta el siguiente comando:
/usr/local/gcp/bin/sandbox do -- /bin/echo "Hello"
En los ejemplos de esta guía, se usa el comando sandbox en lugar de su ruta de acceso absoluta /usr/local/gcp/bin/sandbox.
Para ver la lista completa de comandos disponibles, ejecuta el comando /usr/local/gcp/bin/sandbox -h.
Para ejecutar código no confiable en un entorno de pruebas desde tu servicio, consulta Ejecución de código en Cloud Run.