Descripción general de la zona de pruebas del contenedor personalizado

Las zonas de pruebas estándar proporcionan un conjunto predefinido de bibliotecas, que ofrecen soluciones llave en mano para tareas específicas, como la ejecución de código y el uso de computadoras. Para las cargas de trabajo de agentes que requieren dependencias, bibliotecas, herramientas personalizadas o interfaces de plano de datos especializadas, puedes proporcionar tus propias imágenes de contenedor (también conocidas como Bring Your Own Container o BYOC). Esta función te permite ejecutar cargas de trabajo personalizadas dentro de los límites seguros de un entorno de zona de pruebas.

Antes de comenzar

Configura tu proyecto, el repositorio de imágenes y los permisos.

Configura tu imagen de contenedor

  1. Compila una imagen de contenedor: Crea una imagen de Docker que contenga tu entorno personalizado. Para garantizar la compatibilidad con las zonas de pruebas de Gemini Enterprise Agent Platform, tu imagen personalizada debe cumplir con los siguientes requisitos:

    • SO: Basado en Linux (por ejemplo, Debian o Ubuntu).
    • Ejecutor: Debe incluir un ejecutor o punto de entrada compatible que Gemini Enterprise Agent Platform pueda usar para ejecutar comandos.
    • Seguridad: No debe requerir privilegios de administrador ni acceso a recursos restringidos del sistema, ya que la imagen se ejecutará dentro de una zona de pruebas segura y aislada.
  2. Agrega la imagen a Artifact Registry: Agrega tu imagen a Google Cloud Artifact Registry, donde Agent Platform puede acceder a ella. Cuando aprovisiones tu zona de pruebas, proporciona el URI de la imagen de Artifact Registry.

Configura permisos

Para permitir que Agent Sandbox extraiga tu imagen de contenedor personalizada de Artifact Registry, otorga el rol de Lector de Artifact Registry (roles/artifactregistry.reader) en el repositorio que contiene la imagen a el agente de servicio de Agent Sandbox:

  • Agente de servicio de Agent Sandbox: service-PROJECT_NUMBER@gcp-sa-vertex-sandbox.iam.gserviceaccount.com

Reemplaza PROJECT_NUMBER por el número de proyecto de tu proyecto.

Para obtener más información sobre cómo otorgar roles, consulta Otorga permisos a un agente de servicio.

Crea una instancia de Agent Platform

Si no tienes una instancia de Agent Platform, crea una.

import agentplatform
client = agentplatform.Client(
    project='PROJECT_ID',
    location='LOCATION',
    http_options={
        "api_version": "v1beta1",
    }
)
remote_agent = client.runtimes.create()
remote_agent_name = remote_agent.api_resource.name

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del Google Cloud proyecto de.
  • LOCATION: La Google Cloud región de tu instancia de Agent Platform. Consulta Regiones admitidas.

Crea una zona de pruebas de contenedor personalizada

Para crear una zona de pruebas de contenedor personalizada, primero debes crear una plantilla de zona de pruebas (SandboxEnvironmentTemplate). Después de crear una plantilla, Agent Platform crea grupos precalentados que están asociados con la plantilla para proporcionar tiempos de inicio más rápidos y confiables.

Para crear una plantilla, define un recurso SandboxEnvironmentTemplate, que especifica la configuración de tu contenedor personalizado:

  • Imagen de contenedor: Es el URI de una imagen personalizada precompilada que se aloja en Artifact Registry.
  • Puertos: Son los puertos de red que se expondrán desde el contenedor.

Crear la plantilla

# Create a custom sandbox template
templates_client = client.sandboxes.templates

operation = templates_client.create(
    name=remote_agent_name,
    display_name="DISPLAY_NAME",
    config={
        "custom_container_environment": {
            "custom_container_spec": {
                "image_uri": "IMAGE_LOCATION"
            },
            "resources": {
                "requests": {
                    "cpu": "1",
                    "memory": "500Mi"
                },
                "limits": {
                    "cpu": "1",
                    "memory": "500Mi"
                }
            },
            "ports": [
                {
                    "port": PORT_NUMBER,
                    "protocol": "TCP"
                }
            ]
        },
        "egress_control_config": {
            "internet_access": True
        }
    }
)
template_name = operation.response.name
print(f"Template created: {template_name}")

Crea la zona de pruebas

Después de definir tu plantilla, puedes aprovisionar un nuevo entorno de zona de pruebas haciendo referencia al nombre del recurso de la plantilla.

# Provision a sandbox referencing the template
create_operation = client.sandboxes.create(
    name=remote_agent_name,
    config={
        "sandbox_environment_template": template_name,
        "display_name": "DISPLAY_NAME"
    }
)
sandbox = create_operation.response
print(f"Sandbox environment provisioned: {sandbox.name}")

¿Qué sigue?