mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-19 04:57:13 +02:00
* Add ability to specify alternative schedulers via schedulerName. Co-authored-by: micah.coletti@gmail.com <micah.coletti@gmail.com>
This commit is contained in:
co-authored by
micah.coletti@gmail.com
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,
|
||||||
|
|||||||
Reference in New Issue
Block a user