Einführung
Agenten arbeiten selten allein. Ein Vorgesetzter weist einem Rechercheur eine Aufgabe zu; ein Programmierer ruft einen Prüfer an. Das A2A-Protokoll standardisiert diesen Austausch, und das Agenten-Gateway leitet ihn weiter – so erhalten Anrufe zwischen Agenten dieselbe Weiterleitung, Sicherheit und Überwachbarkeit wie der übrige Datenverkehr.
In diesem Tutorial wird ein Beispiel-A2A-Agent hinter dem Gateway eingerichtet, seine Agentenkarte abgerufen und ihm eine Aufgabe zugewiesen.
Schritt 1 – Einen Beispiel-A2A-Agenten bereitstellen
Dieser Echo-Agent gibt jede empfangene Nachricht unverändert zurück. Der Dienst kennzeichnet sich selbst als A2A mit appProtocol: kgateway.dev/a2a, das dem Gateway mitteilt, wie es mit dem Backend umgehen soll:
kubectl apply -f- <<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: a2a-agent
labels: { app: a2a-agent }
spec:
selector:
matchLabels: { app: a2a-agent }
template:
metadata:
labels: { app: a2a-agent }
spec:
containers:
- name: a2a-agent
image: gcr.io/solo-public/docs/test-a2a-agent:latest
ports:
- containerPort: 9090
---
apiVersion: v1
kind: Service
metadata:
name: a2a-agent
spec:
selector: { app: a2a-agent }
type: ClusterIP
ports:
- protocol: TCP
port: 9090
targetPort: 9090
appProtocol: kgateway.dev/a2a
EOF
Schritt 2 – Weiterleitung an den Sachbearbeiter
Da der Dienst mit „A2A“ gekennzeichnet ist, leiten Sie ihn direkt weiter:
kubectl apply -f- <<'EOF'
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: a2a
spec:
parentRefs:
- name: agentgateway-proxy
namespace: agentgateway-system
rules:
- backendRefs:
- name: a2a-agent
port: 9090
EOF
Schritt 3 – Entdecken Sie den Agenten
Portweiterleitung für den Proxy einrichten:
kubectl port-forward deployment/agentgateway-proxy -n agentgateway-system 8080:80
A2A-Agenten veröffentlichen eine Agentenkarte, auf der beschrieben wird, wer sie sind und was sie können. Rufe sie über das Gateway ab:
curl -s http://localhost:8080/.well-known/agent.json
{
"name": "Echo Agent",
"description": "This agent echos the input given",
"version": "0.1.0",
"capabilities": { "streaming": true },
"defaultInputModes": ["text"],
"defaultOutputModes": ["text"]
}
Schritt 4 – Eine Aufgabe an den Mitarbeiter senden
A2A senden Aufgaben/Senden Anfrage, genau wie ein Mitarbeiter einen anderen anrufen würde:
curl -s -X POST http://localhost:8080/ -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": "1",
"method": "tasks/send",
"params": {
"id": "1",
"message": { "role": "user", "parts": [ { "type": "text", "text": "hello gateway!" } ] }
}
}'
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"status": {
"state": "completed",
"message": { "role": "agent", "parts": [ { "type": "text", "text": "on_send_task received: hello gateway!" } ] }
}
}
}
Die Aufgabe wurde auf dem Agenten ausgeführt und wurde zurückgemeldet abgeschlossen, die über das Agent-Gateway geleitet werden. Ein anrufender Agent erreicht jeden Agenten über diesen einen Endpunkt, sodass die Erkennung und die Sicherheit am Gateway stattfinden und für alle Agenten gelten.
Aufräumen
kubectl delete httproute a2a
kubectl delete deployment,service a2a-agent
Wie geht es weiter?
Über das Gateway fließen Tools, Modelle und Agenten. Das abschließende Tutorial sorgt für die Absicherung dieses Datenverkehrs: API-Schlüssel- und JWT-Authentifizierung, CEL-basierte Zugriffsregeln sowie OpenTelemetry-Traces.
Als Nächstes in dieser Reihe: Absicherung des Agent-Datenverkehrs durch Richtlinien und Überwachbarkeit.
Zusammenfassung
- Ein A2A-Backend ist ein gewöhnlicher Dienst, der mit
appProtocol: kgateway.dev/a2a; einHTTPRouteverbindet es mit dem Gateway. - Makler veröffentlichen eine Maklerkarte unter
/.well-known/agent.json, die über das Gateway bereitgestellt werden. - A
Aufgaben/SendenDer Aufruf wird auf dem Agenten ausgeführt und gibt dessen Ergebnis zurück, das von agentgateway übermittelt wird. - Jedem Agenten ist ein Endpunkt zugeordnet, sodass die Erkennung, Authentifizierung und Überwachbarkeit jeweils nur einmal erfolgen.
