mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-09 20:20:20 +02:00
Add envFrom support to Postgresql spec (#3118)
* add envFrom support * generate files --------- Co-authored-by: Felix Kunde <felix-kunde@gmx.de>
This commit is contained in:
@@ -229,6 +229,63 @@ func TestStatefulSetUpdateWithEnv(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatefulSetUpdateWithEnvFrom(t *testing.T) {
|
||||
oldSpec := &acidv1.PostgresSpec{
|
||||
TeamID: "myapp", NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
},
|
||||
}
|
||||
oldSS, err := cl.generateStatefulSet(oldSpec)
|
||||
if err != nil {
|
||||
t.Errorf("in %s no StatefulSet created %v", t.Name(), err)
|
||||
}
|
||||
|
||||
newSpec := oldSpec.DeepCopy()
|
||||
newSS, err := cl.generateStatefulSet(newSpec)
|
||||
if err != nil {
|
||||
t.Errorf("in %s no StatefulSet created %v", t.Name(), err)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(oldSS, newSS) {
|
||||
t.Errorf("in %s StatefulSet's must be equal", t.Name())
|
||||
}
|
||||
|
||||
newSpec.EnvFrom = []v1.EnvFromSource{
|
||||
{
|
||||
ConfigMapRef: &v1.ConfigMapEnvSource{
|
||||
LocalObjectReference: v1.LocalObjectReference{
|
||||
Name: "test-configmap",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
SecretRef: &v1.SecretEnvSource{
|
||||
LocalObjectReference: v1.LocalObjectReference{
|
||||
Name: "test-secret",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
newSS, err = cl.generateStatefulSet(newSpec)
|
||||
if err != nil {
|
||||
t.Errorf("in %s no StatefulSet created %v", t.Name(), err)
|
||||
}
|
||||
|
||||
if reflect.DeepEqual(oldSS, newSS) {
|
||||
t.Errorf("in %s StatefulSet's must be not equal", t.Name())
|
||||
}
|
||||
|
||||
postgresContainer := newSS.Spec.Template.Spec.Containers[0]
|
||||
if !reflect.DeepEqual(postgresContainer.EnvFrom, newSpec.EnvFrom) {
|
||||
t.Errorf("expected envFrom %v, got %v", newSpec.EnvFrom, postgresContainer.EnvFrom)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInitRobotUsers(t *testing.T) {
|
||||
tests := []struct {
|
||||
testCase string
|
||||
|
||||
@@ -697,6 +697,7 @@ func generateContainer(
|
||||
dockerImage *string,
|
||||
resourceRequirements *v1.ResourceRequirements,
|
||||
envVars []v1.EnvVar,
|
||||
envFrom []v1.EnvFromSource,
|
||||
volumeMounts []v1.VolumeMount,
|
||||
privilegedMode bool,
|
||||
privilegeEscalationMode *bool,
|
||||
@@ -723,6 +724,7 @@ func generateContainer(
|
||||
},
|
||||
VolumeMounts: volumeMounts,
|
||||
Env: envVars,
|
||||
EnvFrom: envFrom,
|
||||
SecurityContext: &v1.SecurityContext{
|
||||
AllowPrivilegeEscalation: privilegeEscalationMode,
|
||||
Privileged: &privilegedMode,
|
||||
@@ -1385,6 +1387,7 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef
|
||||
&effectiveDockerImage,
|
||||
resourceRequirements,
|
||||
spiloEnvVars,
|
||||
spec.EnvFrom,
|
||||
volumeMounts,
|
||||
c.OpConfig.Resources.SpiloPrivileged,
|
||||
c.OpConfig.Resources.SpiloAllowPrivilegeEscalation,
|
||||
@@ -2385,6 +2388,7 @@ func (c *Cluster) generateLogicalBackupJob() (*batchv1.CronJob, error) {
|
||||
&c.OpConfig.LogicalBackup.LogicalBackupDockerImage,
|
||||
resourceRequirements,
|
||||
envVars,
|
||||
nil,
|
||||
[]v1.VolumeMount{},
|
||||
c.OpConfig.SpiloPrivileged, // use same value as for normal DB pods
|
||||
c.OpConfig.SpiloAllowPrivilegeEscalation,
|
||||
|
||||
@@ -4488,6 +4488,48 @@ func TestGenerateCapabilities(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGenerateContainerWithEnvFrom(t *testing.T) {
|
||||
dockerImage := "test-image"
|
||||
resourceRequirements := &v1.ResourceRequirements{
|
||||
Requests: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("100m"),
|
||||
v1.ResourceMemory: resource.MustParse("100Mi"),
|
||||
},
|
||||
}
|
||||
envVars := []v1.EnvVar{{Name: "TEST_VAR", Value: "test-value"}}
|
||||
envFrom := []v1.EnvFromSource{
|
||||
{
|
||||
ConfigMapRef: &v1.ConfigMapEnvSource{
|
||||
LocalObjectReference: v1.LocalObjectReference{Name: "test-configmap"},
|
||||
},
|
||||
},
|
||||
{
|
||||
SecretRef: &v1.SecretEnvSource{
|
||||
LocalObjectReference: v1.LocalObjectReference{Name: "test-secret"},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
container := generateContainer(
|
||||
constants.PostgresContainerName,
|
||||
&dockerImage,
|
||||
resourceRequirements,
|
||||
envVars,
|
||||
envFrom,
|
||||
[]v1.VolumeMount{},
|
||||
false,
|
||||
util.False(),
|
||||
nil,
|
||||
)
|
||||
|
||||
if !reflect.DeepEqual(container.Env, envVars) {
|
||||
t.Errorf("expected env %v, got %v", envVars, container.Env)
|
||||
}
|
||||
if !reflect.DeepEqual(container.EnvFrom, envFrom) {
|
||||
t.Errorf("expected envFrom %v, got %v", envFrom, container.EnvFrom)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTopologySpreadConstraints(t *testing.T) {
|
||||
clusterName := "acid-test-cluster"
|
||||
namespace := "default"
|
||||
|
||||
Reference in New Issue
Block a user