@@ -31,6 +31,11 @@ import (
3131 k8serrors "k8s.io/apimachinery/pkg/api/errors"
3232 "k8s.io/apimachinery/pkg/types"
3333 "sigs.k8s.io/controller-runtime/pkg/client"
34+ "sigs.k8s.io/controller-runtime/pkg/log"
35+ )
36+
37+ const (
38+ KServeControllerName = "kserve-controller-manager"
3439)
3540
3641func IsKServeStandardDeploymentMode (deploymentMode kserveconstants.DeploymentModeType ) bool {
@@ -43,6 +48,8 @@ func IsKServeKnativeDeploymentMode(deploymentMode kserveconstants.DeploymentMode
4348
4449func GetKServeDeploymentMode (ctx context.Context , k8sClient client.Client ,
4550 podAnnotations map [string ]string , isvcNamespacedName * types.NamespacedName ) (kserveconstants.DeploymentModeType , error ) {
51+ logger := log .FromContext (ctx ).WithName ("KServe" ).WithName ("Deployment Mode" )
52+
4653 var annotations map [string ]string
4754 var deployConfig * kservev1beta1.DeployConfig
4855 var statusDeploymentMode string
@@ -74,6 +81,9 @@ func GetKServeDeploymentMode(ctx context.Context, k8sClient client.Client,
7481 if err != nil {
7582 return "" , err
7683 }
84+ } else {
85+ logger .V (1 ).Info ("ConfigMap inferenceservice-config is not found in the cluster, skipping the " +
86+ "default deployment mode check from the ConfigMap" )
7787 }
7888
7989 // Try to get the deployment mode from the InferenceService status if it exists.
@@ -87,15 +97,21 @@ func GetKServeDeploymentMode(ctx context.Context, k8sClient client.Client,
8797 if ! k8serrors .IsNotFound (err ) {
8898 return "" , err
8999 }
100+ logger .V (1 ).Info ("InferenceService not found, deployment mode from status is not available" ,
101+ "InferenceService" , isvcNamespacedName .String ())
90102 } else {
91103 statusDeploymentMode = isvc .Status .DeploymentMode
92104 }
105+ } else {
106+ logger .V (1 ).Info ("InferenceService name is not set, skipping deployment mode check from InferenceService status" )
93107 }
94108 } else {
109+ logger .V (1 ).Info ("k8sClient is nil, skipping default deployment mode retrieval from the inferenceservice-config ConfigMap, " +
110+ "skipping deployment mode check from InferenceService status, using the annotations only" )
95111 annotations = podAnnotations
96112 }
97113
98- deploymentMode := getDeploymentMode (statusDeploymentMode , annotations , deployConfig )
114+ deploymentMode := getDeploymentMode (ctx , statusDeploymentMode , annotations , deployConfig )
99115 return deploymentMode , nil
100116}
101117
@@ -113,10 +129,14 @@ case 2: serving.kserve.org/deploymentMode is set
113129ODH 3.0 supports "RawDeployment", "Serverless", and doesn't accept "Standard", "Knative"
114130Ref: https://github.com/opendatahub-io/kserve/blob/cf2920b4276d97fc2d2d700efe4879749a56b418/pkg/controller/v1beta1/inferenceservice/utils/utils.go#L220
115131*/
116- func getDeploymentMode (statusDeploymentMode string , annotations map [string ]string ,
132+ func getDeploymentMode (ctx context. Context , statusDeploymentMode string , annotations map [string ]string ,
117133 deployConfig * kservev1beta1.DeployConfig ) kserveconstants.DeploymentModeType {
134+ logger := log .FromContext (ctx ).WithName ("KServe" ).WithName ("Deployment Mode" )
135+
118136 // First priority is the deploymentMode recorded in the status
119137 if len (statusDeploymentMode ) != 0 {
138+ logger .Info ("using deployment mode from InferenceService status" ,
139+ "Deployment Mode" , statusDeploymentMode )
120140 return kserveconstants .DeploymentModeType (statusDeploymentMode )
121141 }
122142
@@ -132,16 +152,30 @@ func getDeploymentMode(statusDeploymentMode string, annotations map[string]strin
132152 deploymentMode == string (kserveconstants .ModelMeshDeployment ) ||
133153 deploymentMode == string (kserveconstants .LegacyRawDeployment ) ||
134154 deploymentMode == string (kserveconstants .LegacyServerless )) {
155+ logger .Info ("using deployment mode from annotations" ,
156+ "Deployment Mode" , deploymentMode )
135157 return kserveconstants .DeploymentModeType (deploymentMode )
136158 }
159+
160+ if ok {
161+ logger .V (1 ).Info ("warning: deployment mode annotation found but value is invalid" ,
162+ "Deployment Mode" , deploymentMode )
163+ } else {
164+ logger .V (1 ).Info ("warning: deployment mode annotation not found in annotations" )
165+ }
137166 }
138167
139168 if deployConfig != nil {
140169 // Finally, if an InferenceService is being created and does not explicitly specify a DeploymentMode
170+ logger .Info ("using the default deployment mode from the inferenceservice-config ConfigMap" ,
171+ "Deployment Mode" , deployConfig .DefaultDeploymentMode )
141172 return kserveconstants .DeploymentModeType (deployConfig .DefaultDeploymentMode )
142173 }
143174
144175 // If InferenceServicesConfig doesn't exist, use the default deployment mode
176+ // For ODH, InferenceServicesConfig is always bundled, and this line should not be reached
177+ logger .Info ("deployment mode is not found in any configurations, using default deployment mode" ,
178+ "Deployment Mode" , kserveconstants .DefaultDeployment )
145179 return kserveconstants .DefaultDeployment
146180}
147181
@@ -183,12 +217,13 @@ func newDeployConfig(isvcConfigMap *corev1.ConfigMap) (*kservev1beta1.DeployConf
183217
184218func getISVCConfigMap (ctx context.Context , k8sClient client.Client ) (* corev1.ConfigMap , error ) {
185219 var namespace string
220+ // Find the namespace of the KServe controller
186221 deploymentList := & appsv1.DeploymentList {}
187- if err := k8sClient .List (ctx , deploymentList , client.HasLabels {"app.kubernetes.io/name: kserve-controller-manager" }); err != nil {
222+ if err := k8sClient .List (ctx , deploymentList , client.MatchingLabels {"app.kubernetes.io/name" : KServeControllerName }); err != nil {
188223 return nil , err
189224 }
190225 for _ , deployment := range deploymentList .Items {
191- if deployment .GetName () == "kserve-controller-manager" {
226+ if deployment .GetName () == KServeControllerName {
192227 namespace = deployment .Namespace
193228 break
194229 }
@@ -198,6 +233,7 @@ func getISVCConfigMap(ctx context.Context, k8sClient client.Client) (*corev1.Con
198233 return nil , fmt .Errorf ("failed to find the namespace of KServe Deployment" )
199234 }
200235
236+ // Get the inferenceservice-config ConfigMap in the namespace
201237 isvcConfigMap := & corev1.ConfigMap {}
202238 err := k8sClient .Get (ctx ,
203239 types.NamespacedName {
0 commit comments