Allow per-cluster setting of a docker image.
Add dockerImage cluster configuration parameter that overrides global operator defaults when set to a non-empty value.
This commit is contained in:
		
							parent
							
								
									c25e849fe4
								
							
						
					
					
						commit
						6dcd074ea0
					
				|  | @ -280,7 +280,8 @@ func (c *Cluster) generatePodTemplate(resourceRequirements *v1.ResourceRequireme | ||||||
| 	tolerationsSpec *[]v1.Toleration, | 	tolerationsSpec *[]v1.Toleration, | ||||||
| 	pgParameters *spec.PostgresqlParam, | 	pgParameters *spec.PostgresqlParam, | ||||||
| 	patroniParameters *spec.Patroni, | 	patroniParameters *spec.Patroni, | ||||||
| 	cloneDescription *spec.CloneDescription) *v1.PodTemplateSpec { | 	cloneDescription *spec.CloneDescription, | ||||||
|  | 	dockerImage *string) *v1.PodTemplateSpec { | ||||||
| 	spiloConfiguration := c.generateSpiloJSONConfiguration(pgParameters, patroniParameters) | 	spiloConfiguration := c.generateSpiloJSONConfiguration(pgParameters, patroniParameters) | ||||||
| 
 | 
 | ||||||
| 	envVars := []v1.EnvVar{ | 	envVars := []v1.EnvVar{ | ||||||
|  | @ -362,9 +363,13 @@ func (c *Cluster) generatePodTemplate(resourceRequirements *v1.ResourceRequireme | ||||||
| 		envVars = append(envVars, c.generateCloneEnvironment(cloneDescription)...) | 		envVars = append(envVars, c.generateCloneEnvironment(cloneDescription)...) | ||||||
| 	} | 	} | ||||||
| 	privilegedMode := true | 	privilegedMode := true | ||||||
|  | 	containerImage := c.OpConfig.DockerImage | ||||||
|  | 	if dockerImage != nil && *dockerImage != "" { | ||||||
|  | 		containerImage = *dockerImage | ||||||
|  | 	} | ||||||
| 	container := v1.Container{ | 	container := v1.Container{ | ||||||
| 		Name:            c.containerName(), | 		Name:            c.containerName(), | ||||||
| 		Image:           c.OpConfig.DockerImage, | 		Image:           containerImage, | ||||||
| 		ImagePullPolicy: v1.PullIfNotPresent, | 		ImagePullPolicy: v1.PullIfNotPresent, | ||||||
| 		Resources:       *resourceRequirements, | 		Resources:       *resourceRequirements, | ||||||
| 		Ports: []v1.ContainerPort{ | 		Ports: []v1.ContainerPort{ | ||||||
|  | @ -422,7 +427,7 @@ func (c *Cluster) generateStatefulSet(spec *spec.PostgresSpec) (*v1beta1.Statefu | ||||||
| 		return nil, fmt.Errorf("could not generate resource requirements: %v", err) | 		return nil, fmt.Errorf("could not generate resource requirements: %v", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	podTemplate := c.generatePodTemplate(resourceRequirements, &spec.Tolerations, &spec.PostgresqlParam, &spec.Patroni, &spec.Clone) | 	podTemplate := c.generatePodTemplate(resourceRequirements, &spec.Tolerations, &spec.PostgresqlParam, &spec.Patroni, &spec.Clone, &spec.DockerImage) | ||||||
| 	volumeClaimTemplate, err := generatePersistentVolumeClaimTemplate(spec.Volume.Size, spec.Volume.StorageClass) | 	volumeClaimTemplate, err := generatePersistentVolumeClaimTemplate(spec.Volume.Size, spec.Volume.StorageClass) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, fmt.Errorf("could not generate volume claim template: %v", err) | 		return nil, fmt.Errorf("could not generate volume claim template: %v", err) | ||||||
|  |  | ||||||
|  | @ -94,6 +94,7 @@ type PostgresSpec struct { | ||||||
| 
 | 
 | ||||||
| 	TeamID              string   `json:"teamId"` | 	TeamID              string   `json:"teamId"` | ||||||
| 	AllowedSourceRanges []string `json:"allowedSourceRanges"` | 	AllowedSourceRanges []string `json:"allowedSourceRanges"` | ||||||
|  | 	DockerImage         string   `json:"dockerImage,omitempty"` | ||||||
| 	// EnableLoadBalancer  is a pointer, since it is important to know if that parameters is omitted from the manifest
 | 	// EnableLoadBalancer  is a pointer, since it is important to know if that parameters is omitted from the manifest
 | ||||||
| 	UseLoadBalancer     *bool                `json:"useLoadBalancer,omitempty"` | 	UseLoadBalancer     *bool                `json:"useLoadBalancer,omitempty"` | ||||||
| 	ReplicaLoadBalancer bool                 `json:"replicaLoadBalancer,omitempty"` | 	ReplicaLoadBalancer bool                 `json:"replicaLoadBalancer,omitempty"` | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue