For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.
CORS
CORS annotations on an Ingress are projected by the agentgateway emitter into an AgentgatewayPolicy with spec.traffic.cors settings. The policy targets the generated HTTPRoute.
Before: Ingress with CORS
cat <<'EOF' > cors-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cors-demo
annotations:
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "https://example.com, https://app.example.com"
nginx.ingress.kubernetes.io/cors-allow-methods: "GET, POST, PUT, DELETE, OPTIONS"
nginx.ingress.kubernetes.io/cors-allow-headers: "Authorization, Content-Type"
nginx.ingress.kubernetes.io/cors-max-age: "3600"
spec:
ingressClassName: agentgateway
rules:
- host: api.example.com
http:
paths:
- backend:
service:
name: api-service
port:
number: 8080
path: /
pathType: Prefix
EOFConvert
ingress2gateway print --providers=ingress-nginx --emitter=agentgateway \
--input-file cors-ingress.yaml > cors-agentgateway.yamlAfter: AgentgatewayPolicy with CORS
cat cors-agentgateway.yamlThe tool generates a Gateway, HTTPRoute(s), and an AgentgatewayPolicy named after the Ingress. CORS is under spec.traffic.cors:
apiVersion: agentgateway.dev/v1alpha1
kind: AgentgatewayPolicy
metadata:
name: cors-demo
namespace: default
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: HTTPRoute
name: cors-demo-api-example-com
traffic:
cors:
allowOrigins:
- https://example.com
- https://app.example.com
allowMethods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
allowHeaders:
- Authorization
- Content-Type
maxAge: 3600Apply
kubectl apply -f cors-agentgateway.yaml