Skip to content

fix(controller): drop invalid --enable-metrics flag from vLLM runtime - #1031

Merged
Defilan merged 1 commit into
defilantech:mainfrom
Defilan:fix/vllm-enable-metrics
Jul 9, 2026
Merged

Defilan merged 1 commit into
defilantech:mainfrom
Defilan:fix/vllm-enable-metrics

Conversation

@Defilan

@Defilan Defilan commented Jul 9, 2026

Copy link
Copy Markdown
Member

What

Remove the --enable-metrics flag from the vLLM runtime's generated server arguments, and flip the unit test to assert the flag is absent.

Why

--enable-metrics is 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 vLLM InferenceService pod crashes on startup:

vllm: error: unrecognized arguments: --enable-metrics

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-metrics element from BuildArgs; 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 the ContainElement("--enable-metrics") assertion with NotTo(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 TestControllers focused on the vLLM BuildArgs specs: Ran 1 of 522 Specs, 1 Passed.

Checklist

  • Root cause identified and fixed at the source (not the symptom)
  • Unit test updated to guard against regression
  • No change to metrics behavior (/metrics still exposed and scraped)
  • DCO sign-off

Fixes #1030


Assisted-by: Claude Code (Opus 4.8); reviewed and verified by the author.

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>
@codecov

codecov Bot commented Jul 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@Defilan
Defilan merged commit 9b9450d into defilantech:main Jul 9, 2026
23 checks passed
@github-actions github-actions Bot mentioned this pull request Jul 9, 2026
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 ([#&#8203;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) ([#&#8203;1017](defilantech/LLMKube#1017)) ([aa969ed](defilantech/LLMKube@aa969ed))
- **foreman:** distinct ALREADY-RESOLVED coder outcome ([#&#8203;970](defilantech/LLMKube#970)) ([#&#8203;1011](defilantech/LLMKube#1011)) ([8e041e0](defilantech/LLMKube@8e041e0))
- **foreman:** flag a GO that changes no functional production code ([#&#8203;1024](defilantech/LLMKube#1024)) ([3e1a6fb](defilantech/LLMKube@3e1a6fb))
- **foreman:** MCP client for agents (Phase 1: HTTP transport, context7) ([#&#8203;1014](defilantech/LLMKube#1014)) ([d34343f](defilantech/LLMKube@d34343f))
- **foreman:** semantic issueAsk verification instead of verbatim substring ([#&#8203;1020](defilantech/LLMKube#1020)) ([85d92ee](defilantech/LLMKube@85d92ee))
- **foreman:** str\_replace escalates to write\_file after repeated failures ([#&#8203;1026](defilantech/LLMKube#1026)) ([de1b8cb](defilantech/LLMKube@de1b8cb))

##### Bug Fixes

- **foreman:** exempt REJECT from grounded-finding demotion ([#&#8203;1008](defilantech/LLMKube#1008)) ([18098cb](defilantech/LLMKube@18098cb))
- **foreman:** gate Job downloads the go.mod toolchain (GOTOOLCHAIN=auto) ([#&#8203;1019](defilantech/LLMKube#1019)) ([5f4c51c](defilantech/LLMKube@5f4c51c))
- **foreman:** guard file-less findings + resolve bare/absolute paths in grounding rail ([#&#8203;1009](defilantech/LLMKube#1009)) ([304a2b8](defilantech/LLMKube@304a2b8))
- **foreman:** reap audit ConfigMaps older than retention ([#&#8203;990](defilantech/LLMKube#990)) ([#&#8203;1027](defilantech/LLMKube#1027)) ([08d06d6](defilantech/LLMKube@08d06d6))
- **foreman:** reviewer diffs against the upstream base, not stale local fork main ([#&#8203;1006](defilantech/LLMKube#1006)) ([6ef7278](defilantech/LLMKube@6ef7278))
- **metrics:** remove dead metrics + phantom PrometheusRule error-rate rule ([#&#8203;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 ([#&#8203;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) ([#&#8203;1017](defilantech/LLMKube#1017)) ([aa969ed](defilantech/LLMKube@aa969ed))
- **foreman:** distinct ALREADY-RESOLVED coder outcome ([#&#8203;970](defilantech/LLMKube#970)) ([#&#8203;1011](defilantech/LLMKube#1011)) ([8e041e0](defilantech/LLMKube@8e041e0))
- **foreman:** flag a GO that changes no functional production code ([#&#8203;1024](defilantech/LLMKube#1024)) ([3e1a6fb](defilantech/LLMKube@3e1a6fb))
- **foreman:** MCP client for agents (Phase 1: HTTP transport, context7) ([#&#8203;1014](defilantech/LLMKube#1014)) ([d34343f](defilantech/LLMKube@d34343f))
- **foreman:** semantic issueAsk verification instead of verbatim substring ([#&#8203;1020](defilantech/LLMKube#1020)) ([85d92ee](defilantech/LLMKube@85d92ee))
- **foreman:** str\_replace escalates to write\_file after repeated failures ([#&#8203;1026](defilantech/LLMKube#1026)) ([de1b8cb](defilantech/LLMKube@de1b8cb))

##### Bug Fixes

- **foreman:** exempt REJECT from grounded-finding demotion ([#&#8203;1008](defilantech/LLMKube#1008)) ([18098cb](defilantech/LLMKube@18098cb))
- **foreman:** gate Job downloads the go.mod toolchain (GOTOOLCHAIN=auto) ([#&#8203;1019](defilantech/LLMKube#1019)) ([5f4c51c](defilantech/LLMKube@5f4c51c))
- **foreman:** guard file-less findings + resolve bare/absolute paths in grounding rail ([#&#8203;1009](defilantech/LLMKube#1009)) ([304a2b8](defilantech/LLMKube@304a2b8))
- **foreman:** reap audit ConfigMaps older than retention ([#&#8203;990](defilantech/LLMKube#990)) ([#&#8203;1027](defilantech/LLMKube#1027)) ([08d06d6](defilantech/LLMKube@08d06d6))
- **foreman:** reviewer diffs against the upstream base, not stale local fork main ([#&#8203;1006](defilantech/LLMKube#1006)) ([6ef7278](defilantech/LLMKube@6ef7278))
- **metrics:** remove dead metrics + phantom PrometheusRule error-rate rule ([#&#8203;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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] vllm runtime does not start (unrecognized arguments: --enable-metrics)

1 participant