Installation
What's Changed
- choir: fix missing markers by @Jooho in #4793
- fix: update base image for PMML to use eclipse-temurin JDK by @sivanantha321 in #4794
- add suffix kserve for helm chart of llmisvc by @Jooho in #4792
- Parallelize blob downloads from azure in storage-initializer by @agoston in #4709
- Parallelize blob downloads from S3 in storage-initializer by @agoston in #4714
- chore: bump k8s package versions to v0.34.0 by @murataslan in #4713
- Prevent path traversal on https.go by @spolti in #4796
- Refactor existing script to use centralized installation scripts by @Jooho in #4787
- fix: CI failure caused by deprecated MinIO image by @Jooho in #4812
- feat: Add a python script to generate quick install script by @Jooho in #4806
- fix generator to be executable without cloning repo by @Jooho in #4813
- Fixing LLMISVC CRD Installation Paths by @brettmthompson in #4811
- feat: Add pathTemplate configuration for inference service routing by @DeepFlame-JR in #4817
- helmchart: add image pull policy for serving runtimes by @stergem in #4814
- fix: multiple storage uri volume mount error by @sivanantha321 in #4822
- Fix Bug in LLMISVC E2E Test Setup by @brettmthompson in #4841
- fix: Fix various bugs in quickstart scripts by @JonahSussman in #4832
- Pin starlette to version 0.49.1 to fix CVE-2025-62727 by @hdefazio in #4846
- fix(llmisvc): adds missing generated clients by @bartoszmajsak in #4849
- Change security mailing list email address by @terrytangyuan in #4853
- Allow stopping LLMInferenceService by @pierDipi in #4839
- Add cjohannsen-cloudera as a reviewer by @terrytangyuan in #4854
- update go version to 1.25 and kubebuilder version to 1.9.0 by @Jooho in #4862
- fix: remove cert-manager annotation in inferenceservice crd by @juhyeon-cha in #4837
- update kserve version and update helm chart name by @Jooho in #4860
- fix: Address CVE-2025-22872, CVE-2025-47914, CVE-2025-58181 by @sivanantha321 in #4866
- Add Support For Protocol in S3 Endpoint by @brettmthompson in #4797
- fix: llmisvc image patch script to use renamed manager yaml file by @sivanantha321 in #4820
- fix make deploy target in makefile by @Jooho in #4872
- ci: add manual trigger for helm publish workflow by @sivanantha321 in #4873
- docs: Update KServe diagram to use the KubeCon NA version by @terrytangyuan in #4877
- CVE-2024-43598: Update lightgbm version to 4.6.0 by @sivanantha321 in #4799
- fix: the quick install scripts temporarily. by @Jooho in #4880
- mock test for ray by @Jooho in #4885
- fix: synced kserve-helm.sh and kserve-kustomize.sh by @Jooho in #4891
- fix: update LWS version to 0.7.0 to fix multi-node E2E test failure by @vivekk16 in #4892
- OCI model storage is not working with multi-node feature by @spolti in #4889
- Follow up 4787 by @Jooho in #4810
- Fix CI precommit error by @andyi2it in #4897
- fix: clear stale router and scheduler conditions on config changes by @vivekk16 in #4876
- feat: bump up vllm version to 0.11.2 & remove python 3.9 support by @csy1204 in #4851
- Remove deprecated --disable-log-requests flag for vLLM 0.11 compatibility by @vivekk16 in #4883
- Improved CA Bundle Management For LLM Inference Services by @brettmthompson in #4803
- ci: split KServe and Storage publish workflow into separate jobs by @sivanantha321 in #4801
- chore: Add .gitattributes to mark vendored and generated code by @terrytangyuan in #4904
- ci: add retry request for e2e tests to reduce transient failures by @sivanantha321 in #4795
- Address several CVEs by @spolti in #4912
- fix: make deploy-dev for development env by @Jooho in #4881
- Add precommit check to sync golangci Go version with go.mod by @Jooho in #4930
- refactor: replace bash script with Python and improve generate-version by @Jooho in #4935
- Fix: opentelemetry helm installation script by @Jooho in #4932
- chore: bump github.com/kedacore/keda/v2 from 2.16.1 to 2.17.3 by @jlost in #4927
- CVE-2025-66418 - Unbounded number of links in the decompression chain by @spolti in #4928
- Fix: LLMInferenceService reconciliation for Gateway refs in baseRefs by @vivekk16 in #4944
- Fix: use correct image tag in LLMISvc E2E workflow by @pierDipi in #4948
- refactor: deduplicate test configs with helper functions by @Jooho in #4952
- Fix CVE-2025-68156: Update expr-lang/expr to v1.17.7 by @mholder6 in #4934
- Separate LocalModelCache webhook from KServe controller. by @Jooho in #4941
- Bump Gateway API Inference Extension (GIE) to v1.2.0 by @sbekkerm in #4886
- feat: add automatic modelFormat annotation for InferenceServices by @Jooho in #4953
- AIOHTTP's HTTP Parser auto_decompress feature is vulnerable to zip bomb by @spolti in #4939
- ci: PR style check by @sivanantha321 in #4499
- add openvino model server runtime by @dtrawins in #4592
- feat: add enqueueOnHttpRouteChange handler by @vivekk16 in #4955
- feat: add LLMInferenceService CRD webhook + E2E tests by @KillianGolds in #4967
- fix: watch pod init container status changes by @jlost in #4910
- ci: centralize image variables by @Jooho in #4969
- refactor: restructure manifests with component-based by @Jooho in #4962
- feat: add predictive inference server runtime by @Jooho in #4954
- feat: add predictiveserver runtime build/publish gitaction by @Jooho in #4974
- fix: path traversal vulnerability in extractTarFiles by @sivanantha321 in #4975
- feat: allow llmisvc scheduler config using a CM or inline by @pierDipi in #4856
- fix: add the (default) zmq port 5557 to scheduler by @pierDipi in #4964
- feat: add predictiveserver runtime e2e test by @Jooho in #4973
- fix: use existing serviceAccount when specified by @cyon13 in #4913
- fix: makefile target 'deploy-dev' by @Jooho in #4993
- docs: add contributor graph to README by @terrytangyuan in #4991
- fix: update envoy ai gateway installation script by @Jooho in #4978
- refactor: interface + factory pattern for reconcilers by @rajatvig in #4922
- fix: update precise prefix routing example by @pierDipi in #5004
- feat: llmisvc preserves externally managed replicas by @pierDipi in #4996
- rm
cleanHeadSvcfrom service reconciler by @cjackal in #4758 - fix: removed GIE crd from llmisvc kustomzation/Makefile by @Jooho in #4997
- fix: resolve flaky TestServerTimeout race condition by @jlost in #5001
- feat: update llmisvc e2e test environment script by @Jooho in #4999
- refactor: add prefix 'kserve' for llmisvc role by @Jooho in #4992
- feat: added git download support to storage initializer by @agoston in #4966
- feat: replace minio with seaweedfs by @Jooho in #5014
- ci: Add charts/kserve-llmisvc-resources to workflow paths by @terrytangyuan in #5027
- fix: llmisvc ClusterRoleBinding to point to new ClusterRole by @pierDipi in #5022
- fix: yq download issue & resolving pseudo-versions by @Jooho in #5023
- feat(llmisvc): inferencePool auto-migration by @KillianGolds in #5007
- feat: make LLMInferenceService storageInitializer optional by @cabrinha in #4970
- fix(build): enforce local yq installation by @bartoszmajsak in #5046
- fix(build): remove GOPATH dependency from OpenAPI script by @bartoszmajsak in #5045
- chore: migrate flake to ruff by @moulin-louis in #4981
- feat(llmisvc): move vLLM args to command field by @KillianGolds in #5049
- chore(pytest): replaces deprecated get_event_loop by @bartoszmajsak in #5066
- fix: h11 accepts malformed bodies - CVE-2025-43859 by @sivanantha321 in #5040
- fix: incl. port 8080 in status.address.url for headless svcs by @jlost in #4998
- fix: improve storage-initializer error messages by @mwaykole in #5016
- fix: make Uvicorn event loop configurable by @joshyjoseph in #4971
- feat(llmisvc): watch pods for init container failures by @jlost in #5034
- fix: normalize deprec. deploymentMode annos; allow deletion by @jlost in #5025
- chore: add pierdipi to reviewers by @pierDipi in #5081
- fix: avoid storage-initializer rollout on operator upgrade by @bartoszmajsak in #5085
- feat: route only completions through InferencePool by @bartoszmajsak in #5087
- feat(llmisvc): listener hostname fallback for URL discovery by @bartoszmajsak in #5079
- fix(llmisvc): allow custom gateway with managed route by @bartoszmajsak in #5075
- refactor(llmisvc): centralize test namespace management by @bartoszmajsak in #5077
- fix(llmisvc): readiness logic for multiple ctrl statuses by @bartoszmajsak in #5055
- test: remove blanket sleeps from E2E test utilities by @bartoszmajsak in #5071
- fix: broken go tests by @sivanantha321 in #5091
- fix(build): upgrade golangci-lint to v2.9.0 by @bartoszmajsak in #5072
- feat: 5024 - Upgrade to Gateway API v1.4.0 by @cjohannsen-cloudera in #5038
- fix(llmisvc): use server state for Delete owner verification by @bartoszmajsak in #5088
- chore(scripts): makes script worktree-friendly by @bartoszmajsak in #5069
- fix(inferenceservice): skip VS if Istio CRD missing by @Siva-Sainath in #4985
- fix(localmodel): use ObjectOld in node update predicate by @tmvfb in #5095
- feat(llmisvc): propagate Prometheus annotations to workloads by @bartoszmajsak in #5086
- chore: change 'owners' to 'project-leads' in OWNERS file by @terrytangyuan in #5100
- feat: llmisvc supports scaling and HA for scheduler by @pierDipi in #5032
- feat: faster parallel S3 file downloads by @bluayer in #5102
- feat(llmisvc): add DNS/IP SAN & renewal to self-signed certs by @bartoszmajsak in #5099
- feat: inf. log batching, external marshalling support by @cjohannsen-cloudera in #5061
- feat(llmisvc): add versioned well-known config resolution by @bartoszmajsak in #5096
- fix(llmisvc): return nil instead of empty InferencePoolSpec by @bartoszmajsak in #5108
- fix(llmisvc): handle JSON marshal error in ReplaceVariables by @bartoszmajsak in #5109
- chore: update OWNERS file by @terrytangyuan in #5112
- fix(llmisvc): restricts GlobalConfig fields for templates by @bartoszmajsak in #5111
- fix(llmisvc): return error from selectListener on mismatch by @bartoszmajsak in #5105
- feat: include all required files to installation script by @Jooho in #5103
- fix: surface failure conditions in InferenceService status by @houshengbo in #5114
- fix(llmisvc): unblocks certificate renewal by @bartoszmajsak in #5106
- feat: new env var INFERENCE_SERVICE_NAME by @dkoder20 in #5013
- fix: skip validation for empty modelcar fields by @bartoszmajsak in #5083
- fix: add no-cache option for generate-versions-from-gomod.py by @Jooho in #5123
- fix(llmisvc): preserve SchedulerConfigSpec conversion by @bartoszmajsak in #5110
- feat(llmisvc): add startupProbe to vLLM containers by @KillianGolds in #5063
- feat: allow storage init to download only selected files by @pierDipi in #5119
- feat: add schedulerName field to ServingRuntimePodSpec by @Jooho in #5073
- fix(isvc): preserve reason/message on true conditions by @Siva-Sainath in #5129
- ci: add workflow to check if tests are passed before merge by @sivanantha321 in #5092
- ci: bump k8s & minikube version by @sivanantha321 in #5125
- feat: make agent container resources configurable by @samuelkim7 in #5127
- feat: add annotation-based runtime defaults for MLServer by @Jooho in #5064
- feat: upgrade VLLM open source version to 0.15.1 by @cjohannsen-cloudera in #5098
- test: harden patch-update E2E tests by @bartoszmajsak in #5065
- feat: restructure helm charts and the way how to patch by @Jooho in #5089
- feat(llmisvc): enhance Gateway API URL discovery by @bartoszmajsak in #5104
- fix: resolve CVE-2026-26007 cryptography subgroup attack by @spolti in #5151
- feat(llmisvc): enable label/annotation propagation by @khushiiagrawal in #5009
- fix: generate OpenAPI and Python SDK models for v1alpha2 LLMISVC by @bartoszmajsak in #5152
- feat(llmisvc): add autoscaling API with WVA support by @vivekk16 in #5130
- docs: Mention vLLM and llm-d in README by @terrytangyuan in #5160
- fix: respect user logging config in kserve (#3919) by @KageRyo in #4687
- fix(llmisvc): change TLS cert mount path to avoid CA bundle conflict by @bartoszmajsak in #5157
- feat: preserves scheduler config and restart on cert rotation by @bartoszmajsak in #5084
- test: automatic envtest cleanup and suite alignment by @bartoszmajsak in #5068
- feat: 5235 update knative-serving to v1.21.1 by @cjohannsen-cloudera in #5136
- fix: cve-2026-24486: python-multipart arbitrary file write by @spolti in #5170
- fix: uv dead lock issue between kserve and kserve-storage by @Jooho in #5176
- fix: update manifests for release by @Jooho in #5177
- feat: improve KServe release automation and simplify workflow by @Jooho in #5184
- release: prepare release v0.17.0-rc0 by @Jooho in #5185
- fix: skip _folder to package helm chart (#5186) by @Jooho in #5189
- refactor: change kserve chart name to kserve-resources (#5190) by @Jooho in #5192
New Contributors
- @agoston made their first contribution in #4709
- @murataslan made their first contribution in #4713
- @DeepFlame-JR made their first contribution in #4817
- @stergem made their first contribution in #4814
- @JonahSussman made their first contribution in #4832
- @juhyeon-cha made their first contribution in #4837
- @csy1204 made their first contribution in #4851
- @jlost made their first contribution in #4927
- @sbekkerm made their first contribution in #4886
- @dtrawins made their first contribution in #4592
- @KillianGolds made their first contribution in #4967
- @cyon13 made their first contribution in #4913
- @cjackal made their first contribution in #4758
- @cabrinha made their first contribution in #4970
- @moulin-louis made their first contribution in #4981
- @joshyjoseph made their first contribution in #4971
- @Siva-Sainath made their first contribution in #4985
- @bluayer made their first contribution in #5102
- @dkoder20 made their first contribution in #5013
- @khushiiagrawal made their first contribution in #5009
- @KageRyo made their first contribution in #4687
Full Changelog: v0.16.0...v0.17.0