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