Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .github/workflows/integration-test-k8s.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ on:
jobs:
integration-test:
runs-on: ubuntu-latest
timeout-minutes: 60
timeout-minutes: 75
strategy:
fail-fast: false # Continue testing other profiles even if one fails
matrix:
profile: [ai-gateway, aibrix, routing-strategies]
profile: [ai-gateway, aibrix, routing-strategies, llm-d]

steps:
- name: Check out the repo
Expand Down Expand Up @@ -165,4 +165,3 @@ jobs:
if: always()
run: |
make e2e-cleanup || true

2 changes: 1 addition & 1 deletion e2e/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ The framework follows a **separation of concerns** design:
- **aibrix**: Tests Semantic Router with vLLM AIBrix integration
- **istio**: Tests Semantic Router with Istio Gateway (future)
- **production-stack**: Tests vLLM Production Stack configurations (future)
- **llm-d**: Tests with LLM-D (future)
- **llm-d**: Tests Semantic Router with LLM-D distributed inference
- **dynamo**: Tests with Nvidia Dynamo (future)

## Directory Structure
Expand Down
4 changes: 4 additions & 0 deletions e2e/cmd/e2e/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ import (
aigateway "github.com/vllm-project/semantic-router/e2e/profiles/ai-gateway"
aibrix "github.com/vllm-project/semantic-router/e2e/profiles/aibrix"
dynamicconfig "github.com/vllm-project/semantic-router/e2e/profiles/dynamic-config"
llmd "github.com/vllm-project/semantic-router/e2e/profiles/llm-d"
routingstrategies "github.com/vllm-project/semantic-router/e2e/profiles/routing-strategies"

// Import profiles to register test cases
_ "github.com/vllm-project/semantic-router/e2e/profiles/ai-gateway"
_ "github.com/vllm-project/semantic-router/e2e/profiles/aibrix"
_ "github.com/vllm-project/semantic-router/e2e/profiles/llm-d"
_ "github.com/vllm-project/semantic-router/e2e/profiles/routing-strategies"
)

Expand Down Expand Up @@ -105,6 +107,8 @@ func getProfile(name string) (framework.Profile, error) {
return dynamicconfig.NewProfile(), nil
case "aibrix":
return aibrix.NewProfile(), nil
case "llm-d":
return llmd.NewProfile(), nil
case "routing-strategies":
return routingstrategies.NewProfile(), nil
// Add more profiles here as they are implemented
Expand Down
51 changes: 51 additions & 0 deletions e2e/profiles/llm-d/manifests/httproute-services.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: vsr-llama8b-svc
namespace: default
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: inference-gateway
rules:
- backendRefs:
- group: inference.networking.k8s.io
kind: InferencePool
name: vllm-llama3-8b-instruct
matches:
- path:
type: PathPrefix
value: /
headers:
- type: Exact
name: x-selected-model
value: llama3-8b
timeouts:
request: 300s
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: vsr-phi4-mini-svc
namespace: default
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: inference-gateway
rules:
- backendRefs:
- group: inference.networking.k8s.io
kind: InferencePool
name: vllm-phi4-mini
matches:
- path:
type: PathPrefix
value: /
headers:
- type: Exact
name: x-selected-model
value: phi4-mini
timeouts:
request: 300s
101 changes: 101 additions & 0 deletions e2e/profiles/llm-d/manifests/inference-sim.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: vllm-llama3-8b-instruct
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: vllm-llama3-8b-instruct
template:
metadata:
labels:
app: vllm-llama3-8b-instruct
spec:
containers:
- name: sim
image: ghcr.io/llm-d/llm-d-inference-sim:v0.6.1
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
args:
- --model
- llama3-8b
- --port
- "8000"
ports:
- containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
name: vllm-llama3-8b-instruct
namespace: default
labels:
app: vllm-llama3-8b-instruct
spec:
type: ClusterIP
selector:
app: vllm-llama3-8b-instruct
ports:
- port: 8000
targetPort: 8000
protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: phi4-mini
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: phi4-mini
template:
metadata:
labels:
app: phi4-mini
spec:
containers:
- name: sim
image: ghcr.io/llm-d/llm-d-inference-sim:v0.6.1
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
args:
- --model
- phi4-mini
- --port
- "8000"
ports:
- containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
name: phi4-mini
namespace: default
labels:
app: phi4-mini
spec:
type: ClusterIP
selector:
app: phi4-mini
ports:
- port: 8000
targetPort: 8000
protocol: TCP
27 changes: 27 additions & 0 deletions e2e/profiles/llm-d/manifests/rbac.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: llmd-epp-access
rules:
- apiGroups: ["inference.networking.k8s.io", "inference.networking.x-k8s.io"]
resources: ["inferencepools", "inferenceobjectives"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: llmd-epp-access-binding
subjects:
- kind: ServiceAccount
name: vllm-llama3-8b-instruct-epp
namespace: default
- kind: ServiceAccount
name: vllm-phi4-mini-epp
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: llmd-epp-access
Loading
Loading