Repository navigation
fix(controller): drop invalid --enable-metrics flag from vLLM runtime - #1031
Merged
Merged
Conversation
vLLM has no --enable-metrics flag; its OpenAI server always exposes Prometheus metrics at /metrics. Emitting the flag makes vLLM's argument parser reject the whole command, so every vLLM InferenceService pod fails to start with 'unrecognized arguments: --enable-metrics'. Remove it; the PodMonitor already scrapes /metrics unconditionally. The prior unit test asserted the bad flag was present, so the suite stayed green while the runtime was broken. Flip it to assert the flag is absent so the regression cannot return. Fixes defilantech#1030 Signed-off-by: Christopher Maher <chris@mahercode.io>
2 of 15 tasks
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Merged
eleboucher
pushed a commit
to eleboucher/homelab
that referenced
this pull request
Jul 10, 2026
…1 ➔ 0.9.3) (#1489) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/defilantech/charts/llmkube](https://github.com/defilantech/LLMKube) | patch | `0.9.1` → `0.9.3` | --- ### Release Notes <details> <summary>defilantech/LLMKube (ghcr.io/defilantech/charts/llmkube)</summary> ### [`v0.9.3`](https://github.com/defilantech/LLMKube/blob/HEAD/CHANGELOG.md#093-2026-07-09) [Compare Source](defilantech/LLMKube@v0.9.2...v0.9.3) ##### Bug Fixes - **controller:** drop invalid --enable-metrics flag from vLLM runtime ([#​1031](defilantech/LLMKube#1031)) ([9b9450d](defilantech/LLMKube@9b9450d)) ### [`v0.9.2`](https://github.com/defilantech/LLMKube/blob/HEAD/CHANGELOG.md#092-2026-07-09) [Compare Source](defilantech/LLMKube@v0.9.1...v0.9.2) ##### Features - **foreman:** coder grounding rail (flag doc-contradicting metric writes) ([#​1017](defilantech/LLMKube#1017)) ([aa969ed](defilantech/LLMKube@aa969ed)) - **foreman:** distinct ALREADY-RESOLVED coder outcome ([#​970](defilantech/LLMKube#970)) ([#​1011](defilantech/LLMKube#1011)) ([8e041e0](defilantech/LLMKube@8e041e0)) - **foreman:** flag a GO that changes no functional production code ([#​1024](defilantech/LLMKube#1024)) ([3e1a6fb](defilantech/LLMKube@3e1a6fb)) - **foreman:** MCP client for agents (Phase 1: HTTP transport, context7) ([#​1014](defilantech/LLMKube#1014)) ([d34343f](defilantech/LLMKube@d34343f)) - **foreman:** semantic issueAsk verification instead of verbatim substring ([#​1020](defilantech/LLMKube#1020)) ([85d92ee](defilantech/LLMKube@85d92ee)) - **foreman:** str\_replace escalates to write\_file after repeated failures ([#​1026](defilantech/LLMKube#1026)) ([de1b8cb](defilantech/LLMKube@de1b8cb)) ##### Bug Fixes - **foreman:** exempt REJECT from grounded-finding demotion ([#​1008](defilantech/LLMKube#1008)) ([18098cb](defilantech/LLMKube@18098cb)) - **foreman:** gate Job downloads the go.mod toolchain (GOTOOLCHAIN=auto) ([#​1019](defilantech/LLMKube#1019)) ([5f4c51c](defilantech/LLMKube@5f4c51c)) - **foreman:** guard file-less findings + resolve bare/absolute paths in grounding rail ([#​1009](defilantech/LLMKube#1009)) ([304a2b8](defilantech/LLMKube@304a2b8)) - **foreman:** reap audit ConfigMaps older than retention ([#​990](defilantech/LLMKube#990)) ([#​1027](defilantech/LLMKube#1027)) ([08d06d6](defilantech/LLMKube@08d06d6)) - **foreman:** reviewer diffs against the upstream base, not stale local fork main ([#​1006](defilantech/LLMKube#1006)) ([6ef7278](defilantech/LLMKube@6ef7278)) - **metrics:** remove dead metrics + phantom PrometheusRule error-rate rule ([#​1010](defilantech/LLMKube#1010)) ([7c92f3f](defilantech/LLMKube@7c92f3f)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1489
doonga
pushed a commit
to greyrock-labs/home-ops
that referenced
this pull request
Jul 10, 2026
…mkube (0.9.1 ➔ 0.9.3) (#497) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/home-operations/charts-mirror/llmkube](https://github.com/defilantech/LLMKube) | patch | `0.9.1` → `0.9.3` | --- ### Release Notes <details> <summary>defilantech/LLMKube (ghcr.io/home-operations/charts-mirror/llmkube)</summary> ### [`v0.9.3`](https://github.com/defilantech/LLMKube/blob/HEAD/CHANGELOG.md#093-2026-07-09) [Compare Source](defilantech/LLMKube@v0.9.2...v0.9.3) ##### Bug Fixes - **controller:** drop invalid --enable-metrics flag from vLLM runtime ([#​1031](defilantech/LLMKube#1031)) ([9b9450d](defilantech/LLMKube@9b9450d)) ### [`v0.9.2`](https://github.com/defilantech/LLMKube/blob/HEAD/CHANGELOG.md#092-2026-07-09) [Compare Source](defilantech/LLMKube@v0.9.1...v0.9.2) ##### Features - **foreman:** coder grounding rail (flag doc-contradicting metric writes) ([#​1017](defilantech/LLMKube#1017)) ([aa969ed](defilantech/LLMKube@aa969ed)) - **foreman:** distinct ALREADY-RESOLVED coder outcome ([#​970](defilantech/LLMKube#970)) ([#​1011](defilantech/LLMKube#1011)) ([8e041e0](defilantech/LLMKube@8e041e0)) - **foreman:** flag a GO that changes no functional production code ([#​1024](defilantech/LLMKube#1024)) ([3e1a6fb](defilantech/LLMKube@3e1a6fb)) - **foreman:** MCP client for agents (Phase 1: HTTP transport, context7) ([#​1014](defilantech/LLMKube#1014)) ([d34343f](defilantech/LLMKube@d34343f)) - **foreman:** semantic issueAsk verification instead of verbatim substring ([#​1020](defilantech/LLMKube#1020)) ([85d92ee](defilantech/LLMKube@85d92ee)) - **foreman:** str\_replace escalates to write\_file after repeated failures ([#​1026](defilantech/LLMKube#1026)) ([de1b8cb](defilantech/LLMKube@de1b8cb)) ##### Bug Fixes - **foreman:** exempt REJECT from grounded-finding demotion ([#​1008](defilantech/LLMKube#1008)) ([18098cb](defilantech/LLMKube@18098cb)) - **foreman:** gate Job downloads the go.mod toolchain (GOTOOLCHAIN=auto) ([#​1019](defilantech/LLMKube#1019)) ([5f4c51c](defilantech/LLMKube@5f4c51c)) - **foreman:** guard file-less findings + resolve bare/absolute paths in grounding rail ([#​1009](defilantech/LLMKube#1009)) ([304a2b8](defilantech/LLMKube@304a2b8)) - **foreman:** reap audit ConfigMaps older than retention ([#​990](defilantech/LLMKube#990)) ([#​1027](defilantech/LLMKube#1027)) ([08d06d6](defilantech/LLMKube@08d06d6)) - **foreman:** reviewer diffs against the upstream base, not stale local fork main ([#​1006](defilantech/LLMKube#1006)) ([6ef7278](defilantech/LLMKube@6ef7278)) - **metrics:** remove dead metrics + phantom PrometheusRule error-rate rule ([#​1010](defilantech/LLMKube#1010)) ([7c92f3f](defilantech/LLMKube@7c92f3f)) </details> --- ### Configuration 📅 **Schedule**: (in timezone America/New_York) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI1Mi4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.greyrock.io/greyrock-labs/home-ops/pulls/497
8 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Remove the
--enable-metricsflag from the vLLM runtime's generated server arguments, and flip the unit test to assert the flag is absent.Why
--enable-metricsis not a valid vLLM flag. vLLM's OpenAI server always exposes Prometheus metrics at/metrics, so there is nothing to enable. Passing the flag makes vLLM's argument parser reject the whole command, so every vLLMInferenceServicepod crashes on startup:Reported in #1030 (thanks @kaechele) against v0.9.2 on K3s/A10. The flag was introduced in #769 on the assumption vLLM had a llama.cpp-style metrics toggle; it does not. The existing unit test asserted the bad flag was present, so the suite stayed green while the runtime was broken end to end (a "test asserts implementation, not behavior" case, cf. #378).
How
internal/controller/runtime_vllm.go: drop the--enable-metricselement fromBuildArgs; add a NOTE explaining why the flag must not come back. Metrics are unaffected: the PodMonitor already scrapes/metrics, which vLLM serves by default.internal/controller/inferenceservice_deployment_test.go: replace theContainElement("--enable-metrics")assertion withNotTo(ContainElement("--enable-metrics"))and update the arg count (HaveLen(6)->HaveLen(5)), so the regression cannot silently return.Testing
go build ./...clean.go test ./internal/controller/ -run TestControllersfocused on the vLLMBuildArgsspecs:Ran 1 of 522 Specs, 1 Passed.Checklist
/metricsstill exposed and scraped)Fixes #1030
Assisted-by: Claude Code (Opus 4.8); reviewed and verified by the author.