Skip to content

kserve

Architecture snapshot: 2026-04-29 (2026-04-29)

Repository: kserve/kserve
Analyzer: arch-analyzer 0.2.0
Extracted: 2026-04-29T11:06:20Z

Summary

Metric Count
CRDs 14
Deployments 10
Services 6
Secrets 3
Cluster Roles 2
Controller Watches 49

Component Architecture

CRDs, controllers, and owned Kubernetes resources.

graph LR
    %% Component architecture for kserve

    classDef crd fill:#e74c3c,stroke:#c0392b,color:#fff
    classDef controller fill:#3498db,stroke:#2980b9,color:#fff
    classDef owned fill:#2ecc71,stroke:#27ae60,color:#fff
    classDef external fill:#95a5a6,stroke:#7f8c8d,color:#fff
    classDef dep fill:#f39c12,stroke:#e67e22,color:#fff

    subgraph controller["kserve Controller"]
        dep_1["kserve-controller-manager"]
        class dep_1 controller
        dep_2["kserve-controller-manager"]
        class dep_2 controller
        dep_3["kserve-controller-manager"]
        class dep_3 controller
        dep_4["kserve-controller-manager"]
        class dep_4 controller
        dep_5["kserve-controller-manager"]
        class dep_5 controller
        dep_6["kserve-controller-manager"]
        class dep_6 controller
        dep_7["kserve-controller-manager"]
        class dep_7 controller
        dep_8["kserve-localmodel-controller-manager"]
        class dep_8 controller
        dep_9["llmisvc-controller-manager"]
        class dep_9 controller
        dep_10["spark-pmml-iris"]
        class dep_10 controller
    end

    crd_ClusterServingRuntime{{"ClusterServingRuntime\nserving.kserve.io/v1alpha1"}}
    class crd_ClusterServingRuntime crd
    crd_ClusterStorageContainer{{"ClusterStorageContainer\nserving.kserve.io/v1alpha1"}}
    class crd_ClusterStorageContainer crd
    crd_InferenceGraph{{"InferenceGraph\nserving.kserve.io/v1alpha1"}}
    class crd_InferenceGraph crd
    crd_InferenceGraph -->|"For (reconciles)"| controller
    crd_LLMInferenceService{{"LLMInferenceService\nserving.kserve.io/v1alpha1"}}
    class crd_LLMInferenceService crd
    crd_LLMInferenceService -->|"For (reconciles)"| controller
    crd_LLMInferenceServiceConfig{{"LLMInferenceServiceConfig\nserving.kserve.io/v1alpha1"}}
    class crd_LLMInferenceServiceConfig crd
    crd_LocalModelCache{{"LocalModelCache\nserving.kserve.io/v1alpha1"}}
    class crd_LocalModelCache crd
    crd_LocalModelCache -->|"For (reconciles)"| controller
    crd_LocalModelNamespaceCache{{"LocalModelNamespaceCache\nserving.kserve.io/v1alpha1"}}
    class crd_LocalModelNamespaceCache crd
    crd_LocalModelNamespaceCache -->|"For (reconciles)"| controller
    crd_LocalModelNode{{"LocalModelNode\nserving.kserve.io/v1alpha1"}}
    class crd_LocalModelNode crd
    crd_LocalModelNode -->|"For (reconciles)"| controller
    crd_LocalModelNodeGroup{{"LocalModelNodeGroup\nserving.kserve.io/v1alpha1"}}
    class crd_LocalModelNodeGroup crd
    crd_ServingRuntime{{"ServingRuntime\nserving.kserve.io/v1alpha1"}}
    class crd_ServingRuntime crd
    crd_TrainedModel{{"TrainedModel\nserving.kserve.io/v1alpha1"}}
    class crd_TrainedModel crd
    crd_TrainedModel -->|"For (reconciles)"| controller
    crd_LLMInferenceService{{"LLMInferenceService\nserving.kserve.io/v1alpha2"}}
    class crd_LLMInferenceService crd
    crd_LLMInferenceService -->|"For (reconciles)"| controller
    crd_LLMInferenceServiceConfig{{"LLMInferenceServiceConfig\nserving.kserve.io/v1alpha2"}}
    class crd_LLMInferenceServiceConfig crd
    crd_InferenceService{{"InferenceService\nserving.kserve.io/v1beta1"}}
    class crd_InferenceService crd
    crd_InferenceService -->|"For (reconciles)"| controller
    controller -->|"Owns"| owned_11["Deployment"]
    class owned_11 owned
    controller -->|"Owns"| owned_12["HTTPRoute"]
    class owned_12 owned
    controller -->|"Owns"| owned_13["HorizontalPodAutoscaler"]
    class owned_13 owned
    controller -->|"Owns"| owned_14["InferencePool"]
    class owned_14 owned
    controller -->|"Owns"| owned_15["Ingress"]
    class owned_15 owned
    controller -->|"Owns"| owned_16["Job"]
    class owned_16 owned
    controller -->|"Owns"| owned_17["LeaderWorkerSet"]
    class owned_17 owned
    controller -->|"Owns"| owned_18["OpenTelemetryCollector"]
    class owned_18 owned
    controller -->|"Owns"| owned_19["PersistentVolume"]
    class owned_19 owned
    controller -->|"Owns"| owned_20["PersistentVolumeClaim"]
    class owned_20 owned
    controller -->|"Owns"| owned_21["PodMonitor"]
    class owned_21 owned
    controller -->|"Owns"| owned_22["Route"]
    class owned_22 owned
    controller -->|"Owns"| owned_23["ScaledObject"]
    class owned_23 owned
    controller -->|"Owns"| owned_24["Secret"]
    class owned_24 owned
    controller -->|"Owns"| owned_25["Service"]
    class owned_25 owned
    controller -->|"Owns"| owned_26["ServiceMonitor"]
    class owned_26 owned
    controller -->|"Owns"| owned_27["VariantAutoscaling"]
    class owned_27 owned
    controller -->|"Owns"| owned_28["VirtualService"]
    class owned_28 owned
    watch_29["ClusterServingRuntime"] -->|"Watches"| controller
    class watch_29 external
    watch_30["ConfigMap"] -->|"Watches"| controller
    class watch_30 external
    watch_31["Gateway"] -->|"Watches"| controller
    class watch_31 external
    watch_32["HTTPRoute"] -->|"Watches"| controller
    class watch_32 external
    watch_33["InferenceService"] -->|"Watches"| controller
    class watch_33 external
    watch_34["LLMInferenceServiceConfig"] -->|"Watches"| controller
    class watch_34 external
    watch_35["LocalModelNode"] -->|"Watches"| controller
    class watch_35 external
    watch_36["Node"] -->|"Watches"| controller
    class watch_36 external
    watch_37["Pod"] -->|"Watches"| controller
    class watch_37 external
    watch_38["ServingRuntime"] -->|"Watches"| controller
    class watch_38 external

CRDs

Group Version Kind Scope Fields Validation Rules Source
serving.kserve.io v1alpha1 ClusterServingRuntime Cluster 1183 0 config/crd/full/serving.kserve.io_clusterservingruntimes.yaml
serving.kserve.io v1alpha1 ClusterStorageContainer Cluster 216 0 config/crd/full/clusterstoragecontainer/serving.kserve.io_clusterstoragecontainers.yaml
serving.kserve.io v1alpha1 InferenceGraph Namespaced 150 0 config/crd/full/serving.kserve.io_inferencegraphs.yaml
serving.kserve.io v1alpha1 LLMInferenceService Namespaced 5730 108 config/crd/full/llmisvc/serving.kserve.io_llminferenceservices.yaml
serving.kserve.io v1alpha1 LLMInferenceServiceConfig Namespaced 5709 108 config/crd/full/llmisvc/serving.kserve.io_llminferenceserviceconfigs.yaml
serving.kserve.io v1alpha1 LocalModelCache Cluster 20 1 config/crd/full/localmodel/serving.kserve.io_localmodelcaches.yaml
serving.kserve.io v1alpha1 LocalModelNamespaceCache Namespaced 20 1 config/crd/full/localmodel/serving.kserve.io_localmodelnamespacecaches.yaml
serving.kserve.io v1alpha1 LocalModelNode Cluster 15 0 config/crd/full/localmodel/serving.kserve.io_localmodelnodes.yaml
serving.kserve.io v1alpha1 LocalModelNodeGroup Cluster 220 0 config/crd/full/localmodel/serving.kserve.io_localmodelnodegroups.yaml
serving.kserve.io v1alpha1 ServingRuntime Namespaced 1183 0 config/crd/full/serving.kserve.io_servingruntimes.yaml
serving.kserve.io v1alpha1 TrainedModel Namespaced 25 0 config/crd/full/serving.kserve.io_trainedmodels.yaml
serving.kserve.io v1alpha2 LLMInferenceService Namespaced 5732 110 config/crd/full/llmisvc/serving.kserve.io_llminferenceservices.yaml
serving.kserve.io v1alpha2 LLMInferenceServiceConfig Namespaced 5711 95 config/crd/full/llmisvc/serving.kserve.io_llminferenceserviceconfigs.yaml
serving.kserve.io v1beta1 InferenceService Namespaced 6547 0 config/crd/full/serving.kserve.io_inferenceservices.yaml

Dependencies

Key External Dependencies

Module Version
github.com/go-logr/logr v1.4.3
github.com/go-logr/zapr v1.3.0
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.89.0
github.com/prometheus/client_model v0.6.2
github.com/prometheus/common v0.67.4
k8s.io/api v0.34.5
k8s.io/apiextensions-apiserver v0.34.3
k8s.io/apimachinery v0.34.5
k8s.io/client-go v0.34.5
sigs.k8s.io/controller-runtime v0.19.7