Skip to content

Commit 9d904a2

Browse files
authored
Merge branch 'main' into kaito-090
2 parents 8a5c19e + 2d31f58 commit 9d904a2

139 files changed

Lines changed: 11333 additions & 1854 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/e2e-backend.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ jobs:
5050
5151
- name: Build and deploy KAITO provider
5252
run: |
53-
make kaito-provider-docker-build KAITO_PROVIDER_IMG=kaito-provider:e2e
53+
make -C providers/kaito docker-build IMG=kaito-provider:e2e
5454
kind load docker-image kaito-provider:e2e --name kubeairunway-backend-e2e
55-
make kaito-provider-deploy KAITO_PROVIDER_IMG=kaito-provider:e2e
55+
make -C providers/kaito deploy IMG=kaito-provider:e2e
5656
kubectl wait --for=condition=Available deployment -n kubeairunway-system -l control-plane=kaito-provider --timeout=120s
5757
5858
- name: Wait for provider registration

.github/workflows/e2e-controller.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ jobs:
4545
4646
- name: Build and deploy KAITO provider
4747
run: |
48-
make kaito-provider-docker-build KAITO_PROVIDER_IMG=kaito-provider:e2e
48+
make -C providers/kaito docker-build IMG=kaito-provider:e2e
4949
kind load docker-image kaito-provider:e2e --name kubeairunway-e2e
50-
make kaito-provider-deploy KAITO_PROVIDER_IMG=kaito-provider:e2e
50+
make -C providers/kaito deploy IMG=kaito-provider:e2e
5151
kubectl wait --for=condition=Available deployment -n kubeairunway-system -l control-plane=kaito-provider --timeout=120s
5252
5353
- name: Wait for provider registration

.github/workflows/e2e-gateway.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ jobs:
7171
7272
- name: Build and deploy KAITO provider
7373
run: |
74-
make kaito-provider-docker-build KAITO_PROVIDER_IMG=kaito-provider:e2e
74+
make -C providers/kaito docker-build IMG=kaito-provider:e2e
7575
kind load docker-image kaito-provider:e2e --name kubeairunway-gw-e2e
76-
make kaito-provider-deploy KAITO_PROVIDER_IMG=kaito-provider:e2e
76+
make -C providers/kaito deploy IMG=kaito-provider:e2e
7777
kubectl wait --for=condition=Available deployment -n kubeairunway-system -l control-plane=kaito-provider --timeout=120s
7878
7979
- name: Wait for provider registration

.github/workflows/release-llmd-provider.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
runs-on: ubuntu-latest
2424
steps:
2525
- name: Checkout repository
26-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
26+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
2727

2828
- name: Set up Docker Buildx
2929
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
@@ -36,7 +36,7 @@ jobs:
3636
password: ${{ secrets.GITHUB_TOKEN }}
3737

3838
- name: Build and push Docker image
39-
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6
39+
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
4040
with:
4141
context: .
4242
file: providers/llmd/Dockerfile

.github/workflows/release.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,3 +197,47 @@ jobs:
197197
GIT_COMMIT=${{ github.sha }}
198198
cache-from: type=gha
199199
cache-to: type=gha,mode=max
200+
201+
model-downloader-docker:
202+
name: Build and Push Model Downloader Docker Image
203+
runs-on: ubuntu-latest
204+
steps:
205+
- name: Checkout repository
206+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
207+
208+
- name: Set up QEMU
209+
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3
210+
211+
- name: Set up Docker Buildx
212+
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
213+
214+
- name: Log in to Container Registry
215+
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
216+
with:
217+
registry: ${{ env.REGISTRY }}
218+
username: ${{ github.actor }}
219+
password: ${{ secrets.GITHUB_TOKEN }}
220+
221+
- name: Extract metadata for Docker
222+
id: meta
223+
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
224+
with:
225+
images: ghcr.io/kaito-project/kubeairunway/model-downloader
226+
tags: |
227+
type=semver,pattern={{version}}
228+
type=semver,pattern={{major}}.{{minor}}
229+
type=semver,pattern={{major}}
230+
type=sha,prefix=
231+
type=raw,value=latest,enable=${{ !contains(github.ref, '-rc') && !contains(github.ref, '-beta') && !contains(github.ref, '-alpha') }}
232+
233+
- name: Build and push Docker image
234+
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
235+
with:
236+
context: images/model-downloader
237+
file: images/model-downloader/Dockerfile
238+
platforms: linux/amd64,linux/arm64
239+
push: true
240+
tags: ${{ steps.meta.outputs.tags }}
241+
labels: ${{ steps.meta.outputs.labels }}
242+
cache-from: type=gha
243+
cache-to: type=gha,mode=max

.github/workflows/test.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,19 @@ jobs:
6565

6666
- name: Check for manifest drift
6767
run: |
68-
if ! diff -u deploy/kubernetes/controller.yaml /tmp/controller.yaml; then
69-
echo "❌ deploy/kubernetes/controller.yaml is out of date."
68+
if ! diff -u deploy/controller.yaml /tmp/controller.yaml; then
69+
echo "❌ deploy/controller.yaml is out of date."
70+
echo "Run 'make generate-deploy-manifests' and commit the result."
71+
exit 1
72+
fi
73+
74+
- name: Generate dashboard manifest
75+
run: controller/bin/kustomize build backend/config/default > /tmp/dashboard.yaml
76+
77+
- name: Check for dashboard manifest drift
78+
run: |
79+
if ! diff -u deploy/dashboard.yaml /tmp/dashboard.yaml; then
80+
echo "❌ deploy/dashboard.yaml is out of date."
7081
echo "Run 'make generate-deploy-manifests' and commit the result."
7182
exit 1
7283
fi

CONTRIBUTING.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,13 @@ Providers are independent Go operators in `providers/<name>/`. See existing prov
170170
- Map provider resource status back to `ModelDeployment` status
171171
- Self-register an `InferenceProviderConfig` with capabilities, selection rules, and installation info
172172
173-
3. **Add Makefile targets** in the root `Makefile`:
173+
3. **Add a Makefile** in the provider directory (`providers/<name>/Makefile`):
174174
```bash
175-
make <name>-provider-build # Build provider binary
176-
make <name>-provider-docker-build # Build Docker image
177-
make <name>-provider-deploy # Deploy to cluster
175+
cd providers/<name>
176+
make build # Build provider binary
177+
make docker-build # Build Docker image
178+
make deploy # Deploy to cluster
179+
make generate-deploy-manifests # Generate deploy YAML
178180
```
179181

180182
## Adding a New Model

Makefile

Lines changed: 23 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
.PHONY: install dev dev-frontend dev-backend build compile lint test clean help
22
.PHONY: controller-build controller-docker-build controller-install controller-deploy controller-generate generate-deploy-manifests
3-
.PHONY: kaito-provider-build kaito-provider-docker-build kaito-provider-deploy
4-
.PHONY: dynamo-provider-build dynamo-provider-docker-build dynamo-provider-deploy
5-
.PHONY: kuberay-provider-build kuberay-provider-docker-build kuberay-provider-deploy
6-
.PHONY: llmd-provider-build llmd-provider-docker-build llmd-provider-deploy
3+
.PHONY: model-downloader-docker-build
74

85
# Controller image
96
CONTROLLER_IMG ?= ghcr.io/kaito-project/kubeairunway/controller:latest
107

8+
# Dashboard image
9+
DASHBOARD_IMG ?= ghcr.io/kaito-project/kubeairunway/dashboard:latest
10+
11+
# Model downloader image
12+
MODEL_DOWNLOADER_IMG ?= ghcr.io/kaito-project/kubeairunway/model-downloader:latest
13+
1114
# Gateway API Inference Extension version
1215
GAIE_VERSION ?= v1.3.1
1316

14-
# Provider images
15-
KAITO_PROVIDER_IMG ?= ghcr.io/kaito-project/kubeairunway/kaito-provider:latest
16-
DYNAMO_PROVIDER_IMG ?= ghcr.io/kaito-project/kubeairunway/dynamo-provider:latest
17-
KUBERAY_PROVIDER_IMG ?= ghcr.io/kaito-project/kubeairunway/kuberay-provider:latest
18-
LLMD_PROVIDER_IMG ?= ghcr.io/kaito-project/kubeairunway/llmd-provider:latest
19-
2017
# Default target
2118
help:
2219
@echo "KubeAIRunway Development Commands"
@@ -41,24 +38,11 @@ help:
4138
@echo "Controller Targets:"
4239
@echo " controller-build Build the Go controller binary"
4340
@echo " controller-docker-build Build controller Docker image"
41+
@echo " model-downloader-docker-build Build model downloader Docker image"
4442
@echo " controller-install Install CRDs into cluster"
4543
@echo " controller-deploy Deploy controller to cluster"
4644
@echo " controller-generate Generate CRD manifests and code"
47-
@echo " generate-deploy-manifests Generate deploy/kubernetes/controller.yaml"
48-
@echo ""
49-
@echo "Provider Targets:"
50-
@echo " kaito-provider-build Build the KAITO provider binary"
51-
@echo " kaito-provider-docker-build Build KAITO provider Docker image"
52-
@echo " kaito-provider-deploy Deploy KAITO provider to cluster"
53-
@echo " dynamo-provider-build Build the Dynamo provider binary"
54-
@echo " dynamo-provider-docker-build Build Dynamo provider Docker image"
55-
@echo " dynamo-provider-deploy Deploy Dynamo provider to cluster"
56-
@echo " kuberay-provider-build Build the KubeRay provider binary"
57-
@echo " kuberay-provider-docker-build Build KubeRay provider Docker image"
58-
@echo " kuberay-provider-deploy Deploy KubeRay provider to cluster"
59-
@echo " llmd-provider-build Build the llm-d provider binary"
60-
@echo " llmd-provider-docker-build Build llm-d provider Docker image"
61-
@echo " llmd-provider-deploy Deploy llm-d provider to cluster"
45+
@echo " generate-deploy-manifests Generate deploy/controller.yaml"
6246
@echo ""
6347
@echo " help Show this help message"
6448

@@ -171,75 +155,20 @@ controller-test:
171155
cd controller && go test ./... -coverprofile cover.out
172156
@echo "✅ Controller tests completed"
173157

174-
# Generate deploy manifests for controller
158+
# Generate deploy manifests for controller and dashboard
175159
generate-deploy-manifests:
176160
cd controller && $(MAKE) kustomize
177161
cd controller/config/manager && ../../bin/kustomize edit set image controller=$(CONTROLLER_IMG)
178-
cd controller && bin/kustomize build config/default > ../deploy/kubernetes/controller.yaml
179-
@echo "✅ Generated deploy/kubernetes/controller.yaml"
180-
181-
# ==================== Provider Targets ====================
182-
183-
# Build the KAITO provider binary
184-
kaito-provider-build:
185-
cd providers/kaito && go build -o bin/provider ./cmd/main.go
186-
@echo "✅ KAITO provider built"
187-
188-
# Build the Dynamo provider binary
189-
dynamo-provider-build:
190-
cd providers/dynamo && go build -o bin/provider ./cmd/main.go
191-
@echo "✅ Dynamo provider built"
192-
193-
# Build KAITO provider Docker image
194-
kaito-provider-docker-build:
195-
docker build -f providers/kaito/Dockerfile -t $(KAITO_PROVIDER_IMG) .
196-
@echo "✅ KAITO provider image built: $(KAITO_PROVIDER_IMG)"
197-
198-
# Build Dynamo provider Docker image
199-
dynamo-provider-docker-build:
200-
docker build -f providers/dynamo/Dockerfile -t $(DYNAMO_PROVIDER_IMG) .
201-
@echo "✅ Dynamo provider image built: $(DYNAMO_PROVIDER_IMG)"
202-
203-
# Deploy KAITO provider to the K8s cluster
204-
kaito-provider-deploy:
205-
cd providers/kaito/config/manager && kustomize edit set image IMAGE_PLACEHOLDER=$(KAITO_PROVIDER_IMG)
206-
kustomize build providers/kaito/config/default | kubectl apply -f -
207-
@echo "✅ KAITO provider deployed"
208-
209-
# Deploy Dynamo provider to the K8s cluster
210-
dynamo-provider-deploy:
211-
cd providers/dynamo/config/manager && kustomize edit set image IMAGE_PLACEHOLDER=$(DYNAMO_PROVIDER_IMG)
212-
kustomize build providers/dynamo/config/default | kubectl apply -f -
213-
@echo "✅ Dynamo provider deployed"
214-
215-
# Build KubeRay provider binary
216-
kuberay-provider-build:
217-
cd providers/kuberay && go build -o bin/provider ./cmd/main.go
218-
@echo "✅ KubeRay provider built"
219-
220-
# Build KubeRay provider Docker image
221-
kuberay-provider-docker-build:
222-
docker build -f providers/kuberay/Dockerfile -t $(KUBERAY_PROVIDER_IMG) .
223-
@echo "✅ KubeRay provider image built: $(KUBERAY_PROVIDER_IMG)"
224-
225-
# Deploy KubeRay provider to the K8s cluster
226-
kuberay-provider-deploy:
227-
cd providers/kuberay/config/manager && kustomize edit set image IMAGE_PLACEHOLDER=$(KUBERAY_PROVIDER_IMG)
228-
kustomize build providers/kuberay/config/default | kubectl apply -f -
229-
@echo "✅ KubeRay provider deployed"
230-
231-
# Build the llm-d provider binary
232-
llmd-provider-build:
233-
cd providers/llmd && go build -o bin/provider ./cmd/main.go
234-
@echo "✅ llm-d provider built"
235-
236-
# Build llm-d provider Docker image
237-
llmd-provider-docker-build:
238-
docker build --platform linux/amd64 -f providers/llmd/Dockerfile -t $(LLMD_PROVIDER_IMG) .
239-
@echo "✅ llm-d provider image built: $(LLMD_PROVIDER_IMG)"
240-
241-
# Deploy llm-d provider to the K8s cluster
242-
llmd-provider-deploy:
243-
cd providers/llmd/config/manager && kustomize edit set image IMAGE_PLACEHOLDER=$(LLMD_PROVIDER_IMG)
244-
kustomize build providers/llmd/config/default | kubectl apply -f -
245-
@echo "✅ llm-d provider deployed"
162+
cd controller && bin/kustomize build config/default > ../deploy/controller.yaml
163+
@echo "✅ Generated deploy/controller.yaml"
164+
cd backend/config/manager && ../../../controller/bin/kustomize edit set image IMAGE_PLACEHOLDER=$(DASHBOARD_IMG)
165+
controller/bin/kustomize build backend/config/default > deploy/dashboard.yaml
166+
@git checkout backend/config/manager/kustomization.yaml 2>/dev/null || true
167+
@echo "✅ Generated deploy/dashboard.yaml"
168+
169+
# ==================== Model Downloader Targets ====================
170+
171+
# Build model downloader Docker image
172+
model-downloader-docker-build:
173+
docker build -f images/model-downloader/Dockerfile -t $(MODEL_DOWNLOADER_IMG) images/model-downloader
174+
@echo "✅ Model downloader image built: $(MODEL_DOWNLOADER_IMG)"

README.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ KubeAIRunway gives you a web UI and a unified Kubernetes CRD (`ModelDeployment`)
2121

2222
## Supported Providers
2323

24-
| Provider | Description |
25-
| --- | --- |
26-
| [**NVIDIA Dynamo**](https://github.com/ai-dynamo/dynamo) | GPU-accelerated inference with aggregated or disaggregated serving |
27-
| [**KubeRay**](https://github.com/ray-project/kuberay) | Ray-based distributed inference |
28-
| [**KAITO**](https://github.com/kaito-project/kaito) | vLLM (GPU) and llama.cpp (CPU/GPU) support |
29-
| [**LLM-D**](https://github.com/llm-d/llm-d) | vLLM (GPU) with aggregated or disaggregated serving |
24+
| Provider | Description | Provider Shim |
25+
| -------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------- |
26+
| [**NVIDIA Dynamo**](https://github.com/ai-dynamo/dynamo) | GPU-accelerated inference with aggregated or disaggregated serving | [dynamo.yaml](providers/dynamo/deploy/dynamo.yaml) |
27+
| [**KubeRay**](https://github.com/ray-project/kuberay) | Ray-based distributed inference | [kuberay.yaml](providers/kuberay/deploy/kuberay.yaml) |
28+
| [**KAITO**](https://github.com/kaito-project/kaito) | vLLM (GPU) and llama.cpp (CPU/GPU) support | [kaito.yaml](providers/kaito/deploy/kaito.yaml) |
29+
| [**LLM-D**](https://github.com/llm-d/llm-d) | vLLM (GPU) with aggregated or disaggregated serving | [llmd.yaml](providers/llmd/deploy/llmd.yaml) |
3030

3131
## Quick Start
3232

@@ -52,21 +52,22 @@ Open **http://localhost:3001**
5252

5353
```bash
5454
# Install CRDs and controller (required)
55-
kubectl apply -f https://raw.githubusercontent.com/kaito-project/kubeairunway/main/deploy/kubernetes/controller.yaml
55+
kubectl apply -f https://raw.githubusercontent.com/kaito-project/kubeairunway/main/deploy/controller.yaml
5656

5757
# Install dashboard UI (optional)
58-
kubectl apply -f https://raw.githubusercontent.com/kaito-project/kubeairunway/main/deploy/kubernetes/dashboard.yaml
58+
kubectl apply -f https://raw.githubusercontent.com/kaito-project/kubeairunway/main/deploy/dashboard.yaml
5959
kubectl port-forward -n kubeairunway-system svc/kubeairunway 3001:80
6060
```
6161

62-
Open **http://localhost:3001** — see [deployment docs](deploy/kubernetes/README.md) for more options.
62+
Open **http://localhost:3001** — see [deployment docs](deploy/README.md) for more options.
6363

6464
### Getting Started
6565

66-
1. **Install a provider** — Go to the Installation page and install your preferred provider via Helm
67-
2. **Connect HuggingFace** — Sign in via Settings → HuggingFace (required for gated models)
68-
3. **Deploy a model** — Browse the catalog, pick a model, configure, and deploy
69-
4. **Monitor** — Track status, stream logs, and view metrics on the Deployments page
66+
1. **Install a provider shim** — Apply one or more provider shims to register providers with KubeAIRunway. See [Supported Providers](#supported-providers) for available options.
67+
2. **Install the provider** — Go to the Installation page and install the upstream provider via Helm
68+
3. **Connect HuggingFace** — Sign in via Settings → HuggingFace (optional for non-gated models)
69+
4. **Deploy a model** — Browse the catalog, pick a model, configure, and deploy
70+
5. **Monitor** — Track status, stream logs, and view metrics on the Deployments page
7071

7172
### Access Your Model
7273

@@ -102,7 +103,7 @@ The controller automatically selects the best engine and provider, creates provi
102103
| Providers | [docs/providers.md](docs/providers.md) |
103104
| Observability | [docs/observability.md](docs/observability.md) |
104105
| Development | [docs/development.md](docs/development.md) |
105-
| Kubernetes Deployment | [deploy/kubernetes/README.md](deploy/kubernetes/README.md) |
106+
| Kubernetes Deployment | [deploy/README.md](deploy/README.md) |
106107
| Gateway Integration | [docs/gateway.md](docs/gateway.md) |
107108
| Headlamp Plugin | [docs/headlamp-plugin.md](docs/headlamp-plugin.md) |
108109
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
resources:
2+
- ../rbac
3+
- ../manager
4+
transformers:
5+
- namespace-transformer.yaml

0 commit comments

Comments
 (0)