Übersicht über die Sandbox für benutzerdefinierte Container

Die Standardsandboxen bieten eine vordefinierte Reihe von Bibliotheken, die schlüsselfertige Lösungen für bestimmte Aufgaben wie die Codeausführung und die Computernutzung bieten. Für Agenten-Arbeitslasten, die bestimmte Abhängigkeiten, Bibliotheken, benutzerdefinierte Tools oder spezielle Datenebenen-Schnittstellen erfordern, können Sie Ihre eigenen Container-Images bereitstellen (auch als „Bring your own container“ oder BYOC bezeichnet). Mit dieser Funktion können Sie benutzerdefinierte Arbeitslasten innerhalb der sicheren Grenzen einer Sandbox-Umgebung ausführen.

Hinweis

Richten Sie Ihr Projekt, Image-Repository und Ihre Berechtigungen ein.

Container-Image einrichten

  1. Container-Image erstellen: Erstellen Sie ein Docker-Image, das Ihre benutzerdefinierte Umgebung enthält. Damit die Kompatibilität mit Gemini Enterprise Agent Platform-Sandboxen gewährleistet ist, muss Ihr benutzerdefiniertes Image die folgenden Anforderungen erfüllen:

    • Betriebssystem: Linux-basiert (z. B. Debian oder Ubuntu).
    • Runner: Muss einen kompatiblen Runner oder Einstiegspunkt enthalten, den Gemini Enterprise Agent Platform zum Ausführen von Befehlen verwenden kann.
    • Sicherheit: Darf keine Root-Berechtigungen oder Zugriff auf eingeschränkte Systemressourcen erfordern, da das Image in einer sicheren, isolierten Sandbox ausgeführt wird.
  2. Image zu Artifact Registry hinzufügen: Fügen Sie Ihr Image zu Google Cloud Artifact Registry hinzu, wo Agent Platform darauf zugreifen kann. Geben Sie beim Bereitstellen Ihrer Sandbox den Artifact Registry-Image-URI an.

Berechtigungen konfigurieren

Damit die Agent Sandbox Ihr benutzerdefiniertes Container-Image aus Artifact Registry abrufen kann, gewähren Sie dem Dienst-Agent der Agent Sandbox die Rolle Artifact Registry-Leser (roles/artifactregistry.reader) für das Repository, das das Image enthält:

  • Dienst-Agent der Agent Sandbox: service-PROJECT_NUMBER@gcp-sa-vertex-sandbox.iam.gserviceaccount.com

Ersetzen Sie PROJECT_NUMBER durch die Projektnummer Ihres Projekts.

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Berechtigungen für einen Dienst Agenten gewähren.

Agent Platform-Instanz erstellen

Wenn Sie keine Agent Platform-Instanz haben, erstellen Sie eine.

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

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID
  • LOCATION: Die Google Cloud Region für Ihre Agent Platform-Instanz. Siehe Unterstützte Regionen.

Benutzerdefinierte Container-Sandbox erstellen

Wenn Sie eine benutzerdefinierte Container-Sandbox erstellen möchten, erstellen Sie zuerst eine Sandbox-Vorlage (SandboxEnvironmentTemplate). Nachdem Sie eine Vorlage erstellt haben, erstellt Agent Platform vorab aufgewärmte Pools, die mit der Vorlage verknüpft sind, um schnellere und zuverlässigere Startzeiten zu ermöglichen.

Um eine Vorlage zu erstellen, definieren Sie eine SandboxEnvironmentTemplate-Ressource, die die Konfiguration für Ihren benutzerdefinierten Container angibt:

  • Container-Image: Der URI eines vorgefertigten benutzerdefinierten Images, das in Artifact Registry gehostet wird.
  • Ports: Netzwerkports, die im Container verfügbar gemacht werden sollen.

Vorlage erstellen

# 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}")

Sandbox erstellen

Nachdem Sie Ihre Vorlage definiert haben, können Sie eine neue Sandbox-Umgebung bereitstellen, indem Sie auf den Ressourcennamen der Vorlage verweisen.

# 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}")

Nächste Schritte