Skip to content

Commit 8e46c1c

Browse files
author
Robin
committed
allow external hpa
Signed-off-by: Robin <[email protected]>
1 parent f8cc7aa commit 8e46c1c

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

config/internal/base/deployment.yaml.tmpl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ metadata:
2222
app.kubernetes.io/name: modelmesh-controller
2323
name: {{.ServiceName}}-{{.Name}}
2424
spec:
25+
{{if ge .Replicas 0}}
2526
replicas: {{.Replicas}}
27+
{{end}}
2628
selector:
2729
matchLabels:
2830
modelmesh-service: {{.ServiceName}}

controllers/autoscaler/autoscaler_reconciler.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ func createAutoscaler(client client.Client,
104104
// Set HPA reconciler even though AutoscalerClass is None to delete existing hpa
105105
as.HPA = hpa.NewHPAReconciler(client, scheme, runtimeMeta, mmDeploymentName, mmNamespace)
106106
return as, nil
107+
case constants.AutoscalerClassExternal:
108+
// Set HPA reconciler even though AutoscalerClass is External to delete existing hpa
109+
as.HPA = hpa.NewHPAReconciler(client, scheme, runtimeMeta, mmDeploymentName, mmNamespace)
110+
return as, nil
107111
default:
108112
return nil, errors.New("unknown autoscaler class type.")
109113
}

controllers/modelmesh/modelmesh.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ type Deployment struct {
6666
PullerImage string
6767
PullerImageCommand []string
6868
PullerResources *corev1.ResourceRequirements
69-
Replicas uint16
69+
Replicas int32
7070
Port uint16
7171
TLSSecretName string
7272
TLSClientAuth string

controllers/servingruntime_controller.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828

2929
kserveapi "github.com/kserve/kserve/pkg/apis/serving/v1alpha1"
3030
"github.com/kserve/kserve/pkg/apis/serving/v1beta1"
31+
"github.com/kserve/kserve/pkg/constants"
3132
api "github.com/kserve/modelmesh-serving/apis/serving/v1alpha1"
3233
"github.com/kserve/modelmesh-serving/controllers/autoscaler"
3334
"github.com/kserve/modelmesh-serving/controllers/modelmesh"
@@ -291,7 +292,12 @@ func (r *ServingRuntimeReconciler) Reconcile(ctx context.Context, req ctrl.Reque
291292

292293
//ScaleToZero or None autoscaler case
293294
if replicas == uint16(0) || as.Autoscaler.AutoscalerClass == autoscaler.AutoscalerClassNone {
294-
mmDeployment.Replicas = replicas
295+
mmDeployment.Replicas = int32(replicas)
296+
if _, err = as.Reconcile(true); err != nil {
297+
return ctrl.Result{}, fmt.Errorf("HPA reconcile error: %w", err)
298+
}
299+
} else if as.Autoscaler.AutoscalerClass == constants.AutoscalerClassExternal {
300+
mmDeployment.Replicas = -1
295301
if _, err = as.Reconcile(true); err != nil {
296302
return ctrl.Result{}, fmt.Errorf("HPA reconcile error: %w", err)
297303
}
@@ -309,9 +315,9 @@ func (r *ServingRuntimeReconciler) Reconcile(ctx context.Context, req ctrl.Reque
309315
return ctrl.Result{}, fmt.Errorf("Could not get the deployment for the servingruntime : %w", err)
310316
}
311317
if *existingDeployment.Spec.Replicas == int32(0) {
312-
mmDeployment.Replicas = uint16(*(as.Autoscaler.HPA.HPA).Spec.MinReplicas)
318+
mmDeployment.Replicas = *(as.Autoscaler.HPA.HPA).Spec.MinReplicas
313319
} else {
314-
mmDeployment.Replicas = uint16(*(existingDeployment.Spec.Replicas))
320+
mmDeployment.Replicas = *(existingDeployment.Spec.Replicas)
315321
}
316322
}
317323

0 commit comments

Comments
 (0)