From caa2ec98f5445972e675e126fa02b2a9f77fea36 Mon Sep 17 00:00:00 2001 From: Thorsten Hans Date: Wed, 8 Jan 2025 10:24:41 +0100 Subject: [PATCH 1/2] chore: Allow users to configure TTL for Installer Job Signed-off-by: Thorsten Hans --- deploy/helm/templates/deployment.yaml | 2 ++ deploy/helm/values.yaml | 2 ++ internal/controller/shim_controller.go | 10 ++++++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/deploy/helm/templates/deployment.yaml b/deploy/helm/templates/deployment.yaml index 6877fba..e7212c6 100644 --- a/deploy/helm/templates/deployment.yaml +++ b/deploy/helm/templates/deployment.yaml @@ -43,6 +43,8 @@ spec: value: "{{ .Values.rcm.shimDownloaderImage.repository }}:{{ .Values.rcm.shimDownloaderImage.tag | default .Chart.AppVersion }}" - name: SHIM_NODE_INSTALLER_IMAGE value: "{{ .Values.rcm.nodeInstallerImage.repository }}:{{ .Values.rcm.nodeInstallerImage.tag | default .Chart.AppVersion }}" + - name: SHIM_NODE_INSTALLER_JOB_TTL + value: "{{ .Values.rcm.nodeInstallerJob.ttl | default 0 }}" ports: - name: http containerPort: {{ .Values.service.port }} diff --git a/deploy/helm/values.yaml b/deploy/helm/values.yaml index 62b381b..960a24d 100644 --- a/deploy/helm/values.yaml +++ b/deploy/helm/values.yaml @@ -17,6 +17,8 @@ rcm: nodeInstallerImage: repository: "ghcr.io/spinkube/node-installer" tag: "latest" + nodeInstallerJob: + ttl: 0 imagePullSecrets: [] nameOverride: "" diff --git a/internal/controller/shim_controller.go b/internal/controller/shim_controller.go index b006621..110c803 100644 --- a/internal/controller/shim_controller.go +++ b/internal/controller/shim_controller.go @@ -22,6 +22,7 @@ import ( "fmt" "math" "os" + "strconv" "github.com/rs/zerolog/log" "k8s.io/apimachinery/pkg/runtime" @@ -227,7 +228,7 @@ func (sr *ShimReconciler) handleInstallShim(ctx context.Context, shim *rcmv1.Shi case rcmv1.RolloutStrategyTypeRolling: { log.Debug().Msgf("Rolling strategy selected: maxUpdate=%d", shim.Spec.RolloutStrategy.Rolling.MaxUpdate) - return ctrl.Result{}, errors.New("Rolling strategy not implemented yet") + return ctrl.Result{}, errors.New("rolling strategy not implemented yet") } case rcmv1.RolloutStrategyTypeRecreate: { @@ -459,7 +460,12 @@ func (sr *ShimReconciler) createJobManifest(shim *rcmv1.Shim, node *corev1.Node, }, }, } - + // set ttl for the installer job only if specified by the user + if ttlStr := os.Getenv("SHIM_NODE_INSTALLER_JOB_TTL"); ttlStr != "" { + if ttl, err := strconv.Atoi(ttlStr); err == nil && ttl > 0 { + job.Spec.TTLSecondsAfterFinished = ptr(int32(ttl)) + } + } if operation == INSTALL { if err := ctrl.SetControllerReference(shim, job, sr.Scheme); err != nil { return nil, fmt.Errorf("failed to set controller reference: %w", err) From 4e8fa1b08536bd323d80c80cd1c0d17c46f4b55d Mon Sep 17 00:00:00 2001 From: Thorsten Hans Date: Wed, 8 Jan 2025 10:58:21 +0100 Subject: [PATCH 2/2] fix: use ParseInt instead of Atoi to prevent potential integer overflow Signed-off-by: Thorsten Hans --- internal/controller/shim_controller.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/controller/shim_controller.go b/internal/controller/shim_controller.go index 110c803..63052a8 100644 --- a/internal/controller/shim_controller.go +++ b/internal/controller/shim_controller.go @@ -462,7 +462,7 @@ func (sr *ShimReconciler) createJobManifest(shim *rcmv1.Shim, node *corev1.Node, } // set ttl for the installer job only if specified by the user if ttlStr := os.Getenv("SHIM_NODE_INSTALLER_JOB_TTL"); ttlStr != "" { - if ttl, err := strconv.Atoi(ttlStr); err == nil && ttl > 0 { + if ttl, err := strconv.ParseInt(ttlStr, 10, 32); err == nil && ttl > 0 { job.Spec.TTLSecondsAfterFinished = ptr(int32(ttl)) } }