Skip to content

Commit

Permalink
feat: secret format validation
Browse files Browse the repository at this point in the history
  • Loading branch information
francardoso93 committed Oct 26, 2023
1 parent c9925c7 commit 5eceedf
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
2 changes: 1 addition & 1 deletion example/.env.secretref.initium.sample
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# !VERY IMPORTANT: Don't use or commit sensitive values here. ENV values are supposed to be k8s secret name and key.
# Don't use conflicting ENV names configured here with other locations (eg: .env).
MOCK5=kubernetessecretname/secretkey
MOCK5=kubernetessecretname/kubernetesecretkey
25 changes: 14 additions & 11 deletions src/services/k8s/knative.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,19 +121,22 @@ func setSecretEnv(manifest *servingv1.Service, SecretRefEnvFile string) error {
return err
}
for _, secretEnvVar := range secretEnvVarList { //eg: [MOCK5=kubernetessecretname/secretkey]
// TODO: Add secret format validation (Contains "/")
secretKeyRef := strings.SplitN(secretEnvVar.Value, "/", 2)
manifest.Spec.Template.Spec.Containers[0].Env = append(manifest.Spec.Template.Spec.Containers[0].Env, corev1.EnvVar{
Name: secretEnvVar.Name, //eg: MOCK5
ValueFrom: &corev1.EnvVarSource{
SecretKeyRef: &corev1.SecretKeySelector{
Key: secretKeyRef[1], //eg: secretkey
LocalObjectReference: corev1.LocalObjectReference{
Name: secretKeyRef[0], //eg: kubernetessecretname
if strings.Contains(secretEnvVar.Value, "/") {
secretKeyRef := strings.SplitN(secretEnvVar.Value, "/", 2)
manifest.Spec.Template.Spec.Containers[0].Env = append(manifest.Spec.Template.Spec.Containers[0].Env, corev1.EnvVar{
Name: secretEnvVar.Name, //eg: MOCK5
ValueFrom: &corev1.EnvVarSource{
SecretKeyRef: &corev1.SecretKeySelector{
Key: secretKeyRef[1], //eg: kubernetesecretkey
LocalObjectReference: corev1.LocalObjectReference{
Name: secretKeyRef[0], //eg: kubernetesecretname
},
},
},
},
})
})
} else {
return fmt.Errorf("Invalid secret format for '%s'. Missing '/' char. Value must be in the format <secret-name>/<secret-key>, instead of '%s'", secretEnvVar.Name, secretEnvVar.Value)
}
}
return nil
}
Expand Down

0 comments on commit 5eceedf

Please sign in to comment.