Allow custom Postgres pod environment variables

This commit is contained in:
Georg Kunz 2017-10-30 17:41:32 +01:00
parent 86803406db
commit 257e0fc0a9
3 changed files with 41 additions and 0 deletions

View File

@ -136,6 +136,38 @@ spec:
Please be ware that the taint and toleration only ensures that no other pod gets scheduled to the "postgres" node but not that Postgres pods are placed on such a node. This can be achieved by setting a node affinity rule in the ConfigMap.
#### Custom Pod Environment Variables
It is possible to configure a config map which is used by the Postgres pods as an additional provider for environment variables.
One use case is to customize the Spilo image and configure it with environment variables. The config map with the additional settings is configured in the operator's main config map:
**postgres-operator ConfigMap**
```
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-operator
data:
# referencing config map with custom settings
pod_environment_configmap: postgres-pod-config
...
```
**referenced ConfigMap `postgres-pod-config`**
```
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-pod-config
namespace: default
data:
MY_CUSTOM_VAR: value
```
This ConfigMap is then added as a source of environment variables to the Postgres StatefulSet/pods.
# Setup development environment

View File

@ -361,6 +361,13 @@ func (c *Cluster) generatePodTemplate(resourceRequirements *v1.ResourceRequireme
if cloneDescription.ClusterName != "" {
envVars = append(envVars, c.generateCloneEnvironment(cloneDescription)...)
}
envFromSource := []v1.EnvFromSource{}
if c.OpConfig.PodEnvironmentConfigMap != "" {
configMapRef := v1.ConfigMapEnvSource{LocalObjectReference: v1.LocalObjectReference{Name: c.OpConfig.PodEnvironmentConfigMap}}
envFromSource = append(envFromSource, v1.EnvFromSource{ConfigMapRef: &configMapRef})
}
privilegedMode := true
container := v1.Container{
Name: c.containerName(),
@ -388,6 +395,7 @@ func (c *Cluster) generatePodTemplate(resourceRequirements *v1.ResourceRequireme
},
},
Env: envVars,
EnvFrom: envFromSource,
SecurityContext: &v1.SecurityContext{
Privileged: &privilegedMode,
},

View File

@ -31,6 +31,7 @@ type Resources struct {
DefaultCPULimit string `name:"default_cpu_limit" default:"3"`
DefaultMemoryLimit string `name:"default_memory_limit" default:"1Gi"`
EOLNodeLabel map[string]string `name:"eol_node_label" default:"eol:true"`
PodEnvironmentConfigMap string `name:"pod_environment_configmap" default:""`
}
// Auth describes authentication specific configuration parameters