# Copyright Envoy AI Gateway Authors # SPDX-License-Identifier: Apache-2.0 # The full text of the Apache license is available in the LICENSE file at # the root of the repo. apiVersion: gateway.networking.k8s.io/v1 kind: GatewayClass metadata: name: envoy-ai-gateway-basic spec: controllerName: gateway.envoyproxy.io/gatewayclass-controller --- apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: envoy-ai-gateway-basic namespace: default spec: gatewayClassName: envoy-ai-gateway-basic listeners: - name: http protocol: HTTP port: 80 infrastructure: parametersRef: group: gateway.envoyproxy.io kind: EnvoyProxy name: envoy-ai-gateway-basic --- # By default, Envoy Gateway sets the buffer limit to 32kiB which is not sufficient for AI workloads. # This ClientTrafficPolicy sets the buffer limit to 50MiB as an example. apiVersion: gateway.envoyproxy.io/v1alpha1 kind: ClientTrafficPolicy metadata: name: client-buffer-limit namespace: default spec: targetRefs: - group: gateway.networking.k8s.io kind: Gateway name: envoy-ai-gateway-basic connection: bufferLimit: 50Mi --- apiVersion: aigateway.envoyproxy.io/v1alpha1 kind: AIGatewayRoute metadata: name: envoy-ai-gateway-basic namespace: default spec: parentRefs: - name: envoy-ai-gateway-basic kind: Gateway group: gateway.networking.k8s.io rules: - matches: - headers: - type: Exact name: x-ai-eg-model value: some-cool-self-hosted-model backendRefs: - name: envoy-ai-gateway-basic-testupstream --- apiVersion: aigateway.envoyproxy.io/v1alpha1 kind: AIServiceBackend metadata: name: envoy-ai-gateway-basic-testupstream namespace: default spec: schema: name: OpenAI backendRef: name: envoy-ai-gateway-basic-testupstream kind: Backend group: gateway.envoyproxy.io --- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: Backend metadata: name: envoy-ai-gateway-basic-testupstream namespace: default spec: endpoints: - fqdn: hostname: envoy-ai-gateway-basic-testupstream.default.svc.cluster.local port: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: envoy-ai-gateway-basic-testupstream namespace: default spec: replicas: 1 selector: matchLabels: app: envoy-ai-gateway-basic-testupstream template: metadata: labels: app: envoy-ai-gateway-basic-testupstream spec: containers: - name: testupstream image: docker.io/envoyproxy/ai-gateway-testupstream:latest imagePullPolicy: IfNotPresent ports: - containerPort: 8080 env: - name: TESTUPSTREAM_ID value: test readinessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 10 periodSeconds: 20 --- apiVersion: v1 kind: Service metadata: name: envoy-ai-gateway-basic-testupstream namespace: default spec: selector: app: envoy-ai-gateway-basic-testupstream ports: - protocol: TCP port: 80 targetPort: 8080 type: ClusterIP --- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: EnvoyProxy metadata: name: envoy-ai-gateway-basic namespace: default spec: provider: type: Kubernetes kubernetes: envoyDeployment: container: # Note: this is to clear the large default memory/cpu requirements for local tests. # In production, you should set these to values that make sense for your environment. resources: {}