Fixed
- (deps) Update module github.com/giantswarm/mcp-oauth to v1.4.10 in #1345 by @renovate[bot]
Full Changelog: https://github.com/giantswarm/muster/compare/v5.32.10...v5.32.11
Full Changelog: https://github.com/giantswarm/muster/compare/v5.32.10...v5.32.11
Full Changelog: https://github.com/giantswarm/agent-platform/compare/v4.91.0...v4.92.0
muster agent --mcp-server exposed only authenticate_muster whenever its access token had expired at start, although a refresh token was stored and muster auth status read the session as authenticated with weeks of auto-refresh left; a client on top of the bridge (platformctl, any MCP client using call_tool) failed with tool 'call_tool' not found until another muster command happened to refresh the token. The bridge now connects with the stored refresh token and the transport refreshes it on the first request; only a refresh the server refuses falls back to authenticate_muster. A refresh also keeps the ID token it returns: mcp-go’s token type has no field for it, so every refresh stored the new access token next to the old ID token, and muster auth status told the person to log in again. An expired ID token next to a refresh token now reads expired … ago (auto-refresh). (#1298)agentgateway.inferenceExtension.enabled: true: the models Gateway resolves InferencePool backends (giantswarm/agent-platform#504; epic giantswarm/giantswarm#37639). An LLMInferenceService composed with the llm-d endpoint picker (a preset’s spec.router.scheduler: true) routes its /v1/* rules to an InferencePool. The platform’s agentgateway ran with the chart’s default inferenceExtension.enabled: false, so the route stayed ResolvedRefs=False BackendNotFound and the model never became Ready. The controller now runs with AGW_ENABLE_INFER_EXT and read access to inferencepools and their status, on the installation and on a workload cluster’s slice alike. Without the InferencePool CRD (no serving slice on the cluster) it waits for the CRD and routes everything else as before. Every installation rolls the agentgateway controller once (a new environment variable and two Role rules). The data plane and the routes are unchanged.modelServing.fastLinks: the nodes joined by a fast link (RDMA), published as the discovery ConfigMap’s spec.fastLinks (giantswarm/model-manager#190). model-manager splits one model across the nodes of one fast link — one vLLM instance, tensor parallel over the link — and refuses a split across nodes without one; the portal recommends the split where a fast link hosts the model. Per entry: name, nodes (two or more), the networks every pod of a split joins (NetworkAttachmentDefinition names), the extra resources it requests (the RDMA device plugin’s) and the env that points NCCL at the link’s devices. Empty, the default, renders no key: the discovery document of an installation without fast links is unchanged. With a fast link declared, a split’s leader and workers — the pods of a LeaderWorkerSet — reach each other on every port (network policy <release>-model-serving-multi-node); a single-node model pod does not. make verify-fast-links.model-serving-fast-links (giantswarm/giantswarm#37941). model-manager 1.4.2 runs a split’s leader and workers with the single-node model pod’s security context (giantswarm/model-manager#193): no IPC_LOCK, SYS_RAWIO or NET_RAW, and NCCL over the fast link needs none of them. Nothing requests the capabilities any more, so no pod may add them. make verify-fast-links fails if the exception renders.components.kserve-llmisvc-crd, components.kserve-llmisvc-resources and components.kserve-runtime-configs move to 0.7.x (giantswarm/kserve#101, #102). The kserve-runtime-configs: block passes kserve.llmisvcConfigs.rolloutStrategy: {maxSurge: 0, maxUnavailable: 1}. The controller merges it from the single-node presets into every LLMInferenceService, so a predictor’s roll stops the old pod before it starts the new one. A model that fills its GPU could never start the surge pod, and its roll never finished. The runtime stays llm-d-cuda:v0.8.0 (vLLM 0.23.0): the block pins the main image of the six GPU presets (kserve.llmisvcConfigs.images), since the 0.7.x presets name llm-d v0.9.0, whose vLLM 0.26.0 cannot load Gemma 4 (gemma-4-31b crash-loops on head_dim is a per-layer attribute). The presets’ v0.10.0 routers come with the charts. make verify-serving-slice holds the pinned image equal to the pre-pulled one.spec.router.scheduler: a serving preset switches the llm-d endpoint picker for itself (giantswarm/agent-platform#507; epic giantswarm/giantswarm#37639). model-manager composes an LLMInferenceService without the picker unless the backend document’s spec.kserve.router.scheduler says otherwise, and reads a preset’s own spec.router.scheduler (true or false) over it. The preset schema now admits spec.router with scheduler alone, and the render refuses any other key under spec.router and a non-boolean scheduler, naming the preset. A preset that switches the picker on needs the Gateway API Inference Extension on the models Gateway (#504). No shipped preset sets it; the default render is unchanged. make verify-serving-slice publishes a values preset with router.scheduler: true unchanged and fails the render on the other shapes.app.kubernetes.io/component (llminferenceservice-workload[-prefill], -leader, -worker) and app.kubernetes.io/part-of: llminferenceservice instead of kserve.io/component: workload, which a LeaderWorkerSet’s workers do not carry; model-serving-predictors also covers the StatefulSets of a LeaderWorkerSet.substrate.images.awsCli is gsoci.azurecr.io/giantswarm/aws-cli:2.17.0 (same digest) and components.substrate{,-crds}.versionRange is >=1.1.2 <1.2.0 (giantswarm/agent-platform#580). The Substrate line’s 1.1.2 runs its rustfs-bucket-init Job as a Helm hook, recreated on every install and upgrade (giantswarm/substrate#85), so the Job’s image can change without the upgrade failing on its immutable pod template. make verify-images carries no pending entry any more, and make verify-substrate-images tolerates no key. The upgrade deletes the old Job, and the hook Job runs from gsoci and is removed once it succeeds. The kagent WorkerPool’s worker image follows the floor to ateom-gvisor:1.1.2.Full Changelog: https://github.com/giantswarm/muster/compare/v5.32.8...v5.32.9