Einführung
Im Verlauf dieser Serie hat sich das Gateway zum gemeinsamen Zugangspunkt für Ihre Tools, Modelle und Agenten entwickelt. Damit ist es der ideale Ort, um festzulegen, wer welche Funktionen aufrufen darf, und der einzige Ort, an dem Sie erfahren können, was genau passiert ist. In diesem Tutorial fügen Sie dem Gateway eine Authentifizierungsrichtlinie hinzu und lesen die Protokolle aus, die es bei jeder Anfrage erstellt.
Schritt 1 – Ein Backend zum Schutz freigeben
Falls Sie noch eine Route aus einem früheren Tutorial haben, verwenden Sie diese. Andernfalls stellen Sie das httpbin-Beispiel bereit und leiten Sie die Route dorthin weiter:
kubectl apply -f https://raw.githubusercontent.com/kgateway-dev/kgateway/refs/heads/main/examples/httpbin.yaml
kubectl apply -f- <<'EOF'
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: httpbin
namespace: httpbin
spec:
parentRefs:
- name: agentgateway-proxy
namespace: agentgateway-system
hostnames: ["www.example.com"]
rules:
- backendRefs:
- name: httpbin
port: 8000
EOF
Schritt 2 – API-Schlüssel-Authentifizierung erzwingen
Speichern Sie einen oder mehrere Schlüssel in einem Secret:
kubectl apply -f- <<'EOF'
apiVersion: v1
kind: Secret
metadata:
name: apikey
namespace: agentgateway-system
labels:
app: httpbin
type: extauth.solo.io/apikey
stringData:
api-key: N2YwMDIxZTEtNGUzNS1jNzgzLTRkYjAtYjE2YzRkZGVmNjcy
EOF
Fügen Sie ein AgentGateway-Richtlinie das einen gültigen Schlüssel erfordert. Dieser richtet sich an die gesamte agentgateway-proxy Gateway, sodass alle Routen abgedeckt sind:
kubectl apply -f- <<'EOF'
apiVersion: agentgateway.dev/v1alpha1
kind: AgentgatewayPolicy
metadata:
name: apikey-auth
namespace: agentgateway-system
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: agentgateway-proxy
traffic:
apiKeyAuthentication:
mode: Strict
secretRef:
name: apikey
EOF
Schritt 3 – Das Tor testen
Portweiterleitung für den Proxy einrichten:
kubectl port-forward deployment/agentgateway-proxy -n agentgateway-system 8080:80
Eine Anfrage ohne Schlüssel wird abgelehnt:
curl -s -o /dev/null -w "HTTP %{http_code}\n" localhost:8080/headers -H "host: www.example.com"
HTTP 401
Die gleiche Anfrage mit einem gültigen Berechtigung: Inhaber Schlüsselübergaben:
curl -s -o /dev/null -w "HTTP %{http_code}\n" localhost:8080/headers \
-H "host: www.example.com" \
-H "Authorization: Bearer N2YwMDIxZTEtNGUzNS1jNzgzLTRkYjAtYjE2YzRkZGVmNjcy"
HTTP 200
Das Gateway setzte die Richtlinie durch, bevor die Anfrage das Backend erreichte.
Schritt 4 – Lesen Sie die Zugriffsprotokolle
agentgateway protokolliert jede von ihm bearbeitete Anfrage. Sie können diese Protokolle auf dem Proxy einsehen:
kubectl logs deploy/agentgateway-proxy -n agentgateway-system--tail=5
... route=httpbin/httpbin http.method=GET http.host=www.example.com http.path=/headers
http.status=401 protocol=http error="Fehler bei der API-Schlüssel-Authentifizierung: Kein API-Schlüssel gefunden"
reason=APIKeyAuth duration=1ms
... route=httpbin/httpbin endpoint=10.244.0.7:8080 http.method=GET http.host=www.example.com
http.path=/headers http.status=200 protocol=http duration=4 ms
In jeder Zeile werden die Route, die Methode, der Host, der Pfad, der Status, das Protokoll und die Dauer erfasst – sowie bei abgelehnten Anrufen der genaue Grund (APIKeyAuth). Diese Protokollierung umfasst den MCP-, LLM- und A2A-Datenverkehr, wobei in jeder Zeile das jeweilige Protokoll angegeben ist, sodass ein einziger Datenstrom die Fragen beantwortet: „Was haben die Agenten getan und was war erlaubt?“
Für verteilte Traces über verschiedene Agenten und Tools hinweg exportiert AgentGateway OpenTelemetry; siehe die unten verlinkte Dokumentation zum Tracing.
Weiterführende Informationen
- Detailliertere Regeln. Sie können den Geltungsbereich einer Richtlinie auf eine einzelne
HTTPRoute, und das CEL-basierte RBAC legt fest, welcher Aufrufer welches Tool oder Modell verwenden darf. - Andere Authentifizierungsmethoden. Bei der JWT-Authentifizierung werden Token Ihres Identitätsanbieters überprüft.
- Traces und Metriken. Richten Sie das Gateway auf einen OpenTelemetry-Collector aus, um End-to-End-Traces und Metriken im Prometheus-Stil zu erhalten.
Aufräumen
kubectl delete agentgatewaypolicy apikey-auth -n agentgateway-system
kubectl delete secret apikey -n agentgateway-system
kubectl delete httproute httpbin -n httpbin
So entfernen Sie den gesamten Labor-Cluster:
kind delete cluster --name agw-lab
Zusammenfassung der Serie
Sie haben mit einem leeren Cluster begonnen und am Ende ein Agent-Gateway eingerichtet, das Tools (MCP), Modelle (LLM) und Agenten (A2A) über eine zentrale Stelle weiterleitet, wobei die Authentifizierung erzwungen und jede Anfrage protokolliert wird. Diese Konfiguration läuft auf jedem von Ihnen betriebenen Kubernetes-Cluster und basiert auf Open-Source-Komponenten.
Zusammenfassung
- Ein
AgentGateway-Richtliniemittraffic.apiKeyAuthenticationüberprüft die Schlüssel am Gateway; atargetRefbeschränkt es auf ein Gateway oder eine einzelne Route. - Schlüssel befinden sich in einem „Secret“ vom Typ
extauth.solo.io/apikey; Kunden sendenAuthorization: Bearer <key>. - Das Gateway protokolliert jede Anfrage – Route, Status, Protokoll, Dauer und den Authentifizierungsgrund – für den MCP-, LLM- und A2A-Datenverkehr.
- CEL RBAC, JWT-Authentifizierung und OpenTelemetry-Tracing erweitern dies für den Produktiveinsatz.
