diff --git a/plugins/scheduler-k3s/templates/chart/certificate.yaml b/plugins/scheduler-k3s/templates/chart/certificate.yaml index 029230020..a16e03a8a 100644 --- a/plugins/scheduler-k3s/templates/chart/certificate.yaml +++ b/plugins/scheduler-k3s/templates/chart/certificate.yaml @@ -1,5 +1,9 @@ -{{- $processName := "PROCESS_NAME" }} -{{- $config := index .Values.processes "PROCESS_NAME" }} +{{- range $processName, $config := .Values.processes }} +# Skip cron jobs +{{- if and (hasKey $config "cron") (hasKey $config.cron "id") }} +{{- continue }} +{{- end }} + {{- if and $config.web.tls.enabled $config.web.domains }} --- apiVersion: cert-manager.io/v1 @@ -34,3 +38,4 @@ spec: - {{ $domain.name }} {{- end }} {{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/cron-job.yaml b/plugins/scheduler-k3s/templates/chart/cron-job.yaml index 412e57916..cad22ce7c 100644 --- a/plugins/scheduler-k3s/templates/chart/cron-job.yaml +++ b/plugins/scheduler-k3s/templates/chart/cron-job.yaml @@ -1,5 +1,8 @@ -{{- $processName := "CRON_ID" }} -{{- $config := index .Values.processes "CRON_ID" }} +{{- range $processName, $config := .Values.processes }} +# Only process cron jobs +{{- if not (and (hasKey $config "cron") (hasKey $config.cron "id")) }} +{{- continue }} +{{- end }} --- apiVersion: batch/v1 kind: CronJob @@ -113,3 +116,4 @@ spec: successfulJobsHistoryLimit: 10 suspend: false timeZone: Etc/UTC +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/deployment.yaml b/plugins/scheduler-k3s/templates/chart/deployment.yaml index 3bb1d6e64..6d06ec008 100644 --- a/plugins/scheduler-k3s/templates/chart/deployment.yaml +++ b/plugins/scheduler-k3s/templates/chart/deployment.yaml @@ -1,5 +1,9 @@ -{{- $processName := "PROCESS_NAME" }} -{{- $config := index .Values.processes "PROCESS_NAME" }} +{{- range $processName, $config := .Values.processes }} +# Skip cron jobs +{{- if and (hasKey $config "cron") (hasKey $config.cron "id") }} +{{- continue }} +{{- end }} + {{- $mappings := dict }} {{- if eq $processName "web" }} {{- range $pdx, $port_map := $config.web.port_maps }} @@ -143,3 +147,4 @@ spec: {{- end }} {{- end }} {{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/https-redirect-middleware.yaml b/plugins/scheduler-k3s/templates/chart/https-redirect-middleware.yaml index 20a3d4429..d81397a53 100644 --- a/plugins/scheduler-k3s/templates/chart/https-redirect-middleware.yaml +++ b/plugins/scheduler-k3s/templates/chart/https-redirect-middleware.yaml @@ -1,5 +1,9 @@ -{{- $processName := "PROCESS_NAME" }} -{{- $config := index .Values.processes "PROCESS_NAME" }} +{{- range $processName, $config := .Values.processes }} +# Skip cron jobs +{{- if and (hasKey $config "cron") (hasKey $config.cron "id") }} +{{- continue }} +{{- end }} + {{- if and $config.web.domains (eq $.Values.global.network.ingress_class "traefik") }} --- apiVersion: traefik.io/v1alpha1 @@ -22,3 +26,4 @@ spec: scheme: https permanent: true {{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/ingress-route.yaml b/plugins/scheduler-k3s/templates/chart/ingress-route.yaml index 306e4a7a3..01bf6ff76 100644 --- a/plugins/scheduler-k3s/templates/chart/ingress-route.yaml +++ b/plugins/scheduler-k3s/templates/chart/ingress-route.yaml @@ -1,5 +1,9 @@ -{{- $processName := "PROCESS_NAME" }} -{{- $config := index .Values.processes "PROCESS_NAME" }} +{{- range $processName, $config := .Values.processes }} +# Skip cron jobs +{{- if and (hasKey $config "cron") (hasKey $config.cron "id") }} +{{- continue }} +{{- end }} + {{- if and $config.web.domains (eq $.Values.global.network.ingress_class "traefik") }} {{- $mappings := dict }} {{- range $pdx, $port_map := $config.web.port_maps }} @@ -53,3 +57,4 @@ spec: {{- end }} {{- end }} {{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/ingress.yaml b/plugins/scheduler-k3s/templates/chart/ingress.yaml index 5530525f3..b416c3eab 100644 --- a/plugins/scheduler-k3s/templates/chart/ingress.yaml +++ b/plugins/scheduler-k3s/templates/chart/ingress.yaml @@ -1,8 +1,12 @@ -{{- $processName := "PROCESS_NAME" }} -{{- $config := index .Values.processes "PROCESS_NAME" }} +{{- range $processName, $config := .Values.processes }} +# Skip cron jobs +{{- if and (hasKey $config "cron") (hasKey $config.cron "id") }} +{{- continue }} +{{- end }} + {{- $routeToKeda := false }} {{- if and (eq $processName "web") (and $config.autoscaling (and $config.autoscaling.enabled (eq $config.autoscaling.type "keda"))) }} -{{- if and (.Capabilities.APIVersions.Has "http.keda.sh/v1alpha1") (and $config.autoscaling.http_trigger (eq $config.autoscaling.http_trigger.type "http")) }} +{{- if and ($.Capabilities.APIVersions.Has "http.keda.sh/v1alpha1") (and $config.autoscaling.http_trigger (eq $config.autoscaling.http_trigger.type "http")) }} {{- $routeToKeda = true }} {{- end }} {{- end }} @@ -59,3 +63,4 @@ spec: {{- end }} {{- end }} {{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/keda-http-scaled-object.yaml b/plugins/scheduler-k3s/templates/chart/keda-http-scaled-object.yaml index bd761642f..be6890a96 100644 --- a/plugins/scheduler-k3s/templates/chart/keda-http-scaled-object.yaml +++ b/plugins/scheduler-k3s/templates/chart/keda-http-scaled-object.yaml @@ -1,7 +1,12 @@ -{{- $processName := "PROCESS_NAME" }} -{{- $config := index .Values.processes "PROCESS_NAME" }} +{{- if .Capabilities.APIVersions.Has "http.keda.sh/v1alpha1" -}} +{{- range $processName, $config := .Values.processes }} +# Skip cron jobs +{{- if and (hasKey $config "cron") (hasKey $config.cron "id") }} +{{- continue }} +{{- end }} + {{- if and (eq $processName "web") (and $config.autoscaling (and $config.autoscaling.enabled (eq $config.autoscaling.type "keda"))) }} -{{- if and (.Capabilities.APIVersions.Has "http.keda.sh/v1alpha1") (and $config.autoscaling.http_trigger (eq $config.autoscaling.http_trigger.type "http")) }} +{{- if and $config.autoscaling.http_trigger (eq $config.autoscaling.http_trigger.type "http") }} {{- $mappings := dict }} {{- range $pdx, $port_map := $config.web.port_maps }} {{- $mappings := set $mappings $port_map.name "true" }} @@ -51,3 +56,5 @@ spec: {{- end }} {{- end }} {{- end }} +{{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/keda-interceptor-proxy-service.yaml b/plugins/scheduler-k3s/templates/chart/keda-interceptor-proxy-service.yaml index c12d6411e..4c259c946 100644 --- a/plugins/scheduler-k3s/templates/chart/keda-interceptor-proxy-service.yaml +++ b/plugins/scheduler-k3s/templates/chart/keda-interceptor-proxy-service.yaml @@ -1,7 +1,11 @@ -{{- $processName := "PROCESS_NAME" }} -{{- $config := index .Values.processes "PROCESS_NAME" }} -{{- if and (eq $processName "web") (and $config.autoscaling (and $config.autoscaling.enabled (eq $config.autoscaling.type "keda"))) }} {{- if .Capabilities.APIVersions.Has "http.keda.sh/v1alpha1" -}} +{{- range $processName, $config := .Values.processes }} +# Skip cron jobs +{{- if and (hasKey $config "cron") (hasKey $config.cron "id") }} +{{- continue }} +{{- end }} + +{{- if and (eq $processName "web") (and $config.autoscaling (and $config.autoscaling.enabled (eq $config.autoscaling.type "keda"))) }} --- kind: Service apiVersion: v1 @@ -24,3 +28,4 @@ spec: externalName: keda-add-ons-http-interceptor-proxy.keda.svc.cluster.local {{- end }} {{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/keda-scaled-object.yaml b/plugins/scheduler-k3s/templates/chart/keda-scaled-object.yaml index 24e6ed5e1..b6633556f 100644 --- a/plugins/scheduler-k3s/templates/chart/keda-scaled-object.yaml +++ b/plugins/scheduler-k3s/templates/chart/keda-scaled-object.yaml @@ -1,7 +1,11 @@ -{{- $processName := "PROCESS_NAME" }} -{{- $config := index .Values.processes "PROCESS_NAME" }} -{{- if and $config.autoscaling (and $config.autoscaling.enabled (eq $config.autoscaling.type "keda")) }} {{- if .Capabilities.APIVersions.Has "keda.sh/v1alpha1" -}} +{{- range $processName, $config := .Values.processes }} +# Skip cron jobs +{{- if and (hasKey $config "cron") (hasKey $config.cron "id") }} +{{- continue }} +{{- end }} + +{{- if and $config.autoscaling (and $config.autoscaling.enabled (eq $config.autoscaling.type "keda")) }} --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject @@ -42,3 +46,4 @@ spec: {{- end }} {{- end }} {{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/keda-secret.yaml b/plugins/scheduler-k3s/templates/chart/keda-secret.yaml index 3e40bcc62..e8a3b7aa1 100644 --- a/plugins/scheduler-k3s/templates/chart/keda-secret.yaml +++ b/plugins/scheduler-k3s/templates/chart/keda-secret.yaml @@ -1,5 +1,5 @@ {{- if .Capabilities.APIVersions.Has "keda.sh/v1alpha1" -}} -{{- $config := index .Values.global.keda.authentications "AUTH_NAME" }} +{{- range $authName, $config := .Values.global.keda.authentications }} --- apiVersion: v1 kind: Secret @@ -21,3 +21,4 @@ data: {{- toYaml . | nindent 2 }} {{- end }} {{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/keda-trigger-authentication.yaml b/plugins/scheduler-k3s/templates/chart/keda-trigger-authentication.yaml index c39b94b0a..bf77542be 100644 --- a/plugins/scheduler-k3s/templates/chart/keda-trigger-authentication.yaml +++ b/plugins/scheduler-k3s/templates/chart/keda-trigger-authentication.yaml @@ -1,5 +1,5 @@ {{- if .Capabilities.APIVersions.Has "keda.sh/v1alpha1" -}} -{{- $config := index .Values.global.keda.authentications "AUTH_NAME" }} +{{- range $authName, $config := .Values.global.keda.authentications }} --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication @@ -26,3 +26,4 @@ spec: parameter: {{ $k }} {{- end }} {{- end }} +{{- end }} diff --git a/plugins/scheduler-k3s/templates/chart/service.yaml b/plugins/scheduler-k3s/templates/chart/service.yaml index bf5d3d34b..0b6a02417 100644 --- a/plugins/scheduler-k3s/templates/chart/service.yaml +++ b/plugins/scheduler-k3s/templates/chart/service.yaml @@ -1,5 +1,9 @@ -{{- $processName := "PROCESS_NAME" }} -{{- $config := index .Values.processes "PROCESS_NAME" }} +{{- range $processName, $config := .Values.processes }} +# Skip cron jobs +{{- if and (hasKey $config "cron") (hasKey $config.cron "id") }} +{{- continue }} +{{- end }} + --- apiVersion: v1 kind: Service @@ -28,3 +32,4 @@ spec: app.kubernetes.io/instance: {{ $.Values.global.app_name }}-{{ $processName }} app.kubernetes.io/name: {{ $processName }} app.kubernetes.io/part-of: {{ $.Values.global.app_name }} +{{- end }} diff --git a/plugins/scheduler-k3s/triggers.go b/plugins/scheduler-k3s/triggers.go index d81094cbe..a228ac048 100644 --- a/plugins/scheduler-k3s/triggers.go +++ b/plugins/scheduler-k3s/triggers.go @@ -368,7 +368,7 @@ func TriggerSchedulerDeploy(scheduler string, appName string, imageTag string) e Processes: map[string]ProcessValues{}, } - for authName := range kedaValues.Authentications { + if len(kedaValues.Authentications) > 0 { templateFiles := []string{"keda-secret", "keda-trigger-authentication"} for _, templateName := range templateFiles { b, err := templates.ReadFile(fmt.Sprintf("templates/chart/%s.yaml", templateName)) @@ -376,9 +376,8 @@ func TriggerSchedulerDeploy(scheduler string, appName string, imageTag string) e return fmt.Errorf("Error reading %s template: %w", templateName, err) } - filename := filepath.Join(chartDir, "templates", fmt.Sprintf("%s-%s.yaml", templateName, authName)) - contents := strings.ReplaceAll(string(b), "AUTH_NAME", authName) - err = os.WriteFile(filename, []byte(contents), os.FileMode(0644)) + filename := filepath.Join(chartDir, "templates", fmt.Sprintf("%s.yaml", templateName)) + err = os.WriteFile(filename, b, os.FileMode(0644)) if err != nil { return fmt.Errorf("Error writing %s template: %w", templateName, err) } @@ -535,9 +534,8 @@ func TriggerSchedulerDeploy(scheduler string, appName string, imageTag string) e return fmt.Errorf("Error reading %s template: %w", templateName, err) } - filename := filepath.Join(chartDir, "templates", fmt.Sprintf("%s-%s.yaml", templateName, processType)) - contents := strings.ReplaceAll(string(b), "PROCESS_NAME", processType) - err = os.WriteFile(filename, []byte(contents), os.FileMode(0644)) + filename := filepath.Join(chartDir, "templates", fmt.Sprintf("%s.yaml", templateName)) + err = os.WriteFile(filename, b, os.FileMode(0644)) if err != nil { return fmt.Errorf("Error writing %s template: %w", templateName, err) } @@ -613,15 +611,16 @@ func TriggerSchedulerDeploy(scheduler string, appName string, imageTag string) e Volumes: processVolumes, } values.Processes[cronEntry.ID] = processValues + } + if len(cronEntries) > 0 { b, err := templates.ReadFile("templates/chart/cron-job.yaml") if err != nil { return fmt.Errorf("Error reading cron job template: %w", err) } - cronFile := filepath.Join(chartDir, "templates", fmt.Sprintf("cron-job-%s.yaml", cronEntry.ID)) - contents := strings.ReplaceAll(string(b), "CRON_ID", cronEntry.ID) - err = os.WriteFile(cronFile, []byte(contents), os.FileMode(0644)) + cronFile := filepath.Join(chartDir, "templates", "cron-job.yaml") + err = os.WriteFile(cronFile, b, os.FileMode(0644)) if err != nil { return fmt.Errorf("Error writing cron job template: %w", err) }