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
// that will override all subsequent global variables
secretEnvVarsList, err := c.getPodEnvironmentSecretVariables()
if err != nil {
return nil, err
}
envVars = appendIfNotPresent(envVars, secretEnvVarsList...)
// fetch variables from custom environment ConfigMap
// that will override all subsequent global variables
configMapEnvVarsList, err := c.getPodEnvironmentConfigMapVariables()
if err != nil {
return nil, err
}
envVars = appendIfNotPresent(envVars, configMapEnvVarsList...)
// global variables derived from operator configuration
// that do not override custom environment variables
opConfigEnvVars := make([]v1.EnvVar, 0)
if 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: ""})
}
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
}

View File

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