You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by wm...@apache.org on 2024/10/31 17:54:43 UTC

(incubator-kie-kogito-serverless-operator) branch main updated: kie-kogito-serverless-operator-559: Add the ability to scale the Jobs Service to 0 (#563)

This is an automated email from the ASF dual-hosted git repository.

wmedvedeo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-serverless-operator.git


The following commit(s) were added to refs/heads/main by this push:
     new ae7dde39 kie-kogito-serverless-operator-559: Add the ability to scale the Jobs Service to 0 (#563)
ae7dde39 is described below

commit ae7dde3987cd16f0540c7e2e92d2b4c7ca1ef4a0
Author: Walter Medvedeo <wm...@gmail.com>
AuthorDate: Thu Oct 31 18:54:39 2024 +0100

    kie-kogito-serverless-operator-559: Add the ability to scale the Jobs Service to 0 (#563)
---
 internal/controller/platform/k8s.go               |  4 ++++
 internal/controller/platform/services/services.go | 18 ++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/internal/controller/platform/k8s.go b/internal/controller/platform/k8s.go
index b5c0bde1..5725c746 100644
--- a/internal/controller/platform/k8s.go
+++ b/internal/controller/platform/k8s.go
@@ -159,6 +159,7 @@ func createOrUpdateDeployment(ctx context.Context, client client.Client, platfor
 			MatchLabels: selectorLbl,
 		},
 		Replicas: &replicas,
+		Strategy: psh.GetDeploymentStrategy(),
 		Template: corev1.PodTemplateSpec{
 			ObjectMeta: metav1.ObjectMeta{
 				Labels: lbl,
@@ -200,6 +201,9 @@ func createOrUpdateDeployment(ctx context.Context, client client.Client, platfor
 	if op, err := controllerutil.CreateOrUpdate(ctx, client, serviceDeployment, func() error {
 		knative.SaveKnativeData(&serviceDeploymentSpec.Template.Spec, &serviceDeployment.Spec.Template.Spec)
 		err := mergo.Merge(&(serviceDeployment.Spec), serviceDeploymentSpec, mergo.WithOverride)
+		// mergo.Merge algorithm is not setting the serviceDeployment.Spec.Replicas when the
+		// *serviceDeploymentSpec.Replicas is 0. Making impossible to scale to zero. Ensure the value.
+		serviceDeployment.Spec.Replicas = serviceDeploymentSpec.Replicas
 		if err != nil {
 			return err
 		}
diff --git a/internal/controller/platform/services/services.go b/internal/controller/platform/services/services.go
index bf448728..6c9644ad 100644
--- a/internal/controller/platform/services/services.go
+++ b/internal/controller/platform/services/services.go
@@ -22,6 +22,8 @@ package services
 import (
 	"fmt"
 
+	appsv1 "k8s.io/api/apps/v1"
+
 	"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/cfg"
 	"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/knative"
 	"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/profiles"
@@ -70,6 +72,8 @@ type PlatformServiceHandler interface {
 	GetPodResourceRequirements() corev1.ResourceRequirements
 	// GetReplicaCount Returns the default pod replica count for the given service
 	GetReplicaCount() int32
+	// GetDeploymentStrategy Returns the deployment strategy for the service
+	GetDeploymentStrategy() appsv1.DeploymentStrategy
 
 	// MergeContainerSpec performs a merge with override using the containerSpec argument and the expected values based on the service's pod template specifications. The returning
 	// object is the merged result
@@ -255,6 +259,10 @@ func (d *DataIndexHandler) GetReplicaCount() int32 {
 	return 1
 }
 
+func (d *DataIndexHandler) GetDeploymentStrategy() appsv1.DeploymentStrategy {
+	return appsv1.DeploymentStrategy{}
+}
+
 func (d *DataIndexHandler) GetServiceCmName() string {
 	return fmt.Sprintf("%s-props", d.GetServiceName())
 }
@@ -383,9 +391,19 @@ func (j *JobServiceHandler) GetPodResourceRequirements() corev1.ResourceRequirem
 }
 
 func (j *JobServiceHandler) GetReplicaCount() int32 {
+	if j.platform.Spec.Services.JobService.PodTemplate.Replicas != nil && *j.platform.Spec.Services.JobService.PodTemplate.Replicas == 0 {
+		return 0
+	}
 	return 1
 }
 
+func (j *JobServiceHandler) GetDeploymentStrategy() appsv1.DeploymentStrategy {
+	return appsv1.DeploymentStrategy{
+		Type:          appsv1.RecreateDeploymentStrategyType,
+		RollingUpdate: nil,
+	}
+}
+
 func (j JobServiceHandler) MergeContainerSpec(containerSpec *corev1.Container) (*corev1.Container, error) {
 	return mergeContainerSpec(containerSpec, &j.platform.Spec.Services.JobService.PodTemplate.Container)
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org