* Add ability to specify alternative schedulers via schedulerName. Co-authored-by: micah.coletti@gmail.com <micah.coletti@gmail.com>
This commit is contained in:
parent
cfd83e33c8
commit
85d1a72cd6
|
|
@ -354,6 +354,8 @@ spec:
|
||||||
memory:
|
memory:
|
||||||
type: string
|
type: string
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
||||||
|
schedulerName:
|
||||||
|
type: string
|
||||||
serviceAnnotations:
|
serviceAnnotations:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,10 @@ These parameters are grouped directly under the `spec` key in the manifest.
|
||||||
custom Docker image that overrides the **docker_image** operator parameter.
|
custom Docker image that overrides the **docker_image** operator parameter.
|
||||||
It should be a [Spilo](https://github.com/zalando/spilo) image. Optional.
|
It should be a [Spilo](https://github.com/zalando/spilo) image. Optional.
|
||||||
|
|
||||||
|
* **schedulerName**
|
||||||
|
specifies the scheduling profile for database pods. If no value is provided
|
||||||
|
K8s' `default-scheduler` will be used. Optional.
|
||||||
|
|
||||||
* **spiloRunAsUser**
|
* **spiloRunAsUser**
|
||||||
sets the user ID which should be used in the container to run the process.
|
sets the user ID which should be used in the container to run the process.
|
||||||
This must be set to run the container without root. By default the container
|
This must be set to run the container without root. By default the container
|
||||||
|
|
|
||||||
|
|
@ -350,6 +350,8 @@ spec:
|
||||||
memory:
|
memory:
|
||||||
type: string
|
type: string
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
||||||
|
schedulerName:
|
||||||
|
type: string
|
||||||
serviceAnnotations:
|
serviceAnnotations:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
|
||||||
|
|
@ -535,6 +535,9 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"schedulerName": {
|
||||||
|
Type: "string",
|
||||||
|
},
|
||||||
"serviceAnnotations": {
|
"serviceAnnotations": {
|
||||||
Type: "object",
|
Type: "object",
|
||||||
AdditionalProperties: &apiextv1.JSONSchemaPropsOrBool{
|
AdditionalProperties: &apiextv1.JSONSchemaPropsOrBool{
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ type PostgresSpec struct {
|
||||||
ClusterName string `json:"-"`
|
ClusterName string `json:"-"`
|
||||||
Databases map[string]string `json:"databases,omitempty"`
|
Databases map[string]string `json:"databases,omitempty"`
|
||||||
PreparedDatabases map[string]PreparedDatabase `json:"preparedDatabases,omitempty"`
|
PreparedDatabases map[string]PreparedDatabase `json:"preparedDatabases,omitempty"`
|
||||||
|
SchedulerName *string `json:"schedulerName,omitempty"`
|
||||||
Tolerations []v1.Toleration `json:"tolerations,omitempty"`
|
Tolerations []v1.Toleration `json:"tolerations,omitempty"`
|
||||||
Sidecars []Sidecar `json:"sidecars,omitempty"`
|
Sidecars []Sidecar `json:"sidecars,omitempty"`
|
||||||
InitContainers []v1.Container `json:"initContainers,omitempty"`
|
InitContainers []v1.Container `json:"initContainers,omitempty"`
|
||||||
|
|
|
||||||
|
|
@ -687,6 +687,11 @@ func (in *PostgresSpec) DeepCopyInto(out *PostgresSpec) {
|
||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if in.SchedulerName != nil {
|
||||||
|
in, out := &in.SchedulerName, &out.SchedulerName
|
||||||
|
*out = new(string)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -537,6 +537,7 @@ func (c *Cluster) generatePodTemplate(
|
||||||
spiloRunAsGroup *int64,
|
spiloRunAsGroup *int64,
|
||||||
spiloFSGroup *int64,
|
spiloFSGroup *int64,
|
||||||
nodeAffinity *v1.Affinity,
|
nodeAffinity *v1.Affinity,
|
||||||
|
schedulerName *string,
|
||||||
terminateGracePeriod int64,
|
terminateGracePeriod int64,
|
||||||
podServiceAccountName string,
|
podServiceAccountName string,
|
||||||
kubeIAMRole string,
|
kubeIAMRole string,
|
||||||
|
|
@ -575,6 +576,10 @@ func (c *Cluster) generatePodTemplate(
|
||||||
SecurityContext: &securityContext,
|
SecurityContext: &securityContext,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if schedulerName != nil {
|
||||||
|
podSpec.SchedulerName = *schedulerName
|
||||||
|
}
|
||||||
|
|
||||||
if shmVolume != nil && *shmVolume {
|
if shmVolume != nil && *shmVolume {
|
||||||
addShmVolume(&podSpec)
|
addShmVolume(&podSpec)
|
||||||
}
|
}
|
||||||
|
|
@ -1184,6 +1189,7 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef
|
||||||
effectiveRunAsGroup,
|
effectiveRunAsGroup,
|
||||||
effectiveFSGroup,
|
effectiveFSGroup,
|
||||||
nodeAffinity(c.OpConfig.NodeReadinessLabel),
|
nodeAffinity(c.OpConfig.NodeReadinessLabel),
|
||||||
|
spec.SchedulerName,
|
||||||
int64(c.OpConfig.PodTerminateGracePeriod.Seconds()),
|
int64(c.OpConfig.PodTerminateGracePeriod.Seconds()),
|
||||||
c.OpConfig.PodServiceAccountName,
|
c.OpConfig.PodServiceAccountName,
|
||||||
c.OpConfig.KubeIAMRole,
|
c.OpConfig.KubeIAMRole,
|
||||||
|
|
@ -1885,6 +1891,7 @@ func (c *Cluster) generateLogicalBackupJob() (*batchv1beta1.CronJob, error) {
|
||||||
nil,
|
nil,
|
||||||
nil,
|
nil,
|
||||||
nodeAffinity(c.OpConfig.NodeReadinessLabel),
|
nodeAffinity(c.OpConfig.NodeReadinessLabel),
|
||||||
|
nil,
|
||||||
int64(c.OpConfig.PodTerminateGracePeriod.Seconds()),
|
int64(c.OpConfig.PodTerminateGracePeriod.Seconds()),
|
||||||
c.OpConfig.PodServiceAccountName,
|
c.OpConfig.PodServiceAccountName,
|
||||||
c.OpConfig.KubeIAMRole,
|
c.OpConfig.KubeIAMRole,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue