nebari-dev / nebari-dev/llm-serving-pack

Default EPP image ghcr.io/llm-d/llm-d-inference-scheduler:v0.8.0 no longer exists

Open
#174 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type: bug 🐛
Dominant language
Go
Stars
3
Forks
3
Avg merge
16h 31m
Merged PRs (30d)
11

Description

Problem

charts/nebari-llm-serving/values.yaml (defaults.epp.image) and operator/internal/config/config.go (LLM_DEFAULT_EPP_IMAGE fallback) both default to ghcr.io/llm-d/llm-d-inference-scheduler:v0.8.0. That package is gone: llm-d renamed https://github.com/llm-d/llm-d-inference-scheduler to https://github.com/llm-d/llm-d-router, the EPP image to ghcr.io/llm-d/llm-d-router-endpoint-picker (see EPP_IMAGE_NAME in its Makefile), and removed the old GHCR package. Anonymous pulls return 403 DENIED. Every fresh install and every EPP pod reschedule now fails with ImagePullBackOff.

There is no v0.8.0 tag under the new name. Public tags are v0.9.0, v0.10.0 and their rcs.

Observed in production on 2026-08-21; one customer EPP pod has been in ImagePullBackOff since, and the surviving pod cannot be rescheduled. Worked around in https://github.com/Concepts-NREC/Nebari-GitOps/pull/86 by setting defaults.epp.image.

Compatibility check done against v0.9.0

The operator's rendered config (eppDefaultConfig in operator/internal/controller/reconcilers/inferencepool.go) and container args were checked against llm-d-router v0.9.0:

  • max-score-picker and single-profile-handler are registered under the same names (cmd/epp/runner/runner.go).
  • All flags the operator passes exist; gRPC health is still served on --grpc-health-port.
  • Built against Gateway API Inference Extension v1.5.0; --pool-group supports only inference.networking.k8s.io/v1, which is what the operator creates.
  • x-gateway-destination-endpoint is unchanged. EPP metrics were renamed to llm_d_epp_*; check any dashboards we ship.
  • The config apiVersion the operator renders, inference.networking.x-k8s.io/v1alpha1, is accepted but logs DEPRECATION ... replacement llm-d.ai/v1alpha1/EndpointPickerConfig (pkg/epp/config/loader/configloader.go). v0.10.0 still accepts it; do not count on later releases doing so.

Note v0.9.0 forked the whole EPP runtime into llm-d-router (v0.8.0 was a thin wrapper over the upstream GIE runner). The surface we use is unchanged, but it is a real upgrade, not a patch.

Fix

  1. Change both defaults to ghcr.io/llm-d/llm-d-router-endpoint-picker:v0.9.0.
  2. Change eppDefaultConfig apiVersion to llm-d.ai/v1alpha1.
  3. Update the comment on defaults.epp.image (it still says "llm-d-inference-scheduler" and "same llm-d v0.7.0 release").
  4. Add a CI job that does an anonymous manifest HEAD against every image default in values.yaml so a renamed upstream package fails a build instead of a customer pull.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Inspect charts/nebari-llm-serving/values.yaml and operator/internal/config/config.go, then trace eppDefaultConfig in operator/internal/controller/reconcilers/inferencepool.go. Verify the v0.9.0 image and llm-d.ai/v1alpha1 configuration against the documented router compatibility, and add the requested anonymous manifest check for image defaults. Done means both defaults, the comment, the API version, and the CI coverage are updated.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, helm, kubernetes
Domain
ci-cd, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.