release: prepare release v0.19.0 (#5654)

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
This commit is contained in:
Copilot
2026-06-11 13:12:12 -04:00
committed by GitHub
co-authored by copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
parent 13c2ea0ad7
commit 17c5efae1e
88 changed files with 458338 additions and 124 deletions
+1 -1
View File
@@ -112,7 +112,7 @@ The specific values override/extend common values when keys overlap.
```yaml
# charts/_common/common-sections.yaml
kserve:
version: v0.19.0-rc0
version: v0.19.0
newCommonField: value # Add here
agent:
image: kserve/agent
+1 -1
View File
@@ -1,5 +1,5 @@
kserve:
version: v0.19.0-rc0
version: v0.19.0
createSharedResources: true
inferenceServiceConfig:
enabled: ''
+2 -2
View File
@@ -1,7 +1,7 @@
apiVersion: v2
name: kserve-crd-minimal
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
description: Helm chart for deploying minimal kserve crds without validation
type: application
keywords:
+2 -2
View File
@@ -2,12 +2,12 @@
Helm chart for deploying minimal kserve crds without validation
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
## Installing the Chart
To install the chart, run the following:
```console
$ helm install kserve-crd-minimal oci://ghcr.io/kserve/charts/kserve-crd-minimal --version v0.19.0-rc0
$ helm install kserve-crd-minimal oci://ghcr.io/kserve/charts/kserve-crd-minimal --version v0.19.0
```
+2 -2
View File
@@ -1,7 +1,7 @@
apiVersion: v2
name: kserve-crd
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
description: Helm chart for deploying kserve crds
type: application
keywords:
+2 -2
View File
@@ -2,12 +2,12 @@
Helm chart for deploying kserve crds
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
## Installing the Chart
To install the chart, run the following:
```console
$ helm install kserve-crd oci://ghcr.io/kserve/charts/kserve-crd --version v0.19.0-rc0
$ helm install kserve-crd oci://ghcr.io/kserve/charts/kserve-crd --version v0.19.0
```
+2 -2
View File
@@ -1,7 +1,7 @@
apiVersion: v2
name: kserve-llmisvc-crd-minimal
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
description: Helm chart for deploying LLMInferenceService minimal crds
type: application
keywords:
+2 -2
View File
@@ -2,12 +2,12 @@
Helm chart for deploying LLMInferenceService minimal crds
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
## Installing the Chart
To install the chart, run the following:
```console
$ helm install kserve-llmisvc-crd-minimal oci://ghcr.io/kserve/charts/kserve-llmisvc-crd-minimal --version v0.19.0-rc0
$ helm install kserve-llmisvc-crd-minimal oci://ghcr.io/kserve/charts/kserve-llmisvc-crd-minimal --version v0.19.0
```
+2 -2
View File
@@ -1,7 +1,7 @@
apiVersion: v2
name: kserve-llmisvc-crd
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
description: Helm chart for deploying LLMInferenceService crds
type: application
keywords:
+2 -2
View File
@@ -2,12 +2,12 @@
Helm chart for deploying LLMInferenceService crds
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
## Installing the Chart
To install the chart, run the following:
```console
$ helm install kserve-llmisvc-crd oci://ghcr.io/kserve/charts/kserve-llmisvc-crd --version v0.19.0-rc0
$ helm install kserve-llmisvc-crd oci://ghcr.io/kserve/charts/kserve-llmisvc-crd --version v0.19.0
```
+2 -2
View File
@@ -1,7 +1,7 @@
apiVersion: v2
name: kserve-llmisvc-resources
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
description: Helm chart for deploying KServe LLMInferenceService resources
type: application
keywords:
+3 -3
View File
@@ -1,6 +1,6 @@
# kserve-llmisvc-resources
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
Helm chart for deploying KServe LLMInferenceService resources
@@ -11,7 +11,7 @@ Helm chart for deploying KServe LLMInferenceService resources
To install the chart, run the following:
```console
$ helm install kserve-llmisvc-resources oci://ghcr.io/kserve/charts/kserve-llmisvc-resources --version v0.19.0-rc0
$ helm install kserve-llmisvc-resources oci://ghcr.io/kserve/charts/kserve-llmisvc-resources --version v0.19.0
```
## Maintainers
@@ -178,4 +178,4 @@ $ helm install kserve-llmisvc-resources oci://ghcr.io/kserve/charts/kserve-llmis
| kserve.storage.tag | string | `""` | |
| kserve.storage.uidModelcar | int | `1010` | |
| kserve.storagecontainer.enabled | string | `""` | |
| kserve.version | string | `"v0.19.0-rc0"` | |
| kserve.version | string | `"v0.19.0"` | |
+1 -1
View File
@@ -1,5 +1,5 @@
kserve:
version: v0.19.0-rc0
version: v0.19.0
createSharedResources: true
inferenceServiceConfig:
enabled: ''
@@ -1,7 +1,7 @@
apiVersion: v2
name: kserve-localmodel-crd-minimal
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
description: Helm chart for deploying LocalModel CRDs (minimal version)
type: application
keywords:
@@ -1,6 +1,6 @@
# kserve-localmodel-crd-minimal
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
Helm chart for deploying LocalModel CRDs (minimal version)
+2 -2
View File
@@ -1,7 +1,7 @@
apiVersion: v2
name: kserve-localmodel-crd
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
description: Helm chart for deploying LocalModel CRDs
type: application
keywords:
+2 -2
View File
@@ -2,12 +2,12 @@
Helm chart for deploying LocalModel CRDs
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
## Installing the Chart
To install the chart, run the following:
```console
$ helm install kserve-localmodel-crd oci://ghcr.io/kserve/charts/kserve-localmodel-crd --version v0.19.0-rc0
$ helm install kserve-localmodel-crd oci://ghcr.io/kserve/charts/kserve-localmodel-crd --version v0.19.0
```
@@ -2,8 +2,8 @@ apiVersion: v2
name: kserve-localmodel-resources
description: KServe LocalModel - Local Model Storage and Caching for Edge and On-Premise Deployments
type: application
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
keywords:
- kserve
- localmodel
+3 -3
View File
@@ -1,6 +1,6 @@
# kserve-localmodel-resources
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
KServe LocalModel - Local Model Storage and Caching for Edge and On-Premise Deployments
@@ -11,7 +11,7 @@ KServe LocalModel - Local Model Storage and Caching for Edge and On-Premise Depl
To install the chart, run the following:
```console
$ helm install kserve-localmodel-resources oci://ghcr.io/kserve/charts/kserve-localmodel-resources --version v0.19.0-rc0
$ helm install kserve-localmodel-resources oci://ghcr.io/kserve/charts/kserve-localmodel-resources --version v0.19.0
```
## Maintainers
@@ -118,4 +118,4 @@ $ helm install kserve-localmodel-resources oci://ghcr.io/kserve/charts/kserve-lo
| kserve.storage.tag | string | `""` | |
| kserve.storage.uidModelcar | int | `1010` | |
| kserve.storagecontainer.enabled | string | `""` | |
| kserve.version | string | `"v0.19.0-rc0"` | |
| kserve.version | string | `"v0.19.0"` | |
@@ -1,5 +1,5 @@
kserve:
version: v0.19.0-rc0
version: v0.19.0
createSharedResources: true
inferenceServiceConfig:
enabled: ''
+2 -2
View File
@@ -1,7 +1,7 @@
apiVersion: v2
name: kserve-resources
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
description: Helm chart for deploying kserve resources
type: application
keywords:
+3 -3
View File
@@ -2,14 +2,14 @@
Helm chart for deploying kserve resources
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
## Installing the Chart
To install the chart, run the following:
```console
$ helm install kserve-resources oci://ghcr.io/kserve/charts/kserve-resources --version v0.19.0-rc0
$ helm install kserve-resources oci://ghcr.io/kserve/charts/kserve-resources --version v0.19.0
```
## Values
@@ -146,4 +146,4 @@ $ helm install kserve-resources oci://ghcr.io/kserve/charts/kserve-resources --v
| kserve.storage.tag | string | `""` | |
| kserve.storage.uidModelcar | int | `1010` | |
| kserve.storagecontainer.enabled | string | `""` | |
| kserve.version | string | `"v0.19.0-rc0"` | |
| kserve.version | string | `"v0.19.0"` | |
+1 -1
View File
@@ -1,5 +1,5 @@
kserve:
version: v0.19.0-rc0
version: v0.19.0
createSharedResources: true
inferenceServiceConfig:
enabled: ''
+2 -2
View File
@@ -2,8 +2,8 @@ apiVersion: v2
name: kserve-runtime-configs
description: KServe Runtime Configurations - ClusterServingRuntimes and LLM Inference Configs
type: application
version: v0.19.0-rc0
appVersion: v0.19.0-rc0
version: v0.19.0
appVersion: v0.19.0
keywords:
- kserve
- clusterservingruntime
+3 -3
View File
@@ -1,6 +1,6 @@
# kserve-runtime-configs
![Version: v0.19.0-rc0](https://img.shields.io/badge/Version-v0.19.0--rc0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0-rc0](https://img.shields.io/badge/AppVersion-v0.19.0--rc0-informational?style=flat-square)
![Version: v0.19.0](https://img.shields.io/badge/Version-v0.19.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.19.0](https://img.shields.io/badge/AppVersion-v0.19.0-informational?style=flat-square)
KServe Runtime Configurations - ClusterServingRuntimes and LLM Inference Configs
@@ -11,7 +11,7 @@ KServe Runtime Configurations - ClusterServingRuntimes and LLM Inference Configs
To install the chart, run the following:
```console
$ helm install kserve-runtime-configs oci://ghcr.io/kserve/charts/kserve-runtime-configs --set kserve.servingruntime.enabled=true --set kserve.llmisvcConfigs.enabled=true --version v0.19.0-rc0
$ helm install kserve-runtime-configs oci://ghcr.io/kserve/charts/kserve-runtime-configs --set kserve.servingruntime.enabled=true --set kserve.llmisvcConfigs.enabled=true --version v0.19.0
```
## Maintainers
@@ -164,4 +164,4 @@ $ helm install kserve-runtime-configs oci://ghcr.io/kserve/charts/kserve-runtime
| kserve.servingruntime.xgbserver.securityContext.privileged | bool | `false` | |
| kserve.servingruntime.xgbserver.securityContext.runAsNonRoot | bool | `true` | |
| kserve.servingruntime.xgbserver.tag | string | `""` | |
| kserve.version | string | `"v0.19.0-rc0"` | |
| kserve.version | string | `"v0.19.0"` | |
+1 -1
View File
@@ -1,5 +1,5 @@
kserve:
version: v0.19.0-rc0
version: v0.19.0
llmisvcConfigs:
enabled: false
servingruntime:
@@ -1,6 +1,6 @@
[project]
name = "alibiexplainer"
version = "0.19.0rc0"
version = "0.19.0"
description = "Model Explanation Server. Not intended for use outside KServe Frameworks Images."
readme = "README.md"
requires-python = ">=3.10,<=3.12"
+1 -1
View File
@@ -1595,7 +1595,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0rc1"
version = "0.19.0rc1"
source = { editable = "../../../../../python/kserve" }
dependencies = [
{ name = "aiohttp" },
+1
View File
@@ -80,6 +80,7 @@ RELEASES=(
"v0.18.0-rc1"
"v0.18.0"
"v0.19.0-rc0"
"v0.19.0"
)
TAG=$1
+1 -1
View File
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
+1 -1
View File
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
+1 -1
View File
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
@@ -652,7 +652,7 @@ KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
+1047
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+894
View File
@@ -0,0 +1,894 @@
#!/bin/bash
# Copyright 2025 The KServe Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Install KServe Standard Mode/LLMIsvc dependencies
#
# AUTO-GENERATED from: kserve-standard-mode-dependency-install.definition
# DO NOT EDIT MANUALLY
#
# To regenerate:
# ./scripts/generate-install-script.py kserve-standard-mode-dependency-install.definition
#
# Usage: kserve-standard-mode-dependency-install.sh [--reinstall|--uninstall]
set -o errexit
set -o nounset
set -o pipefail
#================================================
# Helper Functions (from common.sh)
#================================================
# Utility Functions
# ============================================================================
find_repo_root() {
local current_dir="${1:-$(pwd)}"
local skip="${2:-false}"
while [[ "$current_dir" != "/" ]]; do
if [[ -e "${current_dir}/.git" ]]; then
echo "$current_dir"
return 0
fi
current_dir="$(dirname "$current_dir")"
done
# Git repository not found
if [[ "$skip" == "true" ]]; then
log_warning "Could not find git repository root, using current directory: $PWD"
echo "$PWD"
return 0
else
log_error "Could not find git repository root"
exit 1
fi
}
ensure_dir() {
local dir_path="${1}"
if [[ -d "${dir_path}" ]]; then
return 0
fi
mkdir -p "${dir_path}"
}
detect_os() {
local os=""
case "$(uname -s)" in
Linux*) os="linux" ;;
Darwin*) os="darwin" ;;
*) log_error "Unsupported OS detected: $(uname -s)" ; exit 1 ;;
esac
echo "$os"
}
detect_arch() {
local arch=""
case "$(uname -m)" in
x86_64) arch="amd64" ;;
aarch64|arm64) arch="arm64" ;;
*) log_error "Unsupported architecture detected: $(uname -m)" ; exit 1 ;;
esac
echo "$arch"
}
cleanup_bin_dir() {
# Remove BIN_DIR if it was created by this script
if [[ "${BIN_DIR_CREATED_BY_SCRIPT:-false}" == "true" ]] && [[ -d "${BIN_DIR:-}" ]]; then
log_info "Cleaning up BIN_DIR: ${BIN_DIR}"
rm -rf "${BIN_DIR}"
fi
}
cleanup() {
# Call all cleanup functions
cleanup_bin_dir
}
# Set up trap to run cleanup on exit
trap cleanup EXIT
# Color codes (disable if NO_COLOR is set or not a terminal)
if [[ -z "${NO_COLOR:-}" ]] && [[ -t 1 ]]; then
BLUE='\033[94m'
GREEN='\033[92m'
RED='\033[91m'
YELLOW='\033[93m'
RESET='\033[0m'
else
BLUE=''
GREEN=''
RED=''
YELLOW=''
RESET=''
fi
log_info() {
echo -e "${BLUE}[INFO]${RESET} $*" >&2
}
log_error() {
echo -e "${RED}[ERROR]${RESET} $*" >&2
}
log_success() {
echo -e "${GREEN}[SUCCESS]${RESET} $*" >&2
}
log_warning() {
echo -e "${YELLOW}[WARNING]${RESET} $*" >&2
}
is_positive() {
local input_val="${1:-no}"
case "${input_val}" in
0|true|True|yes|Yes|y|Y)
return 0 # Success - truthy
;;
1|false|False|no|No|n|N)
return 1 # Failure - falsy
;;
*)
return 2 # Invalid input
;;
esac
}
# ============================================================================
# Infrastructure Installation Helper Functions
# ============================================================================
# Detect the platform (kind/minikube/openshift/kubernetes)
# Returns: kind, minikube, openshift, or kubernetes
detect_platform() {
# Check for OpenShift
if kubectl get clusterversion &>/dev/null; then
echo "openshift"
return 0
fi
# Check for Kind
local node_hostname
node_hostname=$(kubectl get nodes -o jsonpath='{.items[0].metadata.labels.kubernetes\.io/hostname}' 2>/dev/null || echo "")
if [[ "$node_hostname" == *"kind"* ]]; then
echo "kind"
return 0
fi
# Check for Minikube
local current_context
current_context=$(kubectl config current-context 2>/dev/null || echo "")
if [[ "$current_context" == *"minikube"* ]]; then
echo "minikube"
return 0
fi
# Default to standard Kubernetes
echo "kubernetes"
return 0
}
# Wait for pods to be created (exist)
# Usage: wait_for_pods_created <namespace> <label-selector> [timeout_seconds]
wait_for_pods_created() {
local namespace="$1"
local label_selector="$2"
local timeout="${3:-60}"
local elapsed=0
log_info "Waiting for pods with label '$label_selector' in namespace '$namespace' to be created..."
while true; do
# Exclude terminating pods by filtering out Terminating status
local pod_count=$(kubectl get pods -n "$namespace" -l "$label_selector" \
--no-headers 2>/dev/null | grep -v "Terminating" | wc -l)
if [ "$pod_count" -gt 0 ]; then
log_info "Found $pod_count pod(s) with label '$label_selector'"
return 0
fi
if [ $elapsed -ge $timeout ]; then
log_error "Timeout waiting for pods with label '$label_selector' to be created"
return 1
fi
sleep 2
elapsed=$((elapsed + 2))
done
}
# Wait for pods to be ready
# Usage: wait_for_pods_ready <namespace> <label-selector> [timeout]
wait_for_pods_ready() {
local namespace="$1"
local label_selector="$2"
local timeout="${3:-180s}"
log_info "Waiting for pods with label '$label_selector' in namespace '$namespace' to be ready..."
# Get list of non-terminating pods and wait for them
local pods=$(kubectl get pods -n "$namespace" -l "$label_selector" \
--no-headers 2>/dev/null | grep -v "Terminating" | awk '{print $1}')
if [ -z "$pods" ]; then
log_error "No pods found with label '$label_selector' in namespace '$namespace'"
return 1
fi
for pod in $pods; do
kubectl wait --for=condition=Ready pod/"$pod" -n "$namespace" --timeout="$timeout" || return 1
done
}
# Wait for pods to be ready (combines both creation and ready checks)
# Usage: wait_for_pods <namespace> <label-selector> [timeout]
wait_for_pods() {
local namespace="$1"
local label_selector="$2"
local timeout="${3:-180s}"
# Convert timeout to seconds for pod creation check
local timeout_seconds="${timeout%s}"
local timeout_created=60
# If timeout is longer than 60s, use 60s for creation, rest for ready
# If timeout is shorter, split it
if [ "$timeout_seconds" -gt 60 ]; then
timeout_created=60
else
timeout_created=$((timeout_seconds / 3))
fi
# First, wait for pods to be created
wait_for_pods_created "$namespace" "$label_selector" "$timeout_created" || return 1
# Then, wait for pods to be ready
wait_for_pods_ready "$namespace" "$label_selector" "$timeout" || return 1
log_success "Pods with label '$label_selector' in namespace '$namespace' are ready!"
}
# Wait for deployment to be available using kubectl wait
# Usage: wait_for_deployment <namespace> <deployment-name> [timeout]
# Note: This uses kubectl wait --for=condition=Available, which checks deployment status directly
wait_for_deployment() {
local namespace="$1"
local deployment_name="$2"
local timeout="${3:-180s}"
log_info "Waiting for deployment '$deployment_name' in namespace '$namespace' to be available..."
if kubectl wait --timeout="$timeout" -n "$namespace" deployment/"$deployment_name" --for=condition=Available; then
log_success "Deployment '$deployment_name' in namespace '$namespace' is available!"
else
log_error "Deployment '$deployment_name' in namespace '$namespace' failed to become available within $timeout"
log_error "--- Deployment status ---"
kubectl get deployment "$deployment_name" -n "$namespace" -o wide 2>/dev/null || true
log_error "--- Pod status ---"
kubectl get pods -n "$namespace" -l "control-plane=$deployment_name" -o wide 2>/dev/null || true
log_error "--- Pod describe (last 50 lines) ---"
kubectl describe pods -n "$namespace" -l "control-plane=$deployment_name" 2>/dev/null | tail -50 || true
log_error "--- Recent events in namespace '$namespace' ---"
kubectl get events -n "$namespace" --sort-by='.lastTimestamp' 2>/dev/null | tail -20 || true
return 1
fi
}
# Wait for CRD to be established
# Usage: wait_for_crd <crd-name> [timeout]
wait_for_crd() {
local crd_name="$1"
local timeout="${2:-60s}"
log_info "Waiting for CRD '$crd_name' to be established..."
# Add small delay to allow CRD status to be initialized
sleep 2
# Retry logic to handle race condition where .status.conditions may not be initialized yet
local max_retries=10
local retry=0
while [ $retry -lt $max_retries ]; do
if kubectl wait --for=condition=Established --timeout="$timeout" crd/"$crd_name" 2>/dev/null; then
return 0
fi
retry=$((retry + 1))
if [ $retry -lt $max_retries ]; then
log_info "Retry $retry/$max_retries: Waiting for CRD status to be initialized..."
sleep 3
fi
done
# Final attempt with error output
kubectl wait --for=condition=Established --timeout="$timeout" crd/"$crd_name"
}
# Wait for multiple CRDs to be established
# Usage: wait_for_crds <timeout> <crd1> <crd2> ...
wait_for_crds() {
local timeout="$1"
shift
for crd in "$@"; do
wait_for_crd "$crd" "$timeout" || return 1
done
log_success "All CRDs are established!"
}
# Update multiple fields in KServe inferenceservice-config ConfigMap
# Usage: update_isvc_config "ingress.enableGatewayApi=true" "deploy.defaultDeploymentMode=Standard"
# Example:
# update_isvc_config "ingress.enableGatewayApi=true"
# update_isvc_config "ingress.enableGatewayApi=true" "ingress.className=\"envoy\""
update_isvc_config() {
if [ $# -eq 0 ]; then
log_error "No update parameters provided"
return 1
fi
log_info "Updating inferenceservice-config..."
# Prepare updates as JSON array
local updates_file
updates_file=$(mktemp)
for arg in "$@"; do
local key="${arg%%=*}"
local raw_value="${arg#*=}"
local data_key="${key%%.*}"
local json_path="${key#*.}"
local value_json="$raw_value"
# Smart type detection: auto-quote strings, keep numbers/booleans/JSON as-is
if [[ ! $raw_value =~ ^\" ]] \
&& [[ ! $raw_value =~ ^-?[0-9]+(\.[0-9]+)?$ ]] \
&& [[ ! $raw_value =~ ^(true|false|null)$ ]] \
&& [[ ! $raw_value =~ ^[{\[] ]]; then
value_json=$(jq -Rn --arg v "$raw_value" '$v')
fi
jq -n \
--arg data_key "$data_key" \
--arg path "$json_path" \
--argjson value "$value_json" \
'{data_key:$data_key, path:$path, value:$value}' >> "$updates_file"
log_info "$data_key.$json_path = $value_json"
done
local updates_json
updates_json=$(jq -s '.' "$updates_file")
rm -f "$updates_file"
# Apply all updates with a single jq invocation
kubectl get configmap inferenceservice-config -n "${KSERVE_NAMESPACE}" -o json |
jq --argjson updates "$updates_json" '
# Helper function to safely set nested paths, creating intermediate objects as needed
def setpath_safe($parts; $value):
reduce range(0; ($parts|length)-1) as $i (.;
$parts[:$i+1] as $prefix
| if getpath($prefix) == null then setpath($prefix; {}) else . end
)
| setpath($parts; $value);
# Apply each update
reduce $updates[] as $item (.;
if .data[$item.data_key] == null or .data[$item.data_key] == "" then
.data[$item.data_key] = (
{}
| setpath_safe($item.path | split("."); $item.value)
| tojson
)
else
.data[$item.data_key] |= (
fromjson
| setpath_safe($item.path | split("."); $item.value)
| tojson
)
end
)
' |
kubectl apply -f -
log_success "ConfigMap updated successfully"
}
# Create namespace if it does not exist (skip if already exists)
# Usage: create_or_skip_namespace <namespace>
create_or_skip_namespace() {
local namespace="$1"
if kubectl get namespace "$namespace" &>/dev/null; then
log_info "Namespace '$namespace' already exists"
else
log_info "Creating namespace '$namespace'..."
kubectl create namespace "$namespace"
log_success "Namespace '$namespace' created"
fi
}
# Check if required CLI tools exist
# Usage: check_cli_exist <tool1> [tool2] [tool3] ...
check_cli_exist() {
local missing=()
for cmd in "$@"; do
if ! command_exists "$cmd"; then
missing+=("$cmd")
fi
done
if [ ${#missing[@]} -gt 0 ]; then
log_error "Required CLI tool(s) not found: ${missing[*]}"
log_error "Please install missing tool(s) first."
exit 1
fi
}
command_exists() {
command -v "$1" &>/dev/null
}
# Retry a command with delay between attempts
# Usage: retry_command <max_attempts> <delay_seconds> <command...>
# Example: retry_command 3 5 kubectl apply -k "${RUNTIMES_DIR}"
# Returns: 0 on success, 1 on failure after all attempts
retry_command() {
local max_attempts="$1"
local delay="$2"
shift 2
local attempt=1
while [ $attempt -le $max_attempts ]; do
if "$@" 2>&1; then
return 0
fi
if [ $attempt -lt $max_attempts ]; then
log_warning "Command failed, retrying in ${delay} seconds... (attempt $attempt/$max_attempts)"
sleep "$delay"
else
log_error "Command failed after $max_attempts attempts"
return 1
fi
attempt=$((attempt + 1))
done
}
# Compare semantic versions (returns 0 if v1 >= v2, 1 otherwise)
# Usage: version_gte "v3.17.3" "v3.16.0"
# Example: version_gte "$current_version" "$required_version" && echo "OK"
version_gte() {
[ "$1" = "$(printf '%s\n' "$1" "$2" | sort -V | tail -1)" ]
}
# ============================================================================
# Shared Resources Configuration (for dual KServe + LLMISVC installation)
# ============================================================================
determine_shared_resources_config() {
local install_mode="${1}"
local enable_kserve="${2}"
local enable_llmisvc="${3}"
if ! is_positive "${enable_kserve}" && ! is_positive "${enable_llmisvc}"; then
return
fi
log_info "Determining shared resources configuration (KSERVE=${enable_kserve}, LLMISVC=${enable_llmisvc})..."
if [ "${install_mode}" = "helm" ]; then
determine_shared_resources_helm "${enable_kserve}" "${enable_llmisvc}"
elif [ "${install_mode}" = "kustomize" ]; then
determine_shared_resources_kustomize
else
log_error "INSTALL_MODE not set. Must be 'helm' or 'kustomize'"
exit 1
fi
}
determine_shared_resources_helm() {
local enable_kserve="${1}"
local enable_llmisvc="${2}"
local kserve_installed=$(helm list -n "${KSERVE_NAMESPACE}" -q 2>/dev/null | grep -c "^kserve-resources$" || true)
local llmisvc_installed=$(helm list -n "${KSERVE_NAMESPACE}" -q 2>/dev/null | grep -c "^kserve-llmisvc-resources$" || true)
if [ "${kserve_installed}" = "0" ] && [ "${llmisvc_installed}" = "0" ]; then
# First installation - check which components are being enabled
if is_positive "${enable_kserve}" && is_positive "${enable_llmisvc}"; then
# Both enabled: kserve-resources installs first and creates shared resources
log_info "[Helm] First install (both) - kserve-resources creates shared resources, llmisvc-resources does not"
LLMISVC_EXTRA_ARGS="${LLMISVC_EXTRA_ARGS:-} --set kserve.createSharedResources=false"
elif is_positive "${enable_kserve}" && ! is_positive "${enable_llmisvc}"; then
# Only kserve enabled: kserve-resources creates shared resources
log_info "[Helm] First install (kserve only) - kserve-resources will create shared resources"
# Use default value (true) - no extra args needed
elif ! is_positive "${enable_kserve}" && is_positive "${enable_llmisvc}"; then
# Only llmisvc enabled: llmisvc-resources creates shared resources
log_info "[Helm] First install (llmisvc only) - llmisvc-resources will create shared resources"
# Use default value (true) - no extra args needed
else
# Neither enabled - shouldn't reach here
log_error "[Helm] No components enabled"
return 1
fi
elif [ "${kserve_installed}" = "1" ] && [ "${llmisvc_installed}" = "0" ]; then
log_info "[Helm] Only kserve-resources installed - setting createSharedResources=false for LLMISVC"
LLMISVC_EXTRA_ARGS="${LLMISVC_EXTRA_ARGS:-} --set kserve.createSharedResources=false"
elif [ "${kserve_installed}" = "0" ] && [ "${llmisvc_installed}" = "1" ]; then
log_info "[Helm] Only kserve-llmisvc-resources installed - setting createSharedResources=false for KSERVE"
KSERVE_EXTRA_ARGS="${KSERVE_EXTRA_ARGS:-} --set kserve.createSharedResources=false"
else
local kserve_has_false=$(helm get values kserve-resources -n "${KSERVE_NAMESPACE}" 2>/dev/null | grep -c "createSharedResources: false" || true)
if [ "${kserve_has_false}" = "1" ]; then
log_info "[Helm] Maintaining createSharedResources=false for KSERVE"
KSERVE_EXTRA_ARGS="${KSERVE_EXTRA_ARGS:-} --set kserve.createSharedResources=false"
else
log_info "[Helm] Setting createSharedResources=false for LLMISVC"
LLMISVC_EXTRA_ARGS="${LLMISVC_EXTRA_ARGS:-} --set kserve.createSharedResources=false"
fi
fi
}
determine_shared_resources_kustomize() {
KSERVE_INSTALLED=$(kubectl get deployment kserve-controller-manager -n "${KSERVE_NAMESPACE}" 2>/dev/null | grep -c "kserve-controller-manager" || true)
LLMISVC_INSTALLED=$(kubectl get deployment llmisvc-controller-manager -n "${KSERVE_NAMESPACE}" 2>/dev/null | grep -c "llmisvc-controller-manager" || true)
export KSERVE_INSTALLED
export LLMISVC_INSTALLED
log_info "[Kustomize] Installation status(0: not installed, 1: installed): KSERVE=${KSERVE_INSTALLED}, LLMISVC=${LLMISVC_INSTALLED}"
}
# ============================================================================
# Set environment variable based on priority order:
# Priority: 1. Runtime env > 2. Component env > 3. Global env > 4. Component default
# Usage: set_env_with_priority VAR_NAME COMPONENT_ENV_VALUE GLOBAL_ENV_VALUE DEFAULT_VALUE
set_env_with_priority() {
local var_name="$1"
local component_value="$2"
local global_value="$3"
local default_value="$4"
# Get current value
local current_value
eval "current_value=\${${var_name}}"
# If current value exists and differs from default, it's a runtime value - keep it
if [ -n "$current_value" ] && [ -n "$default_value" ] && [ "$current_value" != "$default_value" ]; then
# This is a runtime value, keep it
return
fi
# Apply priority: component env > global env > default
if [ -n "$component_value" ]; then
eval "export $var_name=\"$component_value\""
elif [ -n "$global_value" ]; then
eval "export $var_name=\"$global_value\""
fi
# If both are empty, variable keeps its default value
}
#================================================
# Determine repository root using find_repo_root
#================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-.}")" && pwd)"
REPO_ROOT="$(find_repo_root "${SCRIPT_DIR}" "true")"
export REPO_ROOT
# Set up BIN_DIR - use repo bin if it exists, otherwise use temp directory
if [[ -d "${REPO_ROOT}/bin" ]]; then
export BIN_DIR="${REPO_ROOT}/bin"
else
export BIN_DIR="$(mktemp -d)"
log_info "Using temp BIN_DIR: ${BIN_DIR}"
fi
export PATH="${BIN_DIR}:${PATH}"
REINSTALL="${REINSTALL:-false}"
UNINSTALL="${UNINSTALL:-false}"
FORCE_UPGRADE="${FORCE_UPGRADE:-false}"
if [[ "$*" == *"--uninstall"* ]]; then
UNINSTALL=true
elif [[ "$*" == *"--reinstall"* ]]; then
REINSTALL=true
elif [[ "$*" == *"--force-upgrade"* ]]; then
FORCE_UPGRADE=true
fi
export REINSTALL
export UNINSTALL
export FORCE_UPGRADE
# RELEASE mode (from definition file)
RELEASE="false"
export RELEASE
#================================================
# Version Dependencies (from kserve-deps.env)
#================================================
GOLANGCI_LINT_VERSION=v2.9.0
CONTROLLER_TOOLS_VERSION=v0.19.0
ENVTEST_VERSION=release-0.19
YQ_VERSION=v4.52.1
HELM_VERSION=v3.16.3
KUSTOMIZE_VERSION=v5.8.1
HELM_DOCS_VERSION=v1.12.0
POETRY_VERSION=1.8.3
UV_VERSION=0.7.8
RUFF_VERSION=0.14.13
PINACT_VERSION=v3.9.0
KIND_VERSION=v0.30.0
CERT_MANAGER_VERSION=v1.17.0
ENVOY_GATEWAY_VERSION=v1.7.0
ENVOY_AI_GATEWAY_VERSION=v0.6.0
KNATIVE_OPERATOR_VERSION=v1.21.1
KNATIVE_SERVING_VERSION=1.21.1
KEDA_OTEL_ADDON_VERSION=v0.0.6
PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
KSERVE_VERSION=v0.19.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.18.0
OPENTELEMETRY_OPERATOR_VERSION=0.74.3
LWS_VERSION=v0.8.0
GATEWAY_API_VERSION=v1.4.1
GIE_VERSION=v1.3.1
WVA_VERSION=v0.7.0
#================================================
# Global Variables (from global-vars.env)
#================================================
# These provide default namespace values that can be overridden
# by environment variables or GLOBAL_ENV settings below
KEDA_NAMESPACE="${KEDA_NAMESPACE:-keda}"
KSERVE_NAMESPACE="${KSERVE_NAMESPACE:-kserve}"
PROMETHEUS_NAMESPACE="${PROMETHEUS_NAMESPACE:-monitoring}"
PROMETHEUS_ADAPTER_NAMESPACE="${PROMETHEUS_ADAPTER_NAMESPACE:-monitoring}"
WVA_NAMESPACE="${WVA_NAMESPACE:-wva-system}"
OTEL_NAMESPACE="${OTEL_NAMESPACE:-opentelemetry-operator}"
OPERATOR_NAMESPACE="${OPERATOR_NAMESPACE:-knative-operator}"
SERVING_NAMESPACE="${SERVING_NAMESPACE:-knative-serving}"
ISTIO_NAMESPACE="${ISTIO_NAMESPACE:-istio-system}"
GATEWAY_NAMESPACE="${GATEWAY_NAMESPACE:-kserve}"
DEPLOYMENT_MODE="${DEPLOYMENT_MODE:-Knative}"
GATEWAY_NETWORK_LAYER="${GATEWAY_NETWORK_LAYER:-false}"
ENABLE_KSERVE="${ENABLE_KSERVE:-true}"
ENABLE_LLMISVC="${ENABLE_LLMISVC:-false}"
ENABLE_LOCALMODEL="${ENABLE_LOCALMODEL:-false}"
EMBED_MANIFESTS="${EMBED_MANIFESTS:-false}"
EMBED_TEMPLATES="${EMBED_TEMPLATES:-false}"
KSERVE_CUSTOM_ISVC_CONFIGS="${KSERVE_CUSTOM_ISVC_CONFIGS:-}"
#================================================
# Component-Specific Variables
#================================================
#================================================
# Template Functions (EMBED_TEMPLATES MODE)
#================================================
#================================================
# Component Functions
#================================================
# ----------------------------------------
# CLI/Component: helm
# ----------------------------------------
install_helm() {
local os=$(detect_os)
local arch=$(detect_arch)
local archive_name="helm-${HELM_VERSION}-${os}-${arch}.tar.gz"
local download_url="https://get.helm.sh/${archive_name}"
log_info "Installing Helm ${HELM_VERSION} for ${os}/${arch}..."
# Check if helm is already installed in BIN_DIR with the exact required version
if [[ -f "${BIN_DIR}/helm" ]]; then
local current_version=$("${BIN_DIR}/helm" version --template='{{.Version}}' 2>/dev/null)
if [[ "$current_version" == "$HELM_VERSION" ]]; then
log_info "Helm ${current_version} is already installed in ${BIN_DIR}"
return 0
fi
[[ -n "$current_version" ]] && log_info "Replacing Helm ${current_version} with ${HELM_VERSION} in ${BIN_DIR}..."
fi
local temp_dir=$(mktemp -d)
local temp_file="${temp_dir}/${archive_name}"
if command -v wget &>/dev/null; then
wget -q "${download_url}" -O "${temp_file}"
elif command -v curl &>/dev/null; then
curl -sL "${download_url}" -o "${temp_file}"
else
log_error "Neither wget nor curl is available" >&2
rm -rf "${temp_dir}"
exit 1
fi
tar -xzf "${temp_file}" -C "${temp_dir}"
local binary_path="${temp_dir}/${os}-${arch}/helm"
if [[ ! -f "${binary_path}" ]]; then
log_error "helm binary not found in archive" >&2
rm -rf "${temp_dir}"
exit 1
fi
chmod +x "${binary_path}"
if [[ -w "${BIN_DIR}" ]]; then
mv "${binary_path}" "${BIN_DIR}/helm"
else
sudo mv "${binary_path}" "${BIN_DIR}/helm"
fi
rm -rf "${temp_dir}"
log_success "Successfully installed Helm ${HELM_VERSION} to ${BIN_DIR}/helm"
"${BIN_DIR}/helm" version
}
# ----------------------------------------
# CLI/Component: yq
# ----------------------------------------
install_yq() {
local os=$(detect_os)
local arch=$(detect_arch)
local binary_name="yq_${os}_${arch}"
local download_url="https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/${binary_name}"
log_info "Installing yq ${YQ_VERSION} for ${os}/${arch}..."
if [[ -x "${BIN_DIR}/yq" ]]; then
local current_version=$("${BIN_DIR}/yq" --version 2>&1 | awk 'match($0, /v[0-9.]+/) {print substr($0, RSTART, RLENGTH)}')
# Normalize version format (add 'v' prefix if missing)
[[ -n "$current_version" && "$current_version" != v* ]] && current_version="v${current_version}"
if [[ -n "$current_version" ]] && version_gte "$current_version" "$YQ_VERSION"; then
log_info "yq ${current_version} is already installed in ${BIN_DIR} (>= ${YQ_VERSION})"
return 0
fi
[[ -n "$current_version" ]] && log_info "Upgrading yq from ${current_version} to ${YQ_VERSION}..."
fi
local temp_file=$(mktemp)
if command -v wget &>/dev/null; then
wget -q "${download_url}" -O "${temp_file}"
elif command -v curl &>/dev/null; then
curl -sL "${download_url}" -o "${temp_file}"
else
log_info "Neither wget nor curl is available" >&2
rm -f "${temp_file}"
exit 1
fi
chmod +x "${temp_file}"
if [[ -w "${BIN_DIR}" ]]; then
mv "${temp_file}" "${BIN_DIR}/yq"
else
sudo mv "${temp_file}" "${BIN_DIR}/yq"
fi
log_success "Successfully installed yq ${YQ_VERSION} to ${BIN_DIR}/yq"
"${BIN_DIR}/yq" --version
}
# ----------------------------------------
# CLI/Component: cert-manager
# ----------------------------------------
uninstall_cert_manager() {
log_info "Uninstalling cert-manager..."
helm uninstall cert-manager -n cert-manager 2>/dev/null || true
kubectl delete all --all -n cert-manager --force --grace-period=0 2>/dev/null || true
kubectl delete namespace cert-manager --wait=true --timeout=60s --force --grace-period=0 2>/dev/null || true
log_success "cert-manager uninstalled"
}
install_cert_manager() {
if helm list -n cert-manager 2>/dev/null | grep -q "cert-manager"; then
if [ "$REINSTALL" = false ]; then
log_info "cert-manager is already installed. Use --reinstall to reinstall."
return 0
else
log_info "Reinstalling cert-manager..."
uninstall_cert_manager
fi
fi
log_info "Adding cert-manager Helm repository..."
helm repo add jetstack https://charts.jetstack.io --force-update
log_info "Installing cert-manager ${CERT_MANAGER_VERSION}..."
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version "${CERT_MANAGER_VERSION}" \
--set crds.enabled=true \
--wait
log_success "Successfully installed cert-manager ${CERT_MANAGER_VERSION} via Helm"
wait_for_pods "cert-manager" "app in (cert-manager,webhook,cainjector)" "180s"
log_success "cert-manager is ready!"
}
#================================================
# Main Installation Logic
#================================================
main() {
if [ "$UNINSTALL" = true ]; then
echo "=========================================="
echo "Uninstalling components..."
echo "=========================================="
uninstall_cert_manager
echo "=========================================="
echo "✅ Uninstallation completed!"
echo "=========================================="
exit 0
fi
echo "=========================================="
echo "Install KServe Standard Mode/LLMIsvc dependencies"
echo "=========================================="
export EMBED_TEMPLATES="true"
install_helm
install_yq
install_cert_manager
echo "=========================================="
echo "✅ Installation completed successfully!"
echo "=========================================="
}
main "$@"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1289
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -29,7 +29,7 @@ PROMETHEUS_VERSION=83.4.0
PROMETHEUS_ADAPTER_VERSION=5.3.0
# KServe
KSERVE_VERSION=v0.19.0-rc0
KSERVE_VERSION=v0.19.0
# Auto-generated from go.mod - DO NOT EDIT MANUALLY
# To regenerate: run 'make sync-deps'
+1 -1
View File
@@ -1 +1 @@
0.19.0rc0
0.19.0
+1 -1
View File
@@ -11,7 +11,7 @@ dependencies = [
"requests[security]<3.0.0,>=2.24.0",
]
name = "aifserver"
version = "0.19.0rc0"
version = "0.19.0"
description = "'Model Server implementation for AI fairness. Not intended for use outside KServe Frameworks Images."
readme = "README.md"
+2 -2
View File
@@ -25,7 +25,7 @@ wheels = [
[[package]]
name = "aifserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "aif360" },
@@ -1105,7 +1105,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
+1 -1
View File
@@ -12,7 +12,7 @@ dependencies = [
"h5py==3.10.0",
]
name = "artserver"
version = "0.19.0rc0"
version = "0.19.0"
description = "Model Server implementation for AI Robustness Toolbox. Not intended for use outside KServe Frameworks Images."
readme = "README.md"
+2 -2
View File
@@ -165,7 +165,7 @@ wheels = [
[[package]]
name = "artserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "adversarial-robustness-toolbox", extra = ["keras"] },
@@ -842,7 +842,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
+1 -1
View File
@@ -11,7 +11,7 @@ dependencies = [
"pillow<11.0.0,>=10.3.0",
]
name = "custom-model"
version = "0.19.0rc0"
version = "0.19.0"
description = "Custom model implementation. Not intended for use outside KServe Frameworks Images."
[dependency-groups]
+2 -2
View File
@@ -403,7 +403,7 @@ wheels = [
[[package]]
name = "custom-model"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "kserve", extra = ["ray"] },
@@ -818,7 +818,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
+1 -1
View File
@@ -8,7 +8,7 @@ dependencies = [
"kserve @ file:///${PROJECT_ROOT}/../kserve",
]
name = "custom_tokenizer"
version = "0.19.0rc0"
version = "0.19.0"
description = "Custom Tokenizer Examples. Not intended for use outside KServe Frameworks Images."
[dependency-groups]
+2 -2
View File
@@ -379,7 +379,7 @@ wheels = [
[[package]]
name = "custom-tokenizer"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "kserve" },
@@ -700,7 +700,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
+1 -1
View File
@@ -11,7 +11,7 @@ dependencies = [
"pillow<11.0.0,>=10.3.0",
]
name = "custom_transformer"
version = "0.19.0rc0"
version = "0.19.0"
description = "Custom Transformer Examples. Not intended for use outside KServe Frameworks Images."
[dependency-groups]
+2 -2
View File
@@ -379,7 +379,7 @@ wheels = [
[[package]]
name = "custom-transformer"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "kserve" },
@@ -744,7 +744,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
+1 -1
View File
@@ -14,7 +14,7 @@ dependencies = [
"setuptools>=70.0.0",
]
name = "huggingfaceserver"
version = "0.19.0rc0"
version = "0.19.0"
description = "Model Server implementation for huggingface. Not intended for use outside KServe Frameworks Images."
readme = "README.md"
+3 -3
View File
@@ -1809,7 +1809,7 @@ hf-transfer = [
[[package]]
name = "huggingfaceserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "accelerate" },
@@ -2097,7 +2097,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
@@ -2194,7 +2194,7 @@ test = [
[[package]]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../storage" }
dependencies = [
{ name = "aiohttp" },
+2 -2
View File
@@ -41,7 +41,7 @@ dependencies = [
"pyasn1>=0.6.3"
]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
description = "KServe Python SDK"
readme = "README.md"
classifiers = [
@@ -66,7 +66,7 @@ repository = "https://github.com/kserve/kserve/tree/master/python/kserve"
[project.optional-dependencies]
storage = [
"kserve-storage==0.19.0rc0"
"kserve-storage==0.19.0"
]
logging = [
"asgi-logger<1.0.0,>=0.1.0",
+2 -2
View File
@@ -1871,7 +1871,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { editable = "." }
dependencies = [
{ name = "aiohttp" },
@@ -1999,7 +1999,7 @@ test = [
[[package]]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
source = { editable = "../storage" }
dependencies = [
{ name = "aiohttp" },
+1 -1
View File
@@ -11,7 +11,7 @@ dependencies = [
"pandas<3.0.0,>=2.2.0",
]
name = "lgbserver"
version = "0.19.0rc0"
version = "0.19.0"
description = "Model Server implementation for LightGBM. Not intended for use outside KServe Frameworks Images."
readme = "README.md"
+3 -3
View File
@@ -1040,7 +1040,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
@@ -1132,7 +1132,7 @@ test = [
[[package]]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../storage" }
dependencies = [
{ name = "aiohttp" },
@@ -1193,7 +1193,7 @@ wheels = [
[[package]]
name = "lgbserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "kserve" },
+1 -1
View File
@@ -11,7 +11,7 @@ dependencies = [
"setuptools<71.0.0,>=70.0.0",
]
name = "paddleserver"
version = "0.19.0rc0"
version = "0.19.0"
description = "Model Server implementation for Paddle. Not intended for use outside KServe Frameworks Images"
readme = "README.md"
+3 -3
View File
@@ -1056,7 +1056,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
@@ -1148,7 +1148,7 @@ test = [
[[package]]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../storage" }
dependencies = [
{ name = "aiohttp" },
@@ -1512,7 +1512,7 @@ wheels = [
[[package]]
name = "paddleserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "kserve" },
+1 -1
View File
@@ -11,7 +11,7 @@ dependencies = [
"setuptools<71.0.0,>=70.0.0",
]
name = "pmmlserver"
version = "0.19.0rc0"
version = "0.19.0"
description = "Model Server implementation for PMML. Not intended for use outside KServe Frameworks Images."
readme = "README.md"
+3 -3
View File
@@ -1069,7 +1069,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
@@ -1161,7 +1161,7 @@ test = [
[[package]]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../storage" }
dependencies = [
{ name = "aiohttp" },
@@ -1519,7 +1519,7 @@ wheels = [
[[package]]
name = "pmmlserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "jpmml-evaluator" },
+1 -1
View File
@@ -13,7 +13,7 @@ dependencies = [
"lgbserver>=0.16.0",
]
name = "predictiveserver"
version = "0.19.0rc0"
version = "0.19.0"
description = "Unified Predictive Model Server supporting scikit-learn, LightGBM, and XGBoost for KServe."
readme = "README.md"
+6 -6
View File
@@ -1029,7 +1029,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
@@ -1122,7 +1122,7 @@ test = [
[[package]]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../storage" }
dependencies = [
{ name = "aiohttp" },
@@ -1181,7 +1181,7 @@ wheels = [
[[package]]
name = "lgbserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "../lgbserver" }
dependencies = [
{ name = "kserve" },
@@ -1608,7 +1608,7 @@ wheels = [
[[package]]
name = "predictiveserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { editable = "." }
dependencies = [
{ name = "kserve" },
@@ -2199,7 +2199,7 @@ wheels = [
[[package]]
name = "sklearnserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "../sklearnserver" }
dependencies = [
{ name = "joblib" },
@@ -2542,7 +2542,7 @@ wheels = [
[[package]]
name = "xgbserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "../xgbserver" }
dependencies = [
{ name = "kserve" },
+1 -1
View File
@@ -12,7 +12,7 @@ dependencies = [
"pandas<3.0.0,>=2.2.0",
]
name = "sklearnserver"
version = "0.19.0rc0"
version = "0.19.0"
description = "Model Server implementation for scikit-learn. Not intended for use outside KServe Frameworks Images."
readme = "README.md"
+3 -3
View File
@@ -1029,7 +1029,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
@@ -1122,7 +1122,7 @@ test = [
[[package]]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../storage" }
dependencies = [
{ name = "aiohttp" },
@@ -2097,7 +2097,7 @@ wheels = [
[[package]]
name = "sklearnserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "joblib" },
+1 -1
View File
@@ -28,7 +28,7 @@ dependencies = [
"azure-core>=1.38.0"
]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
readme = "README.md"
description = "KServe Storage Handler. This module is responsible to download the models from the provided source"
classifiers = [
+2 -2
View File
@@ -1,5 +1,5 @@
version = 1
revision = 3
revision = 2
requires-python = ">=3.10, <3.13"
[[package]]
@@ -675,7 +675,7 @@ wheels = [
[[package]]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "aiohttp" },
@@ -8,7 +8,7 @@ dependencies = [
"kserve",
]
name = "error_404_isvc"
version = "0.19.0rc0"
version = "0.19.0"
description = "Custom isvc that always returns 404 with a JSON message"
[dependency-groups]
+2 -2
View File
@@ -400,7 +400,7 @@ wheels = [
[[package]]
name = "error-404-isvc"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "kserve" },
@@ -686,7 +686,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../../../kserve" }
dependencies = [
{ name = "aiohttp" },
@@ -8,7 +8,7 @@ dependencies = [
"kserve",
]
name = "success_200_isvc"
version = "0.19.0rc0"
version = "0.19.0"
description = "Custom isvc that always returns 200 with a JSON SUCCESS message"
[dependency-groups]
+2 -2
View File
@@ -667,7 +667,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../../../kserve" }
dependencies = [
{ name = "aiohttp" },
@@ -1393,7 +1393,7 @@ wheels = [
[[package]]
name = "success-200-isvc"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "kserve" },
+1 -1
View File
@@ -10,7 +10,7 @@ dependencies = [
"xgboost~=2.1.1",
]
name = "xgbserver"
version = "0.19.0rc0"
version = "0.19.0"
description = "Model Server implementation for XGBoost. Not intended for use outside KServe Frameworks Images."
readme = "README.md"
+3 -3
View File
@@ -1040,7 +1040,7 @@ wheels = [
[[package]]
name = "kserve"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../kserve" }
dependencies = [
{ name = "aiohttp" },
@@ -1132,7 +1132,7 @@ test = [
[[package]]
name = "kserve-storage"
version = "0.19.0rc0"
version = "0.19.0"
source = { directory = "../storage" }
dependencies = [
{ name = "aiohttp" },
@@ -2301,7 +2301,7 @@ wheels = [
[[package]]
name = "xgbserver"
version = "0.19.0rc0"
version = "0.19.0"
source = { virtual = "." }
dependencies = [
{ name = "kserve" },