From fd2cfe8080c58964bf14f225de11b20571809fba Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 3 Nov 2024 14:27:09 -0500 Subject: [PATCH] fix: correctly pull the deployment id from an app's helm values when executing dokku run under the k3s scheduler - Fix the internal identifier of deployment_id -> deployment_id - Add tests for both enter and run. --- plugins/scheduler-k3s/template.go | 2 +- plugins/scheduler-k3s/templates/chart/cron-job.yaml | 8 ++++---- .../scheduler-k3s/templates/chart/deployment.yaml | 6 +++--- .../templates/chart/image-pull-secret.yaml | 6 +++--- .../templates/chart/keda-scaled-object.yaml | 2 +- .../scheduler-k3s/templates/chart/keda-secret.yaml | 2 +- .../templates/chart/keda-trigger-authentication.yaml | 2 +- plugins/scheduler-k3s/templates/chart/secret.yaml | 6 +++--- plugins/scheduler-k3s/triggers.go | 7 ++++++- tests/unit/scheduler-k3s-2.bats | 12 ++++++++++++ 10 files changed, 35 insertions(+), 18 deletions(-) diff --git a/plugins/scheduler-k3s/template.go b/plugins/scheduler-k3s/template.go index 6622ba17b..abc628ab3 100644 --- a/plugins/scheduler-k3s/template.go +++ b/plugins/scheduler-k3s/template.go @@ -43,7 +43,7 @@ type AppValues struct { type GlobalValues struct { Annotations ProcessAnnotations `yaml:"annotations,omitempty"` AppName string `yaml:"app_name"` - DeploymentID string `yaml:"deploment_id"` + DeploymentID string `yaml:"deployment_id"` Image GlobalImage `yaml:"image"` Labels ProcessLabels `yaml:"labels,omitempty"` Keda GlobalKedaValues `yaml:"keda"` diff --git a/plugins/scheduler-k3s/templates/chart/cron-job.yaml b/plugins/scheduler-k3s/templates/chart/cron-job.yaml index 9363322f7..412e57916 100644 --- a/plugins/scheduler-k3s/templates/chart/cron-job.yaml +++ b/plugins/scheduler-k3s/templates/chart/cron-job.yaml @@ -5,7 +5,7 @@ apiVersion: batch/v1 kind: CronJob metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/builder-type: {{ $.Values.global.image.type }} dokku.com/cron-id: {{ $config.cron.id }} dokku.com/job-suffix: {{ $config.cron.suffix }} @@ -28,7 +28,7 @@ spec: jobTemplate: metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/builder-type: {{ $.Values.global.image.type }} dokku.com/cron-id: {{ $config.cron.id }} dokku.com/job-suffix: {{ $config.cron.suffix }} @@ -50,7 +50,7 @@ spec: template: metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/builder-type: {{ $.Values.global.image.type }} dokku.com/cron-id: {{ $config.cron.id }} dokku.com/job-suffix: {{ $config.cron.suffix }} @@ -73,7 +73,7 @@ spec: {{- end }} envFrom: - secretRef: - name: env-{{ $.Values.global.app_name }}.{{ $.Values.global.deploment_id }} + name: env-{{ $.Values.global.app_name }}.{{ $.Values.global.deployment_id }} optional: true image: {{ $.Values.global.image.name }} imagePullPolicy: Always diff --git a/plugins/scheduler-k3s/templates/chart/deployment.yaml b/plugins/scheduler-k3s/templates/chart/deployment.yaml index 40f32c6af..1457ccd5f 100644 --- a/plugins/scheduler-k3s/templates/chart/deployment.yaml +++ b/plugins/scheduler-k3s/templates/chart/deployment.yaml @@ -11,7 +11,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/builder-type: {{ $.Values.global.image.type }} dokku.com/managed: "true" kubectl.kubernetes.io/default-container: {{ $.Values.global.app_name }}-{{ $processName }} @@ -39,7 +39,7 @@ spec: template: metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/builder-type: {{ $.Values.global.image.type }} dokku.com/managed: "true" kubectl.kubernetes.io/default-container: {{ $.Values.global.app_name }}-{{ $processName }} @@ -64,7 +64,7 @@ spec: {{- end }} envFrom: - secretRef: - name: env-{{ $.Values.global.app_name }}.{{ $.Values.global.deploment_id }} + name: env-{{ $.Values.global.app_name }}.{{ $.Values.global.deployment_id }} optional: true image: {{ $.Values.global.image.name }} imagePullPolicy: Always diff --git a/plugins/scheduler-k3s/templates/chart/image-pull-secret.yaml b/plugins/scheduler-k3s/templates/chart/image-pull-secret.yaml index ac5d44cbe..75d0f83e1 100644 --- a/plugins/scheduler-k3s/templates/chart/image-pull-secret.yaml +++ b/plugins/scheduler-k3s/templates/chart/image-pull-secret.yaml @@ -4,15 +4,15 @@ apiVersion: v1 kind: Secret metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/managed: "true" {{ include "print.annotations" (dict "config" $.Values.global "key" "secret") | indent 4 }} labels: - app.kubernetes.io/instance: ims-{{ $.Values.global.app_name }}.{{ $.Values.global.deploment_id }} + app.kubernetes.io/instance: ims-{{ $.Values.global.app_name }}.{{ $.Values.global.deployment_id }} app.kubernetes.io/name: ims-{{ $.Values.global.app_name }} app.kubernetes.io/part-of: {{ $.Values.global.app_name }} {{ include "print.labels" (dict "config" $.Values.global "key" "secret") | indent 4 }} - name: ims-{{ $.Values.global.app_name }}.{{ $.Values.global.deploment_id }} + name: ims-{{ $.Values.global.app_name }}.{{ $.Values.global.deployment_id }} namespace: {{ $.Values.global.namespace }} data: .dockerconfigjson: "{{ $.Values.global.image.pull_secret_base64 }}" diff --git a/plugins/scheduler-k3s/templates/chart/keda-scaled-object.yaml b/plugins/scheduler-k3s/templates/chart/keda-scaled-object.yaml index 13e766797..0cb037d94 100644 --- a/plugins/scheduler-k3s/templates/chart/keda-scaled-object.yaml +++ b/plugins/scheduler-k3s/templates/chart/keda-scaled-object.yaml @@ -6,7 +6,7 @@ apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/managed: "true" {{ include "print.annotations" (dict "config" $.Values.global "key" "keda_scaled_object") | indent 4 }} {{ include "print.annotations" (dict "config" $config "key" "keda_scaled_object") | indent 4 }} diff --git a/plugins/scheduler-k3s/templates/chart/keda-secret.yaml b/plugins/scheduler-k3s/templates/chart/keda-secret.yaml index d57815ffa..3e40bcc62 100644 --- a/plugins/scheduler-k3s/templates/chart/keda-secret.yaml +++ b/plugins/scheduler-k3s/templates/chart/keda-secret.yaml @@ -5,7 +5,7 @@ apiVersion: v1 kind: Secret metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/managed: "true" {{ include "print.annotations" (dict "config" $.Values.global "key" "keda_secret") | indent 4 }} labels: diff --git a/plugins/scheduler-k3s/templates/chart/keda-trigger-authentication.yaml b/plugins/scheduler-k3s/templates/chart/keda-trigger-authentication.yaml index 2748a675c..c39b94b0a 100644 --- a/plugins/scheduler-k3s/templates/chart/keda-trigger-authentication.yaml +++ b/plugins/scheduler-k3s/templates/chart/keda-trigger-authentication.yaml @@ -5,7 +5,7 @@ apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/managed: "true" {{- if and $.Values.global.annotations $.Values.global.annotations.keda_trigger_authentication }} {{- range $k, $v := $.Values.global.annotations.keda_trigger_authentication }} diff --git a/plugins/scheduler-k3s/templates/chart/secret.yaml b/plugins/scheduler-k3s/templates/chart/secret.yaml index 47dd3adee..7a349f6fd 100644 --- a/plugins/scheduler-k3s/templates/chart/secret.yaml +++ b/plugins/scheduler-k3s/templates/chart/secret.yaml @@ -3,15 +3,15 @@ apiVersion: v1 kind: Secret metadata: annotations: - app.kubernetes.io/version: {{ $.Values.global.deploment_id | quote }} + app.kubernetes.io/version: {{ $.Values.global.deployment_id | quote }} dokku.com/managed: "true" {{ include "print.annotations" (dict "config" $.Values.global "key" "secret") | indent 4 }} labels: - app.kubernetes.io/instance: env-{{ $.Values.global.app_name }}.{{ $.Values.global.deploment_id }} + app.kubernetes.io/instance: env-{{ $.Values.global.app_name }}.{{ $.Values.global.deployment_id }} app.kubernetes.io/name: env-{{ $.Values.global.app_name }} app.kubernetes.io/part-of: {{ $.Values.global.app_name }} {{ include "print.labels" (dict "config" $.Values.global "key" "secret") | indent 4 }} - name: env-{{ $.Values.global.app_name }}.{{ $.Values.global.deploment_id }} + name: env-{{ $.Values.global.app_name }}.{{ $.Values.global.deployment_id }} namespace: {{ $.Values.global.namespace }} {{- with .Values.global.secrets }} data: diff --git a/plugins/scheduler-k3s/triggers.go b/plugins/scheduler-k3s/triggers.go index 833459874..1edafd3ae 100644 --- a/plugins/scheduler-k3s/triggers.go +++ b/plugins/scheduler-k3s/triggers.go @@ -1085,7 +1085,12 @@ func TriggerSchedulerRun(scheduler string, appName string, envCount int, args [] return fmt.Errorf("Error getting helm values: %w", err) } - deploymentIDValue, ok := values["deploment_id"].(string) + globalValues, ok := values["global"].(map[string]interface{}) + if !ok { + return errors.New("Global helm values not found") + } + + deploymentIDValue, ok := globalValues["deployment_id"].(string) if !ok { return fmt.Errorf("Deployment ID is not a string") } diff --git a/tests/unit/scheduler-k3s-2.bats b/tests/unit/scheduler-k3s-2.bats index bc33ce5f3..676f5612f 100644 --- a/tests/unit/scheduler-k3s-2.bats +++ b/tests/unit/scheduler-k3s-2.bats @@ -148,6 +148,18 @@ teardown_() { echo "status: $status" assert_success assert_output "512Mi" + + # include run tests + run /bin/bash -c "dokku run $TEST_APP ls -lah" + echo "output: $output" + echo "status: $status" + assert_success + + # include enter tests + run /bin/bash -c "dokku enter $TEST_APP web ls -lah" + echo "output: $output" + echo "status: $status" + assert_success } @test "(scheduler-k3s) deploy nginx" {