--- apiVersion: v1 items: - apiVersion: v1 data: _example: "################################\n# #\n# \ EXAMPLE CONFIGURATION #\n# #\n################################\n\n# This block is not actually functional configuration,\n# but serves to illustrate the available configuration\n# options and document them in a way that is accessible\n# to users that `kubectl edit` this config map.\n#\n# These sample configuration options may be copied out of\n# this example block and unindented to be in the data block\n# to actually change the configuration.\n\n# ====================================== EXPLAINERS CONFIGURATION ======================================\n# Example\nexplainers: |-\n {\n \"art\": {\n \"image\" : \"kserve/art-explainer\",\n \ \"defaultImageVersion\": \"latest\"\n }\n }\n# Art Explainer runtime configuration\n explainers: |-\n {\n # Art explainer runtime configuration\n \"art\": {\n # image contains the default Art explainer serving runtime image uri.\n \"image\" : \"kserve/art-explainer\",\n \ \n # defautltImageVersion contains the Art explainer serving runtime default image version.\n \"defaultImageVersion\": \"latest\"\n }\n \ }\n# ====================================== ISVC CONFIGURATION ======================================\n# Example - setting custom annotation \n inferenceService: |-\n {\n \"serviceAnnotationDisallowedList\": [\n \"my.custom.annotation/1\" \n ],\n \"serviceLabelDisallowedList\": [\n \"my.custom.label.1\" \n ]\n }\n# Example - setting custom annotation\ninferenceService: |-\n {\n # ServiceAnnotationDisallowedList is a list of annotations that are not allowed to be propagated to Knative \n \ # revisions, which prevents the reconciliation loop to be triggered if the annotations is \n # configured here are used.\n # Default values are:\n \ # \"autoscaling.knative.dev/min-scale\",\n # \"autoscaling.knative.dev/max-scale\",\n \ # \"internal.serving.kserve.io/storage-initializer-sourceuri\",\n # \ \"kubectl.kubernetes.io/last-applied-configuration\",\n # \"modelFormat\"\n \ # Any new value will be appended to the list.\n \"serviceAnnotationDisallowedList\": [\n \"my.custom.annotation/1\" \n ],\n # ServiceLabelDisallowedList is a list of labels that are not allowed to be propagated to Knative revisions\n \ # which prevents the reconciliation loop to be triggered if the labels is configured here are used.\n \"serviceLabelDisallowedList\": [\n \"my.custom.label.1\" \ \n ]\n } \n# Example - setting custom resource\ninferenceService: |-\n \ {\n \"resource\": {\n \"cpuLimit\": \"1\",\n \"memoryLimit\": \"2Gi\",\n \"cpuRequest\": \"1\",\n \"memoryRequest\": \"2Gi\"\n }\n \ }\n# Example - setting custom resource\ninferenceService: |-\n {\n # resource contains the default resource configuration for the inference service.\n # you can override this configuration by specifying the resources in the inference service yaml.\n # If you want to unbound the resource (limits and requests), you can set the value to null or \"\" \n # or just remove the specific field from the config.\n \"resource\": {\n # cpuLimit is the limits.cpu to set for the inference service.\n \"cpuLimit\": \"1\",\n\n # memoryLimit is the limits.memory to set for the inference service.\n \"memoryLimit\": \"2Gi\",\n\n # cpuRequest is the requests.cpu to set for the inference service.\n \"cpuRequest\": \"1\",\n\n # memoryRequest is the requests.memory to set for the inference service.\n \"memoryRequest\": \"2Gi\"\n }\n }\n# ====================================== MultiNode CONFIGURATION ======================================\n# Example \nmultiNode: |-\n {\n \"customGPUResourceTypeList\": [\n \"custom.com/gpu\"\n \ ]\n }\n# Example of multinode configuration\nmultiNode: |-\n { \n \ # CustomGPUResourceTypeList is a list of custom GPU resource types intended to identify the GPU type of a resource,\n # not to restrict the user from using a specific GPU type.\n # The MultiNode runtime pod will dynamically add GPU resources based on the registered GPU types.\n \"customGPUResourceTypeList\": [\n \"custom.com/gpu\"\n ]\n } \n # ====================================== OTelCollector CONFIGURATION ======================================\n # Example\n opentelemetryCollector: |-\n {\n # scrapeInterval is the interval at which the OpenTelemetry Collector will scrape the metrics.\n \"scrapeInterval\": \"5s\",\n # metricScalerEndpoint is the endpoint from which the KEDA's ScaledObject will scrape the metrics.\n \"metricScalerEndpoint\": \"keda-otel-scaler.keda.svc:4318\",\n \ # metricReceiverEndpoint is the endpoint from which the OpenTelemetry Collector will scrape the metrics.\n \"metricReceiverEndpoint\": \"keda-otel-scaler.keda.svc:4317\"\n \ }\n\n # ====================================== AUTOSCALER CONFIGURATION ======================================\n # Example\n autoscaler: |-\n {\n # scaleUpStabilizationWindowSeconds is the stabilization window in seconds for scale up.\n \"scaleUpStabilizationWindowSeconds\": \"0\",\n # scaleDownStabilizationWindowSeconds is the stabilization window in seconds for scale down.\n \"scaleDownStabilizationWindowSeconds\": \"300\"\n \ }\n \n # ====================================== STORAGE INITIALIZER CONFIGURATION ======================================\n # Example\n storageInitializer: |-\n \ {\n \"image\" : \"kserve/storage-initializer:latest\",\n \"memoryRequest\": \"100Mi\",\n \"memoryLimit\": \"1Gi\",\n \"cpuRequest\": \"100m\",\n \ \"cpuLimit\": \"1\",\n \"caBundleConfigMapName\": \"\",\n \"caBundleVolumeMountPath\": \"/etc/ssl/custom-certs\",\n \"enableModelcar\": false,\n \"cpuModelcar\": \"10m\",\n \"memoryModelcar\": \"15Mi\"\n }\n storageInitializer: |-\n \ {\n # image contains the default storage initializer image uri.\n \"image\" : \"kserve/storage-initializer:latest\",\n \n # memoryRequest is the requests.memory to set for the storage initializer init container.\n \"memoryRequest\": \"100Mi\",\n \n # memoryLimit is the limits.memory to set for the storage initializer init container.\n \"memoryLimit\": \"1Gi\",\n \n # cpuRequest is the requests.cpu to set for the storage initializer init container.\n \ \"cpuRequest\": \"100m\",\n \n # cpuLimit is the limits.cpu to set for the storage initializer init container.\n \"cpuLimit\": \"1\",\n \ \n # caBundleConfigMapName is the ConfigMap will be copied to a user namespace for the storage initializer init container.\n \"caBundleConfigMapName\": \"\",\n\n # caBundleVolumeMountPath is the mount point for the configmap set by caBundleConfigMapName for the storage initializer init container.\n \"caBundleVolumeMountPath\": \"/etc/ssl/custom-certs\",\n\n # enableModelcar enabled allows you to directly access an OCI container image by\n # using a source URL with an \"oci://\" schema.\n \"enableModelcar\": false,\n\n # cpuModelcar is the cpu request and limit that is used for the passive modelcar container. It can be\n # set very low, but should be allowed by any Kubernetes LimitRange that might apply.\n \"cpuModelcar\": \"10m\",\n\n # cpuModelcar is the memory request and limit that is used for the passive modelcar container. It can be\n # set very low, but should be allowed by any Kubernetes LimitRange that might apply.\n \"memoryModelcar\": \"15Mi\",\n\n # uidModelcar is the UID under with which the modelcar process and the main container is running.\n \ # Some Kubernetes clusters might require this to be root (0). If not set the user id is left untouched (default)\n \"uidModelcar\": 10\n }\n \n # ====================================== CREDENTIALS ======================================\n # Example\n credentials: |-\n {\n \"storageSpecSecretName\": \"storage-config\",\n \ \"storageSecretNameAnnotation\": \"serving.kserve.io/storageSecretName\",\n \ \"gcs\": {\n \"gcsCredentialFileName\": \"gcloud-application-credentials.json\"\n \ },\n \"s3\": {\n \"s3AccessKeyIDName\": \"AWS_ACCESS_KEY_ID\",\n \ \"s3SecretAccessKeyName\": \"AWS_SECRET_ACCESS_KEY\",\n \"s3Endpoint\": \"\",\n \"s3UseHttps\": \"\",\n \"s3Region\": \"\",\n \"s3VerifySSL\": \"\",\n \"s3UseVirtualBucket\": \"\",\n \"s3UseAccelerate\": \"\",\n \"s3UseAnonymousCredential\": \"\",\n \"s3CABundleConfigMap\": \"\",\n \"s3CABundle\": \"\"\n }\n }\n # This is a global configuration used for downloading models from the cloud storage.\n # You can override this configuration by specifying the annotations on service account or static secret.\n # https://kserve.github.io/website/master/modelserving/storage/s3/s3/\n # For a quick reference about AWS ENV variables:\n # AWS Cli: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html\n # Boto: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#using-environment-variables\n #\n # The `s3AccessKeyIDName` and `s3SecretAccessKeyName` fields are only used from this configmap when static credentials (IAM User Access Key Secret)\n # are used as the authentication method for AWS S3.\n # The rest of the fields are used in both authentication methods (IAM Role for Service Account & IAM User Access Key Secret) if a non-empty value is provided.\n credentials: |-\n \ {\n # storageSpecSecretName contains the secret name which has the credentials for downloading the model.\n # This option is used when specifying the storage spec on isvc yaml.\n \"storageSpecSecretName\": \"storage-config\",\n\n \ # The annotation can be specified on isvc yaml to allow overriding with the secret name reference from the annotation value.\n # When using storageUri the order of the precedence is: secret name reference annotation > secret name references from service account\n # When using storageSpec the order of the precedence is: secret name reference annotation > storageSpecSecretName in configmap\n\n # Configuration for google cloud storage\n \"gcs\": {\n # gcsCredentialFileName specifies the filename of the gcs credential\n \ \"gcsCredentialFileName\": \"gcloud-application-credentials.json\"\n \ },\n \n # Configuration for aws s3 storage. This add the corresponding environmental variables to the storage initializer init container.\n # For more info on s3 storage see https://kserve.github.io/website/master/modelserving/storage/s3/s3/\n \ \"s3\": {\n # s3AccessKeyIDName specifies the s3 access key id name\n \"s3AccessKeyIDName\": \"AWS_ACCESS_KEY_ID\",\n \n # s3SecretAccessKeyName specifies the s3 secret access key name\n \"s3SecretAccessKeyName\": \"AWS_SECRET_ACCESS_KEY\",\n \n # s3Endpoint specifies the s3 endpoint\n \"s3Endpoint\": \"\",\n \n # s3UseHttps controls whether to use secure https or unsecure http to download models.\n \ # Allowed values are 0 and 1.\n \"s3UseHttps\": \"\",\n \n \ # s3Region specifies the region of the bucket.\n \"s3Region\": \"\",\n \n # s3VerifySSL controls whether to verify the tls/ssl certificate.\n \"s3VerifySSL\": \"\",\n \n # s3UseVirtualBucket configures whether it is a virtual bucket or not.\n \"s3UseVirtualBucket\": \"\",\n\n # s3UseAccelerate configures whether to use transfer acceleration.\n \ \"s3UseAccelerate\": \"\",\n \n # s3UseAnonymousCredential configures whether to use anonymous credentials to download the model or not.\n \ \"s3UseAnonymousCredential\": \"\",\n\n # s3CABundleConfigMap specifies the mounted CA bundle config map name.\n \"s3CABundleConfigMap\": \"\",\n\n # s3CABundle specifies the full path (mount path + file name) for the mounted config map data when used with a configured CA bundle config map.\n # s3CABundle specifies the path to a certificate bundle to use for HTTPS certificate validation when used absent of a configured CA bundle config map.\n \"s3CABundle\": \"\"\n }\n }\n \n # ====================================== INGRESS CONFIGURATION ======================================\n # Example\n ingress: |-\n { \n \"enableGatewayApi\": false,\n \"kserveIngressGateway\": \"kserve/kserve-ingress-gateway\",\n \"ingressGateway\" : \"knative-serving/knative-ingress-gateway\",\n \ \"localGateway\" : \"knative-serving/knative-local-gateway\",\n \"localGatewayService\" : \"knative-local-gateway.istio-system.svc.cluster.local\",\n \"ingressDomain\" \ : \"example.com\",\n \"additionalIngressDomains\": [\"additional-example.com\", \"additional-example-1.com\"],\n \"ingressClassName\" : \"istio\",\n \"domainTemplate\": \"{{ .Name }}-{{ .Namespace }}.{{ .IngressDomain }}\",\n \"urlScheme\": \"http\",\n \"disableIstioVirtualHost\": false,\n \"disableIngressCreation\": false\n }\n ingress: |-\n { \n # enableGatewayApi specifies whether to use Gateway API instead of Ingress to serve external traffic.\n \"enableGatewayApi\": false,\n\n # KServe implements [Gateway API](https://gateway-api.sigs.k8s.io/) to serve external traffic. \n # By default, KServe configures a default gateway to serve external traffic.\n # But, KServe can be configured to use a custom gateway by modifying this configuration.\n # The gateway should be specified in format /\n # NOTE: This configuration only applicable for raw deployment.\n \"kserveIngressGateway\": \"kserve/kserve-ingress-gateway\",\n \n # ingressGateway specifies the ingress gateway to serve external traffic.\n # The gateway should be specified in format /\n # NOTE: This configuration only applicable for serverless deployment with Istio configured as network layer.\n \ \"ingressGateway\" : \"knative-serving/knative-ingress-gateway\",\n \n \ # knativeLocalGatewayService specifies the hostname of the Knative's local gateway service.\n # The default KServe configurations are re-using the Istio local gateways for Knative. In this case, this\n # knativeLocalGatewayService field can be left unset. When unset, the value of \"localGatewayService\" will be used.\n # However, sometimes it may be better to have local gateways specifically for KServe (e.g. when enabling strict mTLS in Istio).\n # Under such setups where KServe is needed to have its own local gateways, the values of the \"localGateway\" and\n # \"localGatewayService\" should point to the KServe local gateways. Then, this knativeLocalGatewayService field\n \ # should point to the Knative's local gateway service.\n # NOTE: This configuration only applicable for serverless deployment with Istio configured as network layer.\n \"knativeLocalGatewayService\": \"\",\n \n # localGateway specifies the gateway which handles the network traffic within the cluster.\n # NOTE: This configuration only applicable for serverless deployment with Istio configured as network layer.\n \"localGateway\" : \"knative-serving/knative-local-gateway\",\n \n # localGatewayService specifies the hostname of the local gateway service.\n # NOTE: This configuration only applicable for serverless deployment with Istio configured as network layer.\n \ \"localGatewayService\" : \"knative-local-gateway.istio-system.svc.cluster.local\",\n \n # ingressDomain specifies the domain name which is used for creating the url.\n # If ingressDomain is empty then example.com is used as default domain.\n # NOTE: This configuration only applicable for raw deployment.\n \ \"ingressDomain\" : \"example.com\",\n\n # additionalIngressDomains specifies the additional domain names which are used for creating the url.\n \ \"additionalIngressDomains\": [\"additional-example.com\", \"additional-example-1.com\"]\n\n \ # ingressClassName specifies the ingress controller to use for ingress traffic.\n # This is optional and if omitted the default ingress in the cluster is used.\n # https://kubernetes.io/docs/concepts/services-networking/ingress/#default-ingress-class\n \ # NOTE: This configuration only applicable for raw deployment.\n \"ingressClassName\" : \"istio\",\n \n # domainTemplate specifies the template for generating domain/url for each inference service by combining variable from:\n # Name of the inference service ( {{ .Name}} )\n # Namespace of the inference service ( {{ .Namespace }} )\n # Annotation of the inference service ( {{ .Annotations.key }} )\n # Label of the inference service ( {{ .Labels.key }} )\n # IngressDomain ( {{ .IngressDomain }} )\n # If domain template is empty the default template {{ .Name }}-{{ .Namespace }}.{{ .IngressDomain }} is used.\n # NOTE: This configuration only applicable for raw deployment.\n \ \"domainTemplate\": \"{{ .Name }}-{{ .Namespace }}.{{ .IngressDomain }}\",\n \n # urlScheme specifies the url scheme to use for inference service and inference graph.\n # If urlScheme is empty then by default http is used.\n \"urlScheme\": \"http\",\n \n # disableIstioVirtualHost controls whether to use istio as network layer.\n # By default istio is used as the network layer. When DisableIstioVirtualHost is true, KServe does not\n # create the top level virtual service thus Istio is no longer required for serverless mode.\n # By setting this field to true, user can use other networking layers supported by knative.\n # For more info https://github.com/kserve/kserve/pull/2380, https://kserve.github.io/website/master/admin/serverless/kourier_networking/.\n \ # NOTE: This configuration is only applicable to serverless deployment.\n \ \"disableIstioVirtualHost\": false,\n\n # disableIngressCreation controls whether to disable ingress creation for raw deployment mode.\n \"disableIngressCreation\": false,\n \n # pathTemplate specifies the template for generating path based url for each inference service.\n # The following variables can be used in the template for generating url.\n # Name of the inference service ( {{ .Name}} )\n # Namespace of the inference service ( {{ .Namespace }} )\n # For more info https://github.com/kserve/kserve/issues/2257.\n \ # NOTE: This configuration only applicable to serverless deployment.\n \ \"pathTemplate\": \"/serving/{{ .Namespace }}/{{ .Name }}\"\n }\n \n # ====================================== LOGGER CONFIGURATION ======================================\n # Example\n logger: |-\n {\n \"image\" : \"kserve/agent:latest\",\n \ \"memoryRequest\": \"100Mi\",\n \"memoryLimit\": \"1Gi\",\n \"cpuRequest\": \"100m\",\n \"cpuLimit\": \"1\",\n \"defaultUrl\": \"http://default-broker\"\n \ }\n logger: |-\n {\n # image contains the default logger image uri.\n \ \"image\" : \"kserve/agent:latest\",\n \n # memoryRequest is the requests.memory to set for the logger container.\n \"memoryRequest\": \"100Mi\",\n \n # memoryLimit is the limits.memory to set for the logger container.\n \"memoryLimit\": \"1Gi\",\n \n # cpuRequest is the requests.cpu to set for the logger container.\n \"cpuRequest\": \"100m\",\n \n # cpuLimit is the limits.cpu to set for the logger container.\n \"cpuLimit\": \"1\",\n \n # defaultUrl specifies the default logger url. If logger is not specified in the resource this url is used.\n \"defaultUrl\": \"http://default-broker\"\n }\n \n # ====================================== BATCHER CONFIGURATION ======================================\n # Example\n batcher: |-\n {\n \"image\" : \"kserve/agent:latest\",\n \"memoryRequest\": \"1Gi\",\n \"memoryLimit\": \"1Gi\",\n \"cpuRequest\": \"1\",\n \ \"cpuLimit\": \"1\",\n \"maxBatchSize\": \"32\",\n \"maxLatency\": \"5000\"\n }\n batcher: |-\n {\n # image contains the default batcher image uri.\n \"image\" : \"kserve/agent:latest\",\n \n # memoryRequest is the requests.memory to set for the batcher container.\n \"memoryRequest\": \"1Gi\",\n \n # memoryLimit is the limits.memory to set for the batcher container.\n \"memoryLimit\": \"1Gi\",\n \n # cpuRequest is the requests.cpu to set for the batcher container.\n \"cpuRequest\": \"1\",\n \ \n # cpuLimit is the limits.cpu to set for the batcher container.\n \ \"cpuLimit\": \"1\"\n\n # maxBatchSize is the default maximum batch size for batcher.\n \"maxBatchSize\": \"32\",\n\n # maxLatency is the default maximum latency in milliseconds for batcher to wait and collect the batch.\n \"maxLatency\": \"5000\"\n }\n \n # ====================================== AGENT CONFIGURATION ======================================\n # Example\n agent: |-\n {\n \"image\" : \"kserve/agent:latest\",\n \"memoryRequest\": \"100Mi\",\n \"memoryLimit\": \"1Gi\",\n \"cpuRequest\": \"100m\",\n \ \"cpuLimit\": \"1\"\n }\n agent: |-\n {\n # image contains the default agent image uri.\n \"image\" : \"kserve/agent:latest\",\n \ \n # memoryRequest is the requests.memory to set for the agent container.\n \ \"memoryRequest\": \"100Mi\",\n \n # memoryLimit is the limits.memory to set for the agent container.\n \"memoryLimit\": \"1Gi\",\n \n \ # cpuRequest is the requests.cpu to set for the agent container.\n \"cpuRequest\": \"100m\",\n \n # cpuLimit is the limits.cpu to set for the agent container.\n \"cpuLimit\": \"1\"\n }\n \n # ====================================== ROUTER CONFIGURATION ======================================\n # Example\n router: |-\n {\n \"image\" : \"kserve/router:latest\",\n \"memoryRequest\": \"100Mi\",\n \"memoryLimit\": \"1Gi\",\n \"cpuRequest\": \"100m\",\n \ \"cpuLimit\": \"1\",\n \"headers\": {\n \"propagate\": []\n },\n \"imagePullPolicy\": \"IfNotPresent\",\n \"imagePullSecrets\": [\"docker-secret\"]\n }\n # router is the implementation of inference graph.\n router: |-\n {\n # image contains the default router image uri.\n \"image\" : \"kserve/router:latest\",\n \n # memoryRequest is the requests.memory to set for the router container.\n \"memoryRequest\": \"100Mi\",\n \n \ # memoryLimit is the limits.memory to set for the router container.\n \ \"memoryLimit\": \"1Gi\",\n \n # cpuRequest is the requests.cpu to set for the router container.\n \"cpuRequest\": \"100m\",\n \n \ # cpuLimit is the limits.cpu to set for the router container.\n \"cpuLimit\": \"1\",\n \n # Propagate the specified headers to all the steps specified in an InferenceGraph. \n # You can either specify the exact header names or use [Golang supported regex patterns]\n # (https://pkg.go.dev/regexp/syntax@go1.21.3#hdr-Syntax) to propagate multiple headers.\n \"headers\": {\n \"propagate\": [\n \"Authorization\",\n \"Test-Header-*\",\n \"*Trace-Id*\"\n \ ]\n }\n\n # imagePullPolicy specifies when the router image should be pulled from registry.\n \"imagePullPolicy\": \"IfNotPresent\",\n \ \n # # imagePullSecrets specifies the list of secrets to be used for pulling the router image from registry.\n # https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n \ \"imagePullSecrets\": [\"docker-secret\"]\n }\n \n# ====================================== DEPLOYMENT CONFIGURATION ======================================\n# Example\ndeploy: |-\n {\n \"defaultDeploymentMode\": \"Serverless\",\n \"deploymentRolloutStrategy\": {\n \"defaultRollout\": {\n \"maxSurge\": \"1\",\n \"maxUnavailable\": \"1\"\n }\n }\n }\n\ndeploy: |-\n {\n # defaultDeploymentMode specifies the default deployment mode of the kserve. The supported values are\n # Standard and Knative. Users can override the deployment mode at service level\n # by adding the annotation serving.kserve.io/deploymentMode.\n # \"defaultDeploymentMode\": \"Standard\",\n # deploymentRolloutStrategy specifies the default rollout strategy for the Standard deployment mode\n # \"deploymentRolloutStrategy\": {\n # defaultRollout specifies the default rollout configuration using Kubernetes deployment strategy\n # \"defaultRollout\": {\n # maxSurge specifies the maximum number of pods that can be created above the desired replica count\n # Can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%)\n # \"maxSurge\": \"1\",\n # maxUnavailable specifies the maximum number of pods that can be unavailable during the update\n # Can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%)\n \ # \"maxUnavailable\": \"1\"\n # }\n # }\n }\n\n # ====================================== SERVICE CONFIGURATION ======================================\n # Example\n service: |-\n {\n \"serviceClusterIPNone\": false\n }\n service: |-\n {\n \ # ServiceClusterIPNone is a boolean flag to indicate if the service should have a clusterIP set to None.\n # If the DeploymentMode is Raw, the default value for ServiceClusterIPNone if not set is false\n # \"serviceClusterIPNone\": \ false\n }\n\n # ====================================== METRICS CONFIGURATION ======================================\n # Example\n metricsAggregator: |-\n \ {\n \"enableMetricAggregation\": \"false\",\n \"enablePrometheusScraping\" : \"false\"\n }\n # For more info see https://github.com/kserve/kserve/blob/master/qpext/README.md\n metricsAggregator: |-\n {\n # enableMetricAggregation configures metric aggregation annotation. This adds the annotation serving.kserve.io/enable-metric-aggregation to every\n # service with the specified boolean value. If true enables metric aggregation in queue-proxy by setting env vars in the queue proxy container\n \ # to configure scraping ports.\n \"enableMetricAggregation\": \"false\",\n \ \n # enablePrometheusScraping configures metric aggregation annotation. This adds the annotation serving.kserve.io/enable-metric-aggregation to every\n \ # service with the specified boolean value. If true, prometheus annotations are added to the pod. If serving.kserve.io/enable-metric-aggregation is false,\n \ # the prometheus port is set with the default prometheus scraping port 9090, otherwise the prometheus port annotation is set with the metric aggregation port.\n \"enablePrometheusScraping\" : \"false\"\n }\n \n # ====================================== LOCALMODEL CONFIGURATION ======================================\n # Example\n localModel: |-\n {\n \"enabled\": false,\n # jobNamespace specifies the namespace where the download job will be created.\n \"jobNamespace\": \"kserve-localmodel-jobs\",\n # defaultJobImage specifies the default image used for the download job.\n \"defaultJobImage\" : \"kserve/storage-initializer:latest\",\n \ # Kubernetes modifies the filesystem group ID on the attached volume.\n \ \"fsGroup\": 1000,\n # TTL for the download job after it is finished.\n \ \"jobTTLSecondsAfterFinished\": 3600,\n # The frequency at which the local model agent reconciles the local models\n # This is to detect if models are missing from local disk\n \"reconcilationFrequencyInSecs\": 60,\n # This is to disable localmodel pv and pvc management for namespaces without isvcs\n \ \"disableVolumeManagement\": false\n }" agent: |- { "cpuLimit": "1", "cpuRequest": "100m", "image": "quay.io/opendatahub/kserve-agent@sha256:8e66bcaed2f24ffcb25d3d205c20817226e734d9f767ce87236b320060cc44f3", "memoryLimit": "1Gi", "memoryRequest": "100Mi" } autoscaler: |- { "scaleUpStabilizationWindowSeconds": "0", "scaleDownStabilizationWindowSeconds": "300" } autoscaling-wva-controller-config: |- { "prometheus": { "url": "https://thanos-querier.openshift-monitoring.svc.cluster.local:9091", "authModes": "bearer", "triggerAuthName": "ai-inference-keda-thanos", "triggerAuthKind": "ClusterTriggerAuthentication" } } batcher: |- { "cpuLimit": "1", "cpuRequest": "1", "image": "quay.io/opendatahub/kserve-agent@sha256:8e66bcaed2f24ffcb25d3d205c20817226e734d9f767ce87236b320060cc44f3", "memoryLimit": "1Gi", "memoryRequest": "1Gi" } credentials: |- { "storageSpecSecretName": "storage-config", "storageSecretNameAnnotation": "serving.kserve.io/storageSecretName", "gcs": { "gcsCredentialFileName": "gcloud-application-credentials.json" }, "s3": { "s3AccessKeyIDName": "AWS_ACCESS_KEY_ID", "s3SecretAccessKeyName": "AWS_SECRET_ACCESS_KEY", "s3Endpoint": "", "s3UseHttps": "", "s3Region": "", "s3VerifySSL": "", "s3UseVirtualBucket": "", "s3UseAccelerate": "", "s3UseAnonymousCredential": "", "s3CABundleConfigMap": "odh-kserve-custom-ca-bundle", "s3CABundle": "/etc/ssl/custom-certs/cabundle.crt" } } deploy: |- { "defaultDeploymentMode": "RawDeployment" } explainers: '{}' inferenceService: |- { "serviceAnnotationDisallowedList": [ "autoscaling.knative.dev/min-scale", "autoscaling.knative.dev/max-scale", "internal.serving.kserve.io/storage-initializer-sourceuri", "kubectl.kubernetes.io/last-applied-configuration", "security.opendatahub.io/enable-auth", "networking.knative.dev/visibility", "haproxy.router.openshift.io/timeout", "opendatahub.io/hardware-profile-name", "opendatahub.io/hardware-profile-namespace" ] } ingress: |- { "enableGatewayApi": false, "kserveIngressGateway": "openshift-ingress/openshift-ai-inference", "enableLLMInferenceServiceTLS": true, "ingressGateway": "knative-serving/knative-ingress-gateway", "knativeLocalGatewayService": "knative-local-gateway.istio-system.svc.cluster.local", "ingressService": "istio-ingressgateway.istio-system.svc.cluster.local", "localGateway": "istio-system/kserve-local-gateway", "localGatewayService": "kserve-local-gateway.istio-system.svc.cluster.local", "ingressDomain": "apps.2fdd46dd-8f0b-4fb1-90d3-21460f906ff3.prod.konfluxeaas.com", "ingressClassName": "openshift-default", "domainTemplate": "{{ .Name }}-{{ .Namespace }}.{{ .IngressDomain }}", "urlScheme": "http", "disableIstioVirtualHost": false, "disableIngressCreation": true } localModel: |- { "enabled": false, "jobNamespace": "opendatahub", "defaultJobImage" : "REPLACE_IMAGE", "fsGroup": 1000, "localModelAgentImage": "REPLACE_IMAGE", "localModelAgentCpuRequest": "100m", "localModelAgentMemoryRequest": "200Mi", "localModelAgentCpuLimit": "100m", "localModelAgentMemoryLimit": "300Mi" } logger: |- { "cpuLimit": "1", "cpuRequest": "100m", "defaultUrl": "http://default-broker", "image": "quay.io/opendatahub/kserve-agent@sha256:8e66bcaed2f24ffcb25d3d205c20817226e734d9f767ce87236b320060cc44f3", "memoryLimit": "1Gi", "memoryRequest": "100Mi" } metricsAggregator: |- { "enableMetricAggregation": "false", "enablePrometheusScraping" : "false" } oauthProxy: |- { "cpuLimit": "200m", "cpuRequest": "100m", "image": "quay.io/opendatahub/odh-kube-auth-proxy@sha256:dcb09fbabd8811f0956ef612a0c9ddd5236804b9bd6548a0647d2b531c9d01b3", "memoryLimit": "128Mi", "memoryRequest": "64Mi" } openshiftConfig: |- { "modelcachePermissionFixImage": "REPLACE_IMAGE" } opentelemetryCollector: |- { "scrapeInterval": "5s", "metricReceiverEndpoint": "keda-otel-scaler.keda.svc:4317", "metricScalerEndpoint": "keda-otel-scaler.keda.svc:4318", "resource": { "cpuLimit": "1", "memoryLimit": "2Gi", "cpuRequest": "200m", "memoryRequest": "512Mi" } } router: |- { "cpuLimit": "1", "cpuRequest": "100m", "headers": { "propagate": [ "Authorization" ] }, "image": "quay.io/opendatahub/kserve-router@sha256:3b3b115d46eef70b552cbfe98b8bff65aa58d128941ae255587d75b0e6a21c53", "memoryLimit": "1Gi", "memoryRequest": "100Mi" } security: |- { "autoMountServiceAccountToken": false } service: |- { "serviceClusterIPNone": false } storageInitializer: |- { "cpuLimit": "1", "cpuModelcar": "10m", "cpuRequest": "100m", "enableModelcar": true, "image": "quay.io/opendatahub/kserve-storage-initializer@sha256:7891564b4e51a5ce092a1e9384ed42f60185d9ae7d08ed1c84a6936d5b51591b", "memoryLimit": "24Gi", "memoryModelcar": "15Mi", "memoryRequest": "100Mi" } kind: ConfigMap metadata: creationTimestamp: "2026-04-16T18:24:26Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:_example: {} f:agent: {} f:autoscaler: {} f:autoscaling-wva-controller-config: {} f:batcher: {} f:credentials: {} f:deploy: {} f:explainers: {} f:inferenceService: {} f:localModel: {} f:logger: {} f:metricsAggregator: {} f:oauthProxy: {} f:openshiftConfig: {} f:opentelemetryCollector: {} f:router: {} f:security: {} f:service: {} f:storageInitializer: {} manager: kubectl operation: Apply time: "2026-04-16T18:24:26Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:ingress: {} manager: kubectl-patch operation: Update time: "2026-04-16T18:25:03Z" name: inferenceservice-config namespace: kserve resourceVersion: "12506" uid: d19d77e0-84ea-4a32-bf7d-321b9dc70069 - apiVersion: v1 data: kserve-agent: quay.io/opendatahub/kserve-agent@sha256:8e66bcaed2f24ffcb25d3d205c20817226e734d9f767ce87236b320060cc44f3 kserve-controller: quay.io/opendatahub/kserve-controller@sha256:bc9c9cc004d4337fab93c43b07888d6382806de3edc3f1be3da6d834885f1c14 kserve-llm-d: registry.redhat.io/rhaiis/vllm-cuda-rhel9@sha256:fc68d623d1bfc36c8cb2fe4a71f19c8578cfb420ce8ce07b20a02c1ee0be0cf3 kserve-llm-d-amd-rocm: registry.redhat.io/rhaiis/vllm-rocm-rhel9@sha256:d9a48add238cc095fa43eeee17c8c4d104de60c4dc623e0bc7f8c4b53b2b2e97 kserve-llm-d-ibm-spyre: registry.redhat.io/rhaiis/vllm-spyre-rhel9@sha256:80ae3e435a5be2c1f117f36599103ab05357917dd6e37f0df6613cb3ac2c13ea kserve-llm-d-inference-scheduler: quay.io/opendatahub/llm-d-inference-scheduler:odh-stable kserve-llm-d-intel-gaudi: registry.redhat.io/rhaii-early-access/vllm-gaudi-rhel9:3.4.0-ea.2 kserve-llm-d-nvidia-cuda: registry.redhat.io/rhaiis/vllm-cuda-rhel9@sha256:fc68d623d1bfc36c8cb2fe4a71f19c8578cfb420ce8ce07b20a02c1ee0be0cf3 kserve-llm-d-routing-sidecar: quay.io/opendatahub/llm-d-routing-sidecar:odh-stable kserve-llm-d-uds-tokenizer: quay.io/opendatahub/llm-d-kv-cache:v0.6.0 kserve-localmodel-controller: quay.io/opendatahub/kserve-localmodel-controller:latest kserve-localmodelnode-agent: quay.io/opendatahub/kserve-localmodelnode-agent:latest kserve-router: quay.io/opendatahub/kserve-router@sha256:3b3b115d46eef70b552cbfe98b8bff65aa58d128941ae255587d75b0e6a21c53 kserve-storage-initializer: quay.io/opendatahub/kserve-storage-initializer@sha256:7891564b4e51a5ce092a1e9384ed42f60185d9ae7d08ed1c84a6936d5b51591b kube-rbac-proxy: quay.io/opendatahub/odh-kube-auth-proxy@sha256:dcb09fbabd8811f0956ef612a0c9ddd5236804b9bd6548a0647d2b531c9d01b3 llmisvc-controller: ghcr.io/opendatahub-io/kserve/odh-kserve-llmisvc-controller:release-v0.17 kind: ConfigMap metadata: creationTimestamp: "2026-04-16T18:24:26Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:kserve-agent: {} f:kserve-controller: {} f:kserve-llm-d: {} f:kserve-llm-d-amd-rocm: {} f:kserve-llm-d-ibm-spyre: {} f:kserve-llm-d-inference-scheduler: {} f:kserve-llm-d-intel-gaudi: {} f:kserve-llm-d-nvidia-cuda: {} f:kserve-llm-d-routing-sidecar: {} f:kserve-llm-d-uds-tokenizer: {} f:kserve-localmodel-controller: {} f:kserve-localmodelnode-agent: {} f:kserve-router: {} f:kserve-storage-initializer: {} f:kube-rbac-proxy: {} f:llmisvc-controller: {} manager: kubectl operation: Apply time: "2026-04-16T18:24:26Z" name: kserve-parameters namespace: kserve resourceVersion: "12101" uid: 90d00276-e1b5-491b-872f-29fa3e2a18a0 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIcGzcYl9AdHowDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDQxNjE4MTAzN1oX DTM2MDQxMzE4MTAzN1owJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArM8pFBdup1FR NMidmhznqCYcaHj8eFGRX77TygsoN3d3jTeWh7af+jDxz9jxEjXToqyrv4bnEbyn qgehVZFUXaGBNg6yVQgzTdjzb9sAnuCnOHgw4+yijB3qk0yDLvCccdKEiOphhe5c KrVovY7asbhQ6hcmyIcKdSSCGm+nMVcqmkVo82WAcSyK/XamncL2fv/8ETdM1R5N JqsplpanvcLM6mMtjJyJ9AufJDiehumg5ZtDaOW+MXQAWh/ofGVRhb93D7r2iWYS Z7C2YTwavTXsLp5by6mkjPBqPVGiXqC9B0dLGad0PNA86wJrpF24GrHV8XgVmsuc em23ZSXrWwIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAhyr7PidO9nYMJCRoOatAsjntsbYpU0c9CVfSvTWZFWfooCNe 2CRKJO6r+rHE+EeYwXQULYm/nQpyQQUgShGPpzANBgkqhkiG9w0BAQsFAAOCAQEA FTjPEuWnabfqTcOEE/pFoLRqCl8DMCamjNYfSUQaINomrhOq1vEpei1ZUscDlTF0 OOAOVDoWqImiNNX9NyjbPND9Vmp+s+AjQCX8kIE35lrs0b6IlEwIwwg14HW+Vr/w NyIP4lUN9cpz6sgvxSULLXqElJy2v+rrJTPQ+6rmOkr945NawJIiqaV6fMW6W3Hx k0kVNVgaBYjSgvr6/Z5n1iwIjiguhC0uKhMsRv/SQThYNCDEU4BOsq1LZdPYXNoU 9VpXzl32CmVqYXXuSSoU3LY5Q4Ehd5h0hD4EGvQDkTBtE37TosWW4YBb1cbHfxF7 6Lt0h8SeSzp7QOZQ+NHIZw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIVOERrt9z/j8wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDQxNjE4MTEzMVoX DTI3MDQxNjE4MTEzMVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AMGiNg6OBo8+IeaHJJ1aLP93C5KQWzd7R+GpM/6Z6b4NiyRrf2CfXNZ/Jd9XgI3U R1Z6ECqba1i0/dEu5rTLDzM4/gWSAeUcPSjnTYhCu7Ho2iHqSOUZmc6OW/zUGgta Z4KBFVWD51Ztm+ilCwZhcp7kg8IUEdg+dqyt4h1ZG3+GRlv/uIuyEXQeMv+ws+rb VFtM9KY5PyUMDzwLVW6bNqP14MaZdcLnXTy+xRrgbl9opPnEkT/zbFv57V8cfSnD U/I7vBIX/M1BjoymHLWzzmOaj8W8Lux2w3Qv6FU3iyOyCqUxDgTlMSurEEV4K7l5 ZSfGv9LLreH2girMVtgeJUUCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAnGwrgflWddo1TD1KrEUebvgb/1PFnPpXtg6du0oxalvoKlGHTQ1ZTSbE HCGpF5Q/pI1WEXBqAoUdBstetAfAkzBLBgNVHSMERDBCgECHKvs+J072dgwkJGg5 q0CyOe2xtilTRz0JV9K9NZkVZ+igI17YJEok7qv6scT4R5jBdBQtib+dCnJBBSBK EY+nMEsGA1UdEQREMEKCQCouYXBwcy4yZmRkNDZkZC04ZjBiLTRmYjEtOTBkMy0y MTQ2MGY5MDZmZjMucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAAS4Kket2DvlBvd0TMwbc6GQyXxejpUpXyaVXSGixRvG2jjizsD5yPi5tFBT 2lyfpXW1FI5/IhTieaxbTGRI7ZEwTozeS9Sp35BcUf0XS3F5eq7IdZUSZItXglLU 23AK3kazl4IgCxf+om/SLo3IZn48suhK3havvPItRj3Fp9hilszhc20BEscoCGDx +16BrB4JNZxsICYPx1DJvCfvWw5i0x7ECE9dLiARiA74ustaO+NzTbPMAKI5EZDa q5TEcjobEDJd4YafpaX55bX/lQIHEN0WPkYm7DC7CrSepbze3d8pvM6lL6aNnFy2 l6U4Hfh44pPA2U9z6CdG5/20lzo= -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: kubernetes.io/description: Contains a CA bundle that can be used to verify the kube-apiserver when using internal endpoints such as the internal service IP or kubernetes.default.svc. No other usage is guaranteed across distributions of Kubernetes clusters. creationTimestamp: "2026-04-16T18:24:11Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: .: {} f:ca.crt: {} f:metadata: f:annotations: .: {} f:kubernetes.io/description: {} manager: kube-controller-manager operation: Update time: "2026-04-16T18:24:11Z" name: kube-root-ca.crt namespace: kserve resourceVersion: "11909" uid: 012a275f-c876-40d8-8e52-fced9a733963 - apiVersion: v1 data: cabundle.crt: |- -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIEyoxfuupfnowDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc3NjM2MzYwMjAe Fw0yNjA0MTYxODIwMDFaFw0yODA2MTQxODIwMDJaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3NzYzNjM2MDIwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3tmTV5OSFiKwj4g5GBrWNHEOOW6SLUfk8 F+3d1jOTzAFfTLChMZD8LzIbQ0msZM3/ix4xRqinj3kyHEaA+1igbbYqPbgwE79H 9O0DeE8LkVeIZDcsItczVQIaHIN+h5tlyY4Dn0fbHR5fjtEb1anIQrYPx4vHT3FT ssMA2VqO6dDYAp4XUEY7KT1qEtZe/44O0Tj2cRqOLXzR9OnceeZ1OvXidfczkHsw 57tjaHs8vxbYy0AEClyUP/IX+qtXI118DCwG0i4ZaR5qdHvxIRThXti2p1oKb1M5 pDq3Dr3z2fkfLD3bGt4fCrxlPMKo2xMKY3Bm0DKJlbOzkZfNwDrBAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTzemIc ALdQDxlJzNicMwwFhZ38iDAfBgNVHSMEGDAWgBTzemIcALdQDxlJzNicMwwFhZ38 iDANBgkqhkiG9w0BAQsFAAOCAQEAn5J92b8Yv3U3DEXDST6LKFH1gqgzs03NVXYQ vVmg7dFUPVyYi9lnDckIqxzO/rQWI9lR7/AKJ9l6mfkbHFDQhYWuUo5TAfJJ9XrS LzWkFFMYvkYIZtkCDX+BQ0hYNJt5KP47SkkbTxcnlzAlzAV8NHItqZzTzfkRi+di 23da854WVAUJHbo0zuwd+j9WuQoJCe+c3lbN9AeHecImNcPRTGJS6nUlv5qOXVpS droxJ6cqjtCfxe2BgDnFtB3MXV/oHx2+mVgMSQ1xl6hn8RV+12FKV/tkNaShk6Or 3Hr89rT2g0PU5UfHqFT9/2Y3r+2a3DEIo1e4OcR2mDKqoF3E3g== -----END CERTIFICATE----- kind: ConfigMap metadata: creationTimestamp: "2026-04-16T18:25:40Z" labels: opendatahub.io/managed: "true" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: .: {} f:cabundle.crt: {} f:metadata: f:labels: .: {} f:opendatahub.io/managed: {} manager: manager operation: Update time: "2026-04-16T18:25:40Z" name: odh-kserve-custom-ca-bundle namespace: kserve resourceVersion: "12907" uid: 005ccf5a-1f91-4ec2-a70b-6c9dfdb599d1 - apiVersion: v1 data: guardrails-detector-huggingface-runtime-image: quay.io/trustyai/guardrails-detector-huggingface-runtime:latest kserve-state: managed mlserver-image: quay.io/opendatahub/mlserver:fast modelregistry-state: removed nim-state: managed odh-model-controller: quay.io/opendatahub/odh-model-controller:fast odh-model-serving-api: quay.io/opendatahub/odh-model-controller:odh-model-serving-api-fast ovms-image: quay.io/opendatahub/openvino_model_server:2025.1-release ray-tls-generator-image: registry.redhat.io/ubi9/ubi-minimal:latest tgis-image: quay.io/opendatahub/text-generation-inference:fast vllm-cpu-image: quay.io/vllm/vllm:latest vllm-cpu-x86-image: quay.io/vllm/vllm:latest vllm-cuda-image: quay.io/vllm/vllm-cuda:latest vllm-gaudi-image: quay.io/opendatahub/vllm:fast-gaudi vllm-rocm-image: quay.io/vllm/vllm-rocm:latest vllm-spyre-image: quay.io/vllm/vllm:latest kind: ConfigMap metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","data":{"guardrails-detector-huggingface-runtime-image":"quay.io/trustyai/guardrails-detector-huggingface-runtime:latest","kserve-state":"managed","mlserver-image":"quay.io/opendatahub/mlserver:fast","modelregistry-state":"removed","nim-state":"managed","odh-model-controller":"quay.io/opendatahub/odh-model-controller:fast","odh-model-serving-api":"quay.io/opendatahub/odh-model-controller:odh-model-serving-api-fast","ovms-image":"quay.io/opendatahub/openvino_model_server:2025.1-release","ray-tls-generator-image":"registry.redhat.io/ubi9/ubi-minimal:latest","tgis-image":"quay.io/opendatahub/text-generation-inference:fast","vllm-cpu-image":"quay.io/vllm/vllm:latest","vllm-cpu-x86-image":"quay.io/vllm/vllm:latest","vllm-cuda-image":"quay.io/vllm/vllm-cuda:latest","vllm-gaudi-image":"quay.io/opendatahub/vllm:fast-gaudi","vllm-rocm-image":"quay.io/vllm/vllm-rocm:latest","vllm-spyre-image":"quay.io/vllm/vllm:latest"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"odh-model-controller-parameters","namespace":"kserve"}} creationTimestamp: "2026-04-16T18:25:36Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: .: {} f:guardrails-detector-huggingface-runtime-image: {} f:kserve-state: {} f:mlserver-image: {} f:modelregistry-state: {} f:nim-state: {} f:odh-model-controller: {} f:odh-model-serving-api: {} f:ovms-image: {} f:ray-tls-generator-image: {} f:tgis-image: {} f:vllm-cpu-image: {} f:vllm-cpu-x86-image: {} f:vllm-cuda-image: {} f:vllm-gaudi-image: {} f:vllm-rocm-image: {} f:vllm-spyre-image: {} f:metadata: f:annotations: .: {} f:kubectl.kubernetes.io/last-applied-configuration: {} manager: kubectl-client-side-apply operation: Update time: "2026-04-16T18:25:36Z" name: odh-model-controller-parameters namespace: kserve resourceVersion: "12776" uid: 967b0ade-f776-425a-a71a-0b8d45d88cbb - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIEyoxfuupfnowDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc3NjM2MzYwMjAe Fw0yNjA0MTYxODIwMDFaFw0yODA2MTQxODIwMDJaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3NzYzNjM2MDIwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3tmTV5OSFiKwj4g5GBrWNHEOOW6SLUfk8 F+3d1jOTzAFfTLChMZD8LzIbQ0msZM3/ix4xRqinj3kyHEaA+1igbbYqPbgwE79H 9O0DeE8LkVeIZDcsItczVQIaHIN+h5tlyY4Dn0fbHR5fjtEb1anIQrYPx4vHT3FT ssMA2VqO6dDYAp4XUEY7KT1qEtZe/44O0Tj2cRqOLXzR9OnceeZ1OvXidfczkHsw 57tjaHs8vxbYy0AEClyUP/IX+qtXI118DCwG0i4ZaR5qdHvxIRThXti2p1oKb1M5 pDq3Dr3z2fkfLD3bGt4fCrxlPMKo2xMKY3Bm0DKJlbOzkZfNwDrBAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTzemIc ALdQDxlJzNicMwwFhZ38iDAfBgNVHSMEGDAWgBTzemIcALdQDxlJzNicMwwFhZ38 iDANBgkqhkiG9w0BAQsFAAOCAQEAn5J92b8Yv3U3DEXDST6LKFH1gqgzs03NVXYQ vVmg7dFUPVyYi9lnDckIqxzO/rQWI9lR7/AKJ9l6mfkbHFDQhYWuUo5TAfJJ9XrS LzWkFFMYvkYIZtkCDX+BQ0hYNJt5KP47SkkbTxcnlzAlzAV8NHItqZzTzfkRi+di 23da854WVAUJHbo0zuwd+j9WuQoJCe+c3lbN9AeHecImNcPRTGJS6nUlv5qOXVpS droxJ6cqjtCfxe2BgDnFtB3MXV/oHx2+mVgMSQ1xl6hn8RV+12FKV/tkNaShk6Or 3Hr89rT2g0PU5UfHqFT9/2Y3r+2a3DEIo1e4OcR2mDKqoF3E3g== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-04-16T18:24:11Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: {} f:metadata: f:annotations: .: {} f:service.beta.openshift.io/inject-cabundle: {} manager: kube-controller-manager operation: Update time: "2026-04-16T18:24:11Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-04-16T18:24:11Z" name: openshift-service-ca.crt namespace: kserve resourceVersion: "11919" uid: ace560a8-2716-46d4-b9aa-452bbd46aa2b kind: ConfigMapList metadata: resourceVersion: "33145"