mirror of
https://github.com/onepanelio/onepanel.git
synced 2025-10-05 05:36:50 +08:00
use EnvFrom for mounting env vars in workflows
This commit is contained in:
@@ -25,6 +25,8 @@ const (
|
|||||||
ArtifactRepositoryInsecureKey = "artifactRepositoryS3Insecure"
|
ArtifactRepositoryInsecureKey = "artifactRepositoryS3Insecure"
|
||||||
ArtifactRepositoryAccessKeyValueKey = "artifactRepositoryS3AccessKey"
|
ArtifactRepositoryAccessKeyValueKey = "artifactRepositoryS3AccessKey"
|
||||||
ArtifactRepositorySecretKeyValueKey = "artifactRepositoryS3SecretKey"
|
ArtifactRepositorySecretKeyValueKey = "artifactRepositoryS3SecretKey"
|
||||||
|
|
||||||
|
DefaultEnvironmentVariableSecret = "onepanel-default-env"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config = rest.Config
|
type Config = rest.Config
|
||||||
|
@@ -2,7 +2,6 @@ package v1
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"encoding/base64"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -32,7 +31,6 @@ import (
|
|||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
k8serrors "k8s.io/apimachinery/pkg/api/errors"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/fields"
|
"k8s.io/apimachinery/pkg/fields"
|
||||||
_ "k8s.io/client-go/plugin/pkg/client/auth"
|
_ "k8s.io/client-go/plugin/pkg/client/auth"
|
||||||
@@ -144,21 +142,6 @@ func (c *Client) injectAutomatedFields(namespace string, wf *wfv1.Workflow, opts
|
|||||||
|
|
||||||
addSystemUIDParameter(wf)
|
addSystemUIDParameter(wf)
|
||||||
|
|
||||||
addSecretValsToTemplate := true
|
|
||||||
secret, err := c.GetSecret(namespace, "onepanel-default-env")
|
|
||||||
if err != nil {
|
|
||||||
var statusError *k8serrors.StatusError
|
|
||||||
if errors.As(err, &statusError) {
|
|
||||||
if statusError.ErrStatus.Reason == "NotFound" {
|
|
||||||
addSecretValsToTemplate = false
|
|
||||||
} else {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create dev/shm volume
|
// Create dev/shm volume
|
||||||
wf.Spec.Volumes = append(wf.Spec.Volumes, corev1.Volume{
|
wf.Spec.Volumes = append(wf.Spec.Volumes, corev1.Volume{
|
||||||
Name: "sys-dshm",
|
Name: "sys-dshm",
|
||||||
@@ -196,24 +179,21 @@ func (c *Client) injectAutomatedFields(namespace string, wf *wfv1.Workflow, opts
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
if !addSecretValsToTemplate {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
//Generate ENV vars from secret, if there is a container present in the workflow
|
//Generate ENV vars from secret, if there is a container present in the workflow
|
||||||
//Get template ENV vars, avoid over-writing them with secret values
|
//Get template ENV vars, avoid over-writing them with secret values
|
||||||
for key, value := range secret.Data {
|
template.Container.EnvFrom = append(template.Container.EnvFrom, corev1.EnvFromSource{
|
||||||
decodedValue, errDecode := base64.StdEncoding.DecodeString(value)
|
SecretRef: &corev1.SecretEnvSource{
|
||||||
if errDecode != nil {
|
LocalObjectReference: corev1.LocalObjectReference{
|
||||||
return errDecode
|
Name: DefaultEnvironmentVariableSecret,
|
||||||
}
|
},
|
||||||
addEnvToTemplate(&template, key, string(decodedValue))
|
Optional: ptr.Bool(true),
|
||||||
}
|
},
|
||||||
|
})
|
||||||
|
|
||||||
sysConfig, sysErr := c.GetSystemConfig()
|
sysConfig, sysErr := c.GetSystemConfig()
|
||||||
if sysErr != nil {
|
if sysErr != nil {
|
||||||
return sysErr
|
return sysErr
|
||||||
}
|
}
|
||||||
|
|
||||||
addEnvToTemplate(&template, "ONEPANEL_API_URL", sysConfig["ONEPANEL_API_URL"])
|
addEnvToTemplate(&template, "ONEPANEL_API_URL", sysConfig["ONEPANEL_API_URL"])
|
||||||
addEnvToTemplate(&template, "ONEPANEL_FQDN", sysConfig["ONEPANEL_FQDN"])
|
addEnvToTemplate(&template, "ONEPANEL_FQDN", sysConfig["ONEPANEL_FQDN"])
|
||||||
addEnvToTemplate(&template, "ONEPANEL_DOMAIN", sysConfig["ONEPANEL_DOMAIN"])
|
addEnvToTemplate(&template, "ONEPANEL_DOMAIN", sysConfig["ONEPANEL_DOMAIN"])
|
||||||
|
@@ -159,7 +159,7 @@ func createStatefulSetManifest(workspaceSpec *WorkspaceSpec, config map[string]s
|
|||||||
workspaceSpec.Containers[i].EnvFrom = append(workspaceSpec.Containers[i].EnvFrom, corev1.EnvFromSource{
|
workspaceSpec.Containers[i].EnvFrom = append(workspaceSpec.Containers[i].EnvFrom, corev1.EnvFromSource{
|
||||||
SecretRef: &corev1.SecretEnvSource{
|
SecretRef: &corev1.SecretEnvSource{
|
||||||
LocalObjectReference: corev1.LocalObjectReference{
|
LocalObjectReference: corev1.LocalObjectReference{
|
||||||
Name: "onepanel-default-env",
|
Name: DefaultEnvironmentVariableSecret,
|
||||||
},
|
},
|
||||||
Optional: ptr.Bool(true),
|
Optional: ptr.Bool(true),
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user