nebari-dev / nebari-dev/llm-serving-pack
Default EPP image ghcr.io/llm-d/llm-d-inference-scheduler:v0.8.0 no longer exists
Nobody has claimed this yet.
- 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-pickerandsingle-profile-handlerare 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-groupsupports onlyinference.networking.k8s.io/v1, which is what the operator creates. x-gateway-destination-endpointis unchanged. EPP metrics were renamed tollm_d_epp_*; check any dashboards we ship.- The config
apiVersionthe operator renders,inference.networking.x-k8s.io/v1alpha1, is accepted but logsDEPRECATION ... 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
- Change both defaults to
ghcr.io/llm-d/llm-d-router-endpoint-picker:v0.9.0. - Change
eppDefaultConfigapiVersiontollm-d.ai/v1alpha1. - Update the comment on
defaults.epp.image(it still says "llm-d-inference-scheduler" and "same llm-d v0.7.0 release"). - Add a CI job that does an anonymous manifest HEAD against every image default in
values.yamlso a renamed upstream package fails a build instead of a customer pull.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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