fix!: custom environment variables are appended after all generated variables

This commit is contained in:
Roger Siegenthaler 2025-04-22 19:55:34 +00:00
parent 79b232d2fa
commit 33ea04a6da
2 changed files with 14 additions and 9 deletions

View File

@ -1035,22 +1035,19 @@ func (c *Cluster) generateSpiloPodEnvVars(
} }
// fetch variables from custom environment Secret // fetch variables from custom environment Secret
// that will override all subsequent global variables
secretEnvVarsList, err := c.getPodEnvironmentSecretVariables() secretEnvVarsList, err := c.getPodEnvironmentSecretVariables()
if err != nil { if err != nil {
return nil, err return nil, err
} }
envVars = appendIfNotPresent(envVars, secretEnvVarsList...)
// fetch variables from custom environment ConfigMap // fetch variables from custom environment ConfigMap
// that will override all subsequent global variables
configMapEnvVarsList, err := c.getPodEnvironmentConfigMapVariables() configMapEnvVarsList, err := c.getPodEnvironmentConfigMapVariables()
if err != nil { if err != nil {
return nil, err return nil, err
} }
envVars = appendIfNotPresent(envVars, configMapEnvVarsList...)
// global variables derived from operator configuration // global variables derived from operator configuration
// that do not override custom environment variables
opConfigEnvVars := make([]v1.EnvVar, 0) opConfigEnvVars := make([]v1.EnvVar, 0)
if c.OpConfig.WALES3Bucket != "" { if c.OpConfig.WALES3Bucket != "" {
opConfigEnvVars = append(opConfigEnvVars, v1.EnvVar{Name: "WAL_S3_BUCKET", Value: c.OpConfig.WALES3Bucket}) opConfigEnvVars = append(opConfigEnvVars, v1.EnvVar{Name: "WAL_S3_BUCKET", Value: c.OpConfig.WALES3Bucket})
@ -1080,7 +1077,15 @@ func (c *Cluster) generateSpiloPodEnvVars(
opConfigEnvVars = append(opConfigEnvVars, v1.EnvVar{Name: "LOG_BUCKET_SCOPE_PREFIX", Value: ""}) opConfigEnvVars = append(opConfigEnvVars, v1.EnvVar{Name: "LOG_BUCKET_SCOPE_PREFIX", Value: ""})
} }
envVars = appendIfNotPresent(envVars, opConfigEnvVars...) for _, env := range opConfigEnvVars {
if !isEnvVarPresent(secretEnvVarsList, env.Name) && !isEnvVarPresent(configMapEnvVarsList, env.Name) {
envVars = appendIfNotPresent(envVars, env)
}
}
// append custom environment variables last to allow chained referencing
envVars = appendIfNotPresent(envVars, secretEnvVarsList...)
envVars = appendIfNotPresent(envVars, configMapEnvVarsList...)
return envVars, nil return envVars, nil
} }

View File

@ -623,7 +623,7 @@ func TestGenerateSpiloPodEnvVars(t *testing.T) {
} }
expectedS3BucketConfigMap := []ExpectedValue{ expectedS3BucketConfigMap := []ExpectedValue{
{ {
envIndex: 17, envIndex: 19,
envVarConstant: "wal_s3_bucket", envVarConstant: "wal_s3_bucket",
envVarValue: "global-s3-bucket-configmap", envVarValue: "global-s3-bucket-configmap",
}, },
@ -709,14 +709,14 @@ func TestGenerateSpiloPodEnvVars(t *testing.T) {
envVarValue: fmt.Sprintf("/%s", dummyUUID), envVarValue: fmt.Sprintf("/%s", dummyUUID),
}, },
{ {
envIndex: 21, envIndex: 23,
envVarConstant: "clone_aws_endpoint", envVarConstant: "clone_aws_endpoint",
envVarValue: "s3.eu-west-1.amazonaws.com", envVarValue: "s3.eu-west-1.amazonaws.com",
}, },
} }
expectedCloneEnvSecret := []ExpectedValue{ expectedCloneEnvSecret := []ExpectedValue{
{ {
envIndex: 21, envIndex: 24,
envVarConstant: "clone_aws_access_key_id", envVarConstant: "clone_aws_access_key_id",
envVarValueRef: &v1.EnvVarSource{ envVarValueRef: &v1.EnvVarSource{
SecretKeyRef: &v1.SecretKeySelector{ SecretKeyRef: &v1.SecretKeySelector{
@ -735,7 +735,7 @@ func TestGenerateSpiloPodEnvVars(t *testing.T) {
envVarValue: "gs://some/path/", envVarValue: "gs://some/path/",
}, },
{ {
envIndex: 20, envIndex: 23,
envVarConstant: "standby_google_application_credentials", envVarConstant: "standby_google_application_credentials",
envVarValueRef: &v1.EnvVarSource{ envVarValueRef: &v1.EnvVarSource{
SecretKeyRef: &v1.SecretKeySelector{ SecretKeyRef: &v1.SecretKeySelector{