Skip to content

Commit 0a61f74

Browse files
authored
Merge pull request #1326 from percona/K8SPG-879
K8SPG-879 patroni version check pod and container should align the resources for k8s version 1.34
2 parents 73bb7c7 + bab117a commit 0a61f74

File tree

3 files changed

+42
-11
lines changed

3 files changed

+42
-11
lines changed

percona/controller/pgcluster/controller.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,20 @@ func (r *PGClusterReconciler) reconcilePatroniVersionCheck(ctx context.Context,
456456
if len(cr.Spec.InstanceSets) == 0 {
457457
return errors.New(".spec.instances is a required value") // shouldn't happen as the value is required in the crd.yaml
458458
}
459+
460+
// Using minimal resources since the patroni version check pod is performing a very simple
461+
// operation i.e. "patronictl version"
462+
resources := corev1.ResourceRequirements{
463+
Limits: corev1.ResourceList{
464+
corev1.ResourceCPU: resource.MustParse("100m"),
465+
corev1.ResourceMemory: resource.MustParse("64Mi"),
466+
},
467+
Requests: corev1.ResourceList{
468+
corev1.ResourceCPU: resource.MustParse("50m"),
469+
corev1.ResourceMemory: resource.MustParse("32Mi"),
470+
},
471+
}
472+
459473
p = &corev1.Pod{
460474
ObjectMeta: meta,
461475
Spec: corev1.PodSpec{
@@ -469,24 +483,15 @@ func (r *PGClusterReconciler) reconcilePatroniVersionCheck(ctx context.Context,
469483
Args: []string{
470484
"-c", "sleep 60",
471485
},
472-
Resources: cr.Spec.InstanceSets[0].Resources,
486+
Resources: resources,
473487
SecurityContext: initialize.RestrictedSecurityContext(cr.CompareVersion("2.8.0") >= 0),
474488
},
475489
},
476490
SecurityContext: cr.Spec.InstanceSets[0].SecurityContext,
477491
Affinity: cr.Spec.InstanceSets[0].Affinity,
478492
TerminationGracePeriodSeconds: ptr.To(int64(5)),
479493
ImagePullSecrets: cr.Spec.ImagePullSecrets,
480-
Resources: &corev1.ResourceRequirements{
481-
Limits: corev1.ResourceList{
482-
corev1.ResourceCPU: resource.MustParse("100m"),
483-
corev1.ResourceMemory: resource.MustParse("64Mi"),
484-
},
485-
Requests: corev1.ResourceList{
486-
corev1.ResourceCPU: resource.MustParse("50m"),
487-
corev1.ResourceMemory: resource.MustParse("32Mi"),
488-
},
489-
},
494+
Resources: &resources,
490495
},
491496
}
492497

percona/controller/pgcluster/controller_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2191,6 +2191,26 @@ var _ = Describe("patroni version check", Ordered, func() {
21912191
Expect(pod.Spec.Containers[0].Image).To(Equal(cr2.Spec.Image))
21922192
Expect(pod.Spec.Containers[0].Command).To(Equal([]string{"bash"}))
21932193
Expect(pod.Spec.Containers[0].Args).To(Equal([]string{"-c", "sleep 60"}))
2194+
Expect(pod.Spec.Containers[0].Resources).To(Equal(corev1.ResourceRequirements{
2195+
Limits: corev1.ResourceList{
2196+
corev1.ResourceCPU: resource.MustParse("100m"),
2197+
corev1.ResourceMemory: resource.MustParse("64Mi"),
2198+
},
2199+
Requests: corev1.ResourceList{
2200+
corev1.ResourceCPU: resource.MustParse("50m"),
2201+
corev1.ResourceMemory: resource.MustParse("32Mi"),
2202+
},
2203+
}))
2204+
Expect(pod.Spec.Resources).To(Equal(&corev1.ResourceRequirements{
2205+
Limits: corev1.ResourceList{
2206+
corev1.ResourceCPU: resource.MustParse("100m"),
2207+
corev1.ResourceMemory: resource.MustParse("64Mi"),
2208+
},
2209+
Requests: corev1.ResourceList{
2210+
corev1.ResourceCPU: resource.MustParse("50m"),
2211+
corev1.ResourceMemory: resource.MustParse("32Mi"),
2212+
},
2213+
}))
21942214

21952215
uid := int64(1001)
21962216
expectedSecurityContext := &corev1.PodSecurityContext{

percona/controller/pgcluster/suite_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,14 @@ var _ = BeforeSuite(func() {
4444
testEnv = &envtest.Environment{
4545
CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "config", "crd", "bases")},
4646
ErrorIfCRDPathMissing: true,
47+
ControlPlane: envtest.ControlPlane{
48+
APIServer: &envtest.APIServer{},
49+
},
4750
}
4851

52+
// PodLevelResources feature gate is enabled by default on k8s 1.34.
53+
testEnv.ControlPlane.APIServer.Configure().Set("feature-gates", "PodLevelResources=true")
54+
4955
var err error
5056
cfg, err = testEnv.Start()
5157
Expect(err).NotTo(HaveOccurred())

0 commit comments

Comments
 (0)