diff --git a/deploy/helm/llm-request-router/llm-request-router/Chart.yaml b/deploy/helm/llm-request-router/llm-request-router/Chart.yaml index fcaaec07b..ea72fd567 100644 --- a/deploy/helm/llm-request-router/llm-request-router/Chart.yaml +++ b/deploy/helm/llm-request-router/llm-request-router/Chart.yaml @@ -18,4 +18,4 @@ name: helm-nvcf-llm-request-router description: Helm chart for the NVCF LLM Request Router backed by Stargate type: application version: 0.0.0 # managed by semantic-release -appVersion: "0.14.1" # match the versioned stargate image tag +appVersion: "0.14.2" # match the versioned stargate image tag diff --git a/deploy/helm/llm-request-router/llm-request-router/values.yaml b/deploy/helm/llm-request-router/llm-request-router/values.yaml index f34e56ba2..9a6dbd920 100644 --- a/deploy/helm/llm-request-router/llm-request-router/values.yaml +++ b/deploy/helm/llm-request-router/llm-request-router/values.yaml @@ -43,7 +43,7 @@ llmRequestRouter: image: registry: "" repository: "" - tag: "0.14.1" + tag: "0.14.2" pullPolicy: IfNotPresent imagePullSecrets: [] diff --git a/deploy/helm/llm-request-router/scripts/check-backend-router-render.sh b/deploy/helm/llm-request-router/scripts/check-backend-router-render.sh index 8972d7c9e..eb2cb50a1 100755 --- a/deploy/helm/llm-request-router/scripts/check-backend-router-render.sh +++ b/deploy/helm/llm-request-router/scripts/check-backend-router-render.sh @@ -303,9 +303,9 @@ if ! grep -Fq -- "serviceAccountName: external-backend-router" "$external_servic fi assert_backend_router_role_binding_subject "$external_service_account" "external-backend-router" -assert_zero_config_contains "image: registry.example.invalid/nvcf/stargate:0.14.1" \ +assert_zero_config_contains "image: registry.example.invalid/nvcf/stargate:0.14.2" \ "backend router must inherit the released Stargate image with no router image configuration" -assert_zero_config_contains 'app.kubernetes.io/version: "0.14.1"' \ +assert_zero_config_contains 'app.kubernetes.io/version: "0.14.2"' \ "backend router labels must identify the inherited Stargate image version" helm template llm-request-router "$chart_dir" \ diff --git a/deploy/stacks/self-managed/tests/llm-router-local-chart.sh b/deploy/stacks/self-managed/tests/llm-router-local-chart.sh index fb1da8104..c8ea3c47a 100755 --- a/deploy/stacks/self-managed/tests/llm-router-local-chart.sh +++ b/deploy/stacks/self-managed/tests/llm-router-local-chart.sh @@ -5,6 +5,7 @@ stack_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" chart_path="../../../helm/llm-request-router/llm-request-router" work_dir="$(mktemp -d)" values_file="$work_dir/llm-request-router-values.yaml" +local_manifest="$work_dir/llm-request-router.yaml" stateful_values_file="$work_dir/llm-request-router-stateful-values.yaml" trap 'rm -rf "$work_dir"' EXIT @@ -49,6 +50,40 @@ test "$backend_repository" = "$main_repository" || { exit 1 } +main_tag="$(yq -r '.llmRequestRouter.image.tag // ""' "$values_file")" +test -z "$main_tag" || { + echo "llm-router-local-chart: expected main router tag to inherit the chart default, got $main_tag" >&2 + exit 1 +} + +backend_tag="$(yq -r '.llmRequestRouter.backendRouter.image.tag // ""' "$values_file")" +test -z "$backend_tag" || { + echo "llm-router-local-chart: expected backend router tag to inherit the chart default, got $backend_tag" >&2 + exit 1 +} + +helm template llm-request-router "$stack_dir/../../helm/llm-request-router/llm-request-router" \ + --namespace nvcf \ + --values "$values_file" >"$local_manifest" + +main_registry="$(yq -r '.llmRequestRouter.image.registry' "$values_file")" +expected_stargate_image="${main_registry:+${main_registry}/}${main_repository}:0.14.2" +main_image="$(yq ea -r \ + 'select(.kind == "Deployment" and .metadata.name == "llm-request-router" and .metadata.namespace == "nvcf") | .spec.template.spec.containers[0].image' \ + "$local_manifest")" +test "$main_image" = "$expected_stargate_image" || { + echo "llm-router-local-chart: expected main router image $expected_stargate_image, got ${main_image:-missing}" >&2 + exit 1 +} + +backend_image="$(yq ea -r \ + 'select(.kind == "Deployment" and .metadata.name == "llm-request-router-backend-router" and .metadata.namespace == "nvcf") | .spec.template.spec.containers[] | select(.name == "backend-router") | .image' \ + "$local_manifest")" +test "$backend_image" = "$expected_stargate_image" || { + echo "llm-router-local-chart: expected backend router image $expected_stargate_image, got ${backend_image:-missing}" >&2 + exit 1 +} + default_workload_kind="$(yq -r '.llmRequestRouter.workload.kind' "$values_file")" test "$default_workload_kind" = "Deployment" || { echo "llm-router-local-chart: expected default workload kind Deployment, got ${default_workload_kind:-missing}" >&2 diff --git a/docs/user/manifest.md b/docs/user/manifest.md index ebc69e488..514ad457d 100644 --- a/docs/user/manifest.md +++ b/docs/user/manifest.md @@ -184,7 +184,7 @@ The following tables list the complete artifact inventory. | `cert-manager-webhook` | `v1.20.2` | Required | Validates and converts cert-manager API resources. | `nvcr.io/nvidia/nvcf/cert-manager-webhook:v1.20.2` | [Upstream](https://github.com/cert-manager/cert-manager) | | `ess-api` | `v0.57.26` | Required | Provides encrypted application secrets to NVCF workloads. | `nvcr.io/nvidia/nvcf/ess-api:v0.57.26` | | | `llm-api-gateway` | `0.8.3` | Optional | Exposes OpenAI-compatible APIs for LLM functions. | `nvcr.io/0833294136851237/selfhosted-ga/llm-api-gateway:0.8.3-ea` | [GitHub](https://github.com/NVIDIA/nvcf/tree/main/src/invocation-plane-services/llm-api-gateway) | -| `llm-request-router` | `0.14.1` | Optional | Routes LLM requests to eligible worker instances. | `nvcr.io/nvidia/nvcf/stargate:0.14.1` | [GitHub](https://github.com/NVIDIA/nvcf/tree/main/src/libraries/rust/stargate) | +| `llm-request-router` | `0.14.2` | Optional | Routes LLM requests to eligible worker instances. | `nvcr.io/nvidia/nvcf/stargate:0.14.2` | [GitHub](https://github.com/NVIDIA/nvcf/tree/main/src/libraries/rust/stargate) | | `nats-box` | `0.19.7-nonroot` | Required | Provides NATS administration and diagnostic utilities. | `nvcr.io/nvidia/nvcf/nats-box:0.19.7-nonroot` | [Upstream](https://github.com/nats-io/nats-box) | | `nats-server` | `2.11.17-alpine3.22` | Required | Provides messaging for function deployment and invocation. | `nvcr.io/nvidia/nvcf/nats-server:2.11.17-alpine3.22` | [Upstream](https://github.com/nats-io/nats-server) | | `nats-server-config-reloader` | `0.23.0` | Required | Reloads NATS server configuration when mounted settings change. | `docker.io/natsio/nats-server-config-reloader:0.23.0` | [Upstream](https://github.com/nats-io/k8s) | diff --git a/docs/version-catalog/main.yaml b/docs/version-catalog/main.yaml index 1a836fb7b..6e8497d22 100644 --- a/docs/version-catalog/main.yaml +++ b/docs/version-catalog/main.yaml @@ -128,7 +128,7 @@ publications: published_version: 0.8.3-ea registry: selfhosted-ga - name: llm-request-router - version: 0.14.1 + version: 0.14.2 registry: public-images - name: nats-server-config-reloader version: 0.23.0 @@ -971,7 +971,7 @@ supplemental_artifacts: type: image registry: staging repository_name: stargate - version: 0.14.1 + version: 0.14.2 - name: nvcf-ai-api-gateway-service type: image registry: staging