diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 80c59f872..220644d19 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -683,12 +683,17 @@ func (c *Cluster) enforceMinResourceLimits(spec *acidv1.PostgresSpec) error { err error ) + if spec.Resources == nil { + return nil + } + // setting limits too low can cause unnecessary evictions / OOM kills minCPULimit := c.OpConfig.MinCPULimit minMemoryLimit := c.OpConfig.MinMemoryLimit cpuLimit := spec.Resources.ResourceLimits.CPU if cpuLimit != "" { + cpuLimit := spec.Resources.ResourceLimits.CPU isSmaller, err = util.IsSmallerQuantity(cpuLimit, minCPULimit) if err != nil { return fmt.Errorf("could not compare defined CPU limit %s with configured minimum value %s: %v", cpuLimit, minCPULimit, err) diff --git a/pkg/cluster/k8sres.go b/pkg/cluster/k8sres.go index 7e96adacc..a23b9e195 100644 --- a/pkg/cluster/k8sres.go +++ b/pkg/cluster/k8sres.go @@ -1007,14 +1007,14 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef // controller adjusts the default memory request at operator startup - request := spec.Resources.ResourceRequests.Memory - if request == "" { - request = c.OpConfig.Resources.DefaultMemoryRequest - } + var request, limit string - limit := spec.Resources.ResourceLimits.Memory - if limit == "" { + if spec.Resources == nil { + request = c.OpConfig.Resources.DefaultMemoryRequest limit = c.OpConfig.Resources.DefaultMemoryLimit + } else { + request = spec.Resources.ResourceRequests.Memory + limit = spec.Resources.ResourceRequests.Memory } isSmaller, err := util.IsSmallerQuantity(request, limit) @@ -1034,14 +1034,14 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef for _, sidecar := range spec.Sidecars { // TODO #413 - sidecarRequest := sidecar.Resources.ResourceRequests.Memory - if request == "" { - request = c.OpConfig.Resources.DefaultMemoryRequest - } + var sidecarRequest, sidecarLimit string - sidecarLimit := sidecar.Resources.ResourceLimits.Memory - if limit == "" { - limit = c.OpConfig.Resources.DefaultMemoryLimit + if sidecar.Resources == nil { + sidecarRequest = c.OpConfig.Resources.DefaultMemoryRequest + sidecarLimit = c.OpConfig.Resources.DefaultMemoryLimit + } else { + sidecarRequest = sidecar.Resources.ResourceRequests.Memory + sidecarLimit = sidecar.Resources.ResourceRequests.Memory } isSmaller, err := util.IsSmallerQuantity(sidecarRequest, sidecarLimit)