minor code fixes for cluster creation
This commit is contained in:
parent
54c4a044e6
commit
eb82078f99
|
|
@ -300,7 +300,7 @@ func (c *Cluster) Create() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Postgresql.Spec.EnableLogicalBackup {
|
if c.Postgresql.Spec.EnableLogicalBackup {
|
||||||
if err := c.createBackupCronJob(); err != nil {
|
if err := c.createLogicalBackupJob(); err != nil {
|
||||||
return fmt.Errorf("could not create a k8s cron job for logical backups: %v", err)
|
return fmt.Errorf("could not create a k8s cron job for logical backups: %v", err)
|
||||||
}
|
}
|
||||||
c.logger.Info("a k8s cron job for logical backup has been successfully created")
|
c.logger.Info("a k8s cron job for logical backup has been successfully created")
|
||||||
|
|
@ -584,7 +584,7 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error {
|
||||||
// with all other k8s entities a missing object causes an error during update
|
// with all other k8s entities a missing object causes an error during update
|
||||||
if newSpec.Spec.EnableLogicalBackup && !oldSpec.Spec.EnableLogicalBackup {
|
if newSpec.Spec.EnableLogicalBackup && !oldSpec.Spec.EnableLogicalBackup {
|
||||||
c.logger.Debugf("creating backup cron job")
|
c.logger.Debugf("creating backup cron job")
|
||||||
if err := c.createBackupCronJob(); err != nil {
|
if err := c.createLogicalBackupJob(); err != nil {
|
||||||
c.logger.Errorf("could not create a k8s cron job for logical backups: %v", err)
|
c.logger.Errorf("could not create a k8s cron job for logical backups: %v", err)
|
||||||
updateFailed = true
|
updateFailed = true
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -354,7 +354,7 @@ func generateVolumeMounts() []v1.VolumeMount {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateSpiloContainer(
|
func generateContainer(
|
||||||
name string,
|
name string,
|
||||||
dockerImage *string,
|
dockerImage *string,
|
||||||
resourceRequirements *v1.ResourceRequirements,
|
resourceRequirements *v1.ResourceRequirements,
|
||||||
|
|
@ -794,7 +794,7 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*v1beta1.State
|
||||||
|
|
||||||
// generate the spilo container
|
// generate the spilo container
|
||||||
c.logger.Debugf("Generating Spilo container, environment variables: %v", spiloEnvVars)
|
c.logger.Debugf("Generating Spilo container, environment variables: %v", spiloEnvVars)
|
||||||
spiloContainer := generateSpiloContainer(c.containerName(),
|
spiloContainer := generateContainer(c.containerName(),
|
||||||
&effectiveDockerImage,
|
&effectiveDockerImage,
|
||||||
resourceRequirements,
|
resourceRequirements,
|
||||||
spiloEnvVars,
|
spiloEnvVars,
|
||||||
|
|
@ -1263,31 +1263,30 @@ func (c *Cluster) generateLogicalBackupJob() (*batchv1beta1.CronJob, error) {
|
||||||
resourceRequirements *v1.ResourceRequirements
|
resourceRequirements *v1.ResourceRequirements
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// NB: a cron job creates standard batch jobs according to schedule; these batch jobs manage pods and clean-up
|
||||||
|
|
||||||
c.logger.Debug("Generating logical backup pod template")
|
c.logger.Debug("Generating logical backup pod template")
|
||||||
|
|
||||||
// NB: a cron job creates standard batch jobs according to schedule; these batch jobs manage pods/clean-up
|
// allocate for the backup pod the same amount of resources as for normal DB pods
|
||||||
|
|
||||||
// configure a pod of a batch job
|
|
||||||
|
|
||||||
defaultResources := c.makeDefaultResources()
|
defaultResources := c.makeDefaultResources()
|
||||||
resourceRequirements, err = generateResourceRequirements(c.Spec.Resources, defaultResources)
|
resourceRequirements, err = generateResourceRequirements(c.Spec.Resources, defaultResources)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("could not generate resource requirements for the pod of a logical backup cron job: %v", err)
|
return nil, fmt.Errorf("could not generate resource requirements for logical backup pods: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
envVars := c.generateLogicalBackupPodEnvVars()
|
envVars := c.generateLogicalBackupPodEnvVars()
|
||||||
logicalBackupContainer := generateSpiloContainer(
|
logicalBackupContainer := generateContainer(
|
||||||
"logical-backup",
|
"logical-backup",
|
||||||
&c.OpConfig.LogicalBackup.LogicalBackupDockerImage,
|
&c.OpConfig.LogicalBackup.LogicalBackupDockerImage,
|
||||||
resourceRequirements,
|
resourceRequirements,
|
||||||
envVars,
|
envVars,
|
||||||
[]v1.VolumeMount{},
|
[]v1.VolumeMount{},
|
||||||
c.OpConfig.SpiloPrivileged,
|
c.OpConfig.SpiloPrivileged, // use same value as for normal DB pods
|
||||||
)
|
)
|
||||||
|
|
||||||
labels := map[string]string{
|
labels := map[string]string{
|
||||||
"version": c.Name,
|
"version": c.Name,
|
||||||
"spilo-role": "replica",
|
"application": "spilo-logical-backup",
|
||||||
}
|
}
|
||||||
podAffinityTerm := v1.PodAffinityTerm{
|
podAffinityTerm := v1.PodAffinityTerm{
|
||||||
LabelSelector: &metav1.LabelSelector{
|
LabelSelector: &metav1.LabelSelector{
|
||||||
|
|
@ -1304,6 +1303,7 @@ func (c *Cluster) generateLogicalBackupJob() (*batchv1beta1.CronJob, error) {
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
// re-use the method that generates DB pod templates
|
||||||
if podTemplate, err = generatePodTemplate(
|
if podTemplate, err = generatePodTemplate(
|
||||||
c.Namespace,
|
c.Namespace,
|
||||||
c.labelsSet(true),
|
c.labelsSet(true),
|
||||||
|
|
@ -1318,15 +1318,13 @@ func (c *Cluster) generateLogicalBackupJob() (*batchv1beta1.CronJob, error) {
|
||||||
"",
|
"",
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
c.OpConfig.PodAntiAffinityTopologyKey); err != nil {
|
""); err != nil {
|
||||||
return nil, fmt.Errorf("could not generate pod template for logical backup cron job: %v", err)
|
return nil, fmt.Errorf("could not generate pod template for logical backup pod: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// overwrite specifc params of logical backups pods
|
||||||
podTemplate.Spec.Affinity = &podAffinity
|
podTemplate.Spec.Affinity = &podAffinity
|
||||||
|
podTemplate.Spec.RestartPolicy = "Never" // affects containers within a pod
|
||||||
// affects containers within a pod
|
|
||||||
// pods of k8s jobs support only "OnFailure" or "Never"
|
|
||||||
podTemplate.Spec.RestartPolicy = "Never"
|
|
||||||
|
|
||||||
// configure a batch job
|
// configure a batch job
|
||||||
|
|
||||||
|
|
@ -1361,8 +1359,6 @@ func (c *Cluster) generateLogicalBackupJob() (*batchv1beta1.CronJob, error) {
|
||||||
return cronJob, nil
|
return cronJob, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// generateLogicalBackupPodEnvVars generates environment variables for the pod started
|
|
||||||
// by the logical backup cron job
|
|
||||||
func (c *Cluster) generateLogicalBackupPodEnvVars() []v1.EnvVar {
|
func (c *Cluster) generateLogicalBackupPodEnvVars() []v1.EnvVar {
|
||||||
|
|
||||||
envVars := []v1.EnvVar{
|
envVars := []v1.EnvVar{
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/api/apps/v1beta1"
|
"k8s.io/api/apps/v1beta1"
|
||||||
batchv1beta1 "k8s.io/api/batch/v1beta1"
|
batchv1beta1 "k8s.io/api/batch/v1beta1"
|
||||||
"k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
policybeta1 "k8s.io/api/policy/v1beta1"
|
policybeta1 "k8s.io/api/policy/v1beta1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
|
@ -610,7 +610,7 @@ func (c *Cluster) createRoles() (err error) {
|
||||||
return c.syncRoles()
|
return c.syncRoles()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cluster) createBackupCronJob() (err error) {
|
func (c *Cluster) createLogicalBackupJob() (err error) {
|
||||||
|
|
||||||
c.setProcessName("creating a k8s cron job for logical backups")
|
c.setProcessName("creating a k8s cron job for logical backups")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -568,7 +568,7 @@ func (c *Cluster) syncLogicalBackupJob() error {
|
||||||
// no existing logical backup job, create new one
|
// no existing logical backup job, create new one
|
||||||
c.logger.Info("could not find the cluster's logical backup job")
|
c.logger.Info("could not find the cluster's logical backup job")
|
||||||
|
|
||||||
if err = c.createBackupCronJob(); err == nil {
|
if err = c.createLogicalBackupJob(); err == nil {
|
||||||
c.logger.Infof("created missing logical backup job %q", c.logicalBackupJob.Name)
|
c.logger.Infof("created missing logical backup job %q", c.logicalBackupJob.Name)
|
||||||
} else {
|
} else {
|
||||||
if !k8sutil.ResourceAlreadyExists(err) {
|
if !k8sutil.ResourceAlreadyExists(err) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue