Skip to main content
Version: 0.17

Required Dependencies

This document outlines the infrastructure dependencies required for KServe installation based on your deployment mode.

Knative Mode Dependencies​

Knative mode provides serverless deployment with automatic scaling and traffic management.

Required Components​

ComponentVersionPurpose
cert-managerv1.17.0TLS certificate management for webhooks
Istio1.27.1Service mesh and ingress gateway
istio-ingress-class-Istio IngressClass configuration
Knative Operatorv1.21.1Serverless platform operator
Knative Serving1.21.1Serverless serving runtime

Required CLI Tools​

  • helm - Kubernetes package manager
  • kustomize - Kubernetes configuration management
  • yq - YAML processor
  • kubectl - Kubernetes CLI

Cloning the Repository​

Most installation methods require cloning the KServe repository to access installation scripts and Kustomize configurations.

git clone https://github.com/kserve/kserve.git
cd kserve
tip

You only need to clone the repository once. All installation guides in this section assume you're in the kserve/ directory.

Installation​

Use the pre-generated dependency installation script:

# Install dependencies for Knative mode
curl -fsSL https://github.com/kserve/kserve/releases/download/v0.17.0/kserve-knative-mode-dependency-install.sh | bash

Or install components individually:

# cert-manager
./hack/setup/infra/manage.cert-manager-helm.sh

# Istio (3 components)
./hack/setup/infra/manage.istio-helm.sh

# Istio IngressClass
./hack/setup/infra/manage.istio-ingress-class.sh

# Knative Operator
./hack/setup/infra/knative/manage.knative-operator-helm.sh

Standard Mode Dependencies​

Standard mode uses raw Kubernetes deployments without serverless features.

Required Components​

ComponentVersionPurpose
cert-managerv1.17.0+TLS certificate management for webhooks

Required CLI Tools​

  • helm - Kubernetes package manager
  • yq - YAML processor
  • kubectl - Kubernetes CLI

Installation​

# Install dependencies for Standard mode
curl -fsSL https://github.com/kserve/kserve/releases/download/v0.17.0/kserve-standard-mode-dependency-install.sh | bash

Or install cert-manager directly:

./hack/setup/infra/manage.cert-manager-helm.sh

LLMIsvc Dependencies​

LLMIsvc mode is optimized for large language model serving with Gateway API integration.

Required Components​

ComponentPurpose
External LBLoad balancer for Kind/Minikube
cert-managerTLS certificate management
Gateway API Extension CRDsInference-specific Gateway API extensions
Gateway API CRDsCore Gateway API resources
Envoy GatewayGateway API implementation
Envoy AI GatewayAI-specific gateway extensions
Gateway API GatewayClassGateway class configuration
Gateway API GatewayGateway resource instances
LWS OperatorLeaderWorkerSet for multi-node serving

Required CLI Tools​

  • helm - Kubernetes package manager
  • yq - YAML processor
  • kubectl - Kubernetes CLI

Installation​

# Install dependencies for LLMIsvc mode
curl -fsSL https://github.com/kserve/kserve/releases/download/v0.17.0/llmisvc-dependency-install.sh | bash

Or install components individually:

# External load balancer (platform-specific)
./hack/setup/infra/external-lb/manage.external-lb.sh

# cert-manager
./hack/setup/infra/manage.cert-manager-helm.sh

# Gateway API Extension CRDs
./hack/setup/infra/gateway-api/manage.gateway-api-extension-crd.sh

# Gateway API CRDs
./hack/setup/infra/gateway-api/manage.gateway-api-crd.sh

# Envoy Gateway
./hack/setup/infra/manage.envoy-gateway-helm.sh

# Envoy AI Gateway
./hack/setup/infra/manage.envoy-ai-gateway-helm.sh

# Gateway API GatewayClass
./hack/setup/infra/gateway-api/manage.gateway-api-gwclass.sh

# Gateway API Gateway
./hack/setup/infra/gateway-api/manage.gateway-api-gw.sh

# LWS Operator
./hack/setup/infra/manage.lws-operator.sh

Optional Dependencies​

KEDA (Event-Driven Autoscaling)​

KEDA enables event-driven autoscaling based on custom metrics and external triggers.

When to use:

  • Need autoscaling based on custom metrics
  • Want event-driven workload triggers
  • Require integration with external event sources

Components:

ComponentPurpose
KEDAKubernetes Event-Driven Autoscaling
KEDA OTEL AddonOpenTelemetry metrics integration
OpenTelemetry OperatorObservability and tracing

Installation:

# Install KEDA and dependencies
curl -fsSL https://github.com/kserve/kserve/releases/download/v0.17.0/keda-dependency-install.sh | bash

Or individually:

# OpenTelemetry Operator
./hack/setup/infra/manage.opentelemetry-helm.sh

# KEDA
./hack/setup/infra/manage.keda-helm.sh

# KEDA OTEL Addon
./hack/setup/infra/manage.keda-otel-addon-helm.sh

Custom Dependency Scripts​

You can create custom installation scripts for specific dependency combinations.

Using Make Target​

The easiest way to regenerate all quick-install scripts:

# Generate all quick-install scripts
make generate-quick-install-scripts

This processes all definition files in hack/setup/quick-install/definitions/ and creates standalone installation scripts.

Generating from Specific Definition​

Generate a script from a specific definition file:

python hack/setup/scripts/install-script-generator/generator.py \
hack/setup/quick-install/definitions/kserve-knative/kserve-knative-mode-dependency-install.definition

Creating Custom Definitions​

Create your own dependency combination by writing a YAML definition file:

# my-custom-dependencies.definition
DESCRIPTION: Custom KServe dependencies for my environment
RELEASE: true

# Required CLI tools
TOOLS:
- helm
- kustomize
- yq

# Optional: Include existing definitions
INCLUDE_DEFINITIONS:
- ./kserve-standard-mode-dependency-install.definition

# Optional: Set global environment variables
GLOBAL_ENV:
ISTIO_VERSION: "1.27.1"

# Components to install
COMPONENTS:
- name: cert-manager
- name: istio
env:
ISTIOD_EXTRA_ARGS: "--set resources.limits.cpu=500m"
- name: keda

Generate the script:

mkdir /tmp/test
python hack/setup/scripts/install-script-generator/generator.py \
my-custom-dependencies.definition \
/tmp/test/

Run the generated script:

# Install
/tmp/test//my-custom-dependencies-helm.sh

# Uninstall
/tmp/test/my-custom-dependencies-helm.sh --uninstall

Definition File Structure​

Required Fields:

  • DESCRIPTION: Human-readable description
  • COMPONENTS: List of components to install

Optional Fields:

  • TOOLS: Required CLI tools to verify
  • INCLUDE_DEFINITIONS: Import other definition files
  • GLOBAL_ENV: Environment variables for all components

Component Structure:

COMPONENTS:
- name: component-name # Matches script in hack/setup/infra/
env: # Optional environment variables
VAR1: value1
VAR2: value2

Composition with INCLUDE_DEFINITIONS:

  • Include other definition files to build on existing combinations
  • Last-wins strategy: Later components override earlier ones
  • Circular dependency detection prevents infinite loops

Dependency Matrix​

Quick reference for deployment modes:

DependencyKnative ModeStandard ModeLLMIsvc Mode
cert-manager✅ Required✅ Required✅ Required
Istio✅ Required❌ Not needed❌ Not needed
Knative✅ Required❌ Not needed❌ Not needed
Envoy Gateway❌ Not needed❌ Not needed✅ Required
Gateway API❌ Not needed❌ Not needed✅ Required
LWS Operator❌ Not needed❌ Not needed✅ Required
KEDA⚙️ Optional⚙️ Optional⚙️ Optional
External LB⚙️ Optional⚙️ Optional✅ Required (local)

Next Steps​

After installing dependencies, proceed to install KServe components: