diff --git a/percona/controller/pgcluster/controller.go b/percona/controller/pgcluster/controller.go index b2dede1c6..cf59fc4f1 100644 --- a/percona/controller/pgcluster/controller.go +++ b/percona/controller/pgcluster/controller.go @@ -456,6 +456,20 @@ func (r *PGClusterReconciler) reconcilePatroniVersionCheck(ctx context.Context, if len(cr.Spec.InstanceSets) == 0 { return errors.New(".spec.instances is a required value") // shouldn't happen as the value is required in the crd.yaml } + + // Using minimal resources since the patroni version check pod is performing a very simple + // operation i.e. "patronictl version" + resources := corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("64Mi"), + }, + Requests: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("50m"), + corev1.ResourceMemory: resource.MustParse("32Mi"), + }, + } + p = &corev1.Pod{ ObjectMeta: meta, Spec: corev1.PodSpec{ @@ -469,7 +483,7 @@ func (r *PGClusterReconciler) reconcilePatroniVersionCheck(ctx context.Context, Args: []string{ "-c", "sleep 60", }, - Resources: cr.Spec.InstanceSets[0].Resources, + Resources: resources, SecurityContext: initialize.RestrictedSecurityContext(cr.CompareVersion("2.8.0") >= 0), }, }, @@ -477,16 +491,7 @@ func (r *PGClusterReconciler) reconcilePatroniVersionCheck(ctx context.Context, Affinity: cr.Spec.InstanceSets[0].Affinity, TerminationGracePeriodSeconds: ptr.To(int64(5)), ImagePullSecrets: cr.Spec.ImagePullSecrets, - Resources: &corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("100m"), - corev1.ResourceMemory: resource.MustParse("64Mi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("50m"), - corev1.ResourceMemory: resource.MustParse("32Mi"), - }, - }, + Resources: &resources, }, } diff --git a/percona/controller/pgcluster/controller_test.go b/percona/controller/pgcluster/controller_test.go index a6d557466..7c5d3926c 100644 --- a/percona/controller/pgcluster/controller_test.go +++ b/percona/controller/pgcluster/controller_test.go @@ -2191,6 +2191,26 @@ var _ = Describe("patroni version check", Ordered, func() { Expect(pod.Spec.Containers[0].Image).To(Equal(cr2.Spec.Image)) Expect(pod.Spec.Containers[0].Command).To(Equal([]string{"bash"})) Expect(pod.Spec.Containers[0].Args).To(Equal([]string{"-c", "sleep 60"})) + Expect(pod.Spec.Containers[0].Resources).To(Equal(corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("64Mi"), + }, + Requests: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("50m"), + corev1.ResourceMemory: resource.MustParse("32Mi"), + }, + })) + Expect(pod.Spec.Resources).To(Equal(&corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("64Mi"), + }, + Requests: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("50m"), + corev1.ResourceMemory: resource.MustParse("32Mi"), + }, + })) uid := int64(1001) expectedSecurityContext := &corev1.PodSecurityContext{ diff --git a/percona/controller/pgcluster/suite_test.go b/percona/controller/pgcluster/suite_test.go index 19d7ad4ed..3adb928c8 100644 --- a/percona/controller/pgcluster/suite_test.go +++ b/percona/controller/pgcluster/suite_test.go @@ -44,8 +44,14 @@ var _ = BeforeSuite(func() { testEnv = &envtest.Environment{ CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "config", "crd", "bases")}, ErrorIfCRDPathMissing: true, + ControlPlane: envtest.ControlPlane{ + APIServer: &envtest.APIServer{}, + }, } + // PodLevelResources feature gate is enabled by default on k8s 1.34. + testEnv.ControlPlane.APIServer.Configure().Set("feature-gates", "PodLevelResources=true") + var err error cfg, err = testEnv.Start() Expect(err).NotTo(HaveOccurred())