Allow custom Postgres pod environment variables
This commit is contained in:
		
							parent
							
								
									86803406db
								
							
						
					
					
						commit
						257e0fc0a9
					
				
							
								
								
									
										32
									
								
								README.md
								
								
								
								
							
							
						
						
									
										32
									
								
								README.md
								
								
								
								
							|  | @ -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 | ||||
| 
 | ||||
|  |  | |||
|  | @ -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, | ||||
| 		}, | ||||
|  |  | |||
|  | @ -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
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue