Merge pull request #6555 from dokku/service-account

Add support for app-specific service accounts when deploying via k3s
This commit is contained in:
Jose Diaz-Gonzalez
2024-02-05 17:18:20 -05:00
committed by GitHub
6 changed files with 28 additions and 13 deletions

View File

@@ -277,7 +277,8 @@ func templateKubernetesJob(input Job) (batchv1.Job, error) {
WorkingDir: input.WorkingDir,
},
},
RestartPolicy: corev1.RestartPolicyNever,
RestartPolicy: corev1.RestartPolicyNever,
ServiceAccountName: input.AppName,
},
},
},

View File

@@ -94,6 +94,7 @@ spec:
imagePullSecrets: {{ $.Values.global.image.image_pull_secrets }}
{{- end }}
restartPolicy: Never
serviceAccountName: {{ $.Values.global.app_name }}
schedule: {{ $config.cron.schedule }}
startingDeadlineSeconds: 60
successfulJobsHistoryLimit: 10

View File

@@ -100,3 +100,4 @@ spec:
{{- if $.Values.global.image.image_pull_secrets }}
imagePullSecrets: {{ $.Values.global.image.image_pull_secrets }}
{{- end }}
serviceAccountName: {{ $.Values.global.app_name }}

View File

@@ -13,4 +13,4 @@ metadata:
{{- with .Values.global.secrets }}
data:
{{- toYaml . | nindent 2 }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,9 @@
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/instance: service-account
app.kubernetes.io/name: service-account
app.kubernetes.io/part-of: "{{ $.Values.global.app_name }}"
name: "{{ $.Values.global.app_name }}"
namespace: "{{ $.Values.global.namespace }}"

View File

@@ -256,19 +256,22 @@ func TriggerSchedulerDeploy(scheduler string, appName string, imageTag string) e
}
deploymentId := time.Now().Unix()
b, err := templates.ReadFile("templates/chart/secret.yaml")
if err != nil {
return fmt.Errorf("Error reading secret template: %w", err)
}
globalTemplateFiles := []string{"service-account", "secret"}
for _, templateName := range globalTemplateFiles {
b, err := templates.ReadFile(fmt.Sprintf("templates/chart/%s.yaml", templateName))
if err != nil {
return fmt.Errorf("Error reading %s template: %w", templateName, err)
}
filename := filepath.Join(chartDir, "templates", "secrets.yaml")
err = os.WriteFile(filename, b, os.FileMode(0644))
if err != nil {
return fmt.Errorf("Error writing secrets template: %w", err)
}
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)
}
if os.Getenv("DOKKU_TRACE") == "1" {
common.CatFile(filename)
if os.Getenv("DOKKU_TRACE") == "1" {
common.CatFile(filename)
}
}
portMaps, err := getPortMaps(appName)