Skip to content

Commit 446000b

Browse files
jelmerbenjaminjb
andauthored
Fix compatibility with Kubernetes 1.25 (#3370)
* batchv1beta1 => batchv1, policyv1beta1 => policyv1 This changes in particular: * policyv1beta1.PodDisruptionBudget => policyv1.PodDisruptionBudget * batchv1beta1.CronJob => batchv1.CronJob * Run tests with kubernetes 1.21. * Update .github/workflows/test.yaml Co-authored-by: Benjamin Blattberg <benjamin.blattberg@gmail.com>
1 parent b5d5ff5 commit 446000b

File tree

10 files changed

+43
-46
lines changed

10 files changed

+43
-46
lines changed

.github/workflows/test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
strategy:
5252
fail-fast: false
5353
matrix:
54-
kubernetes: [v1.24, v1.20]
54+
kubernetes: [latest, v1.21]
5555
steps:
5656
- uses: actions/checkout@v3
5757
- uses: actions/setup-go@v3

internal/controller/postgrescluster/cluster_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
"go.opentelemetry.io/otel"
2727
"gotest.tools/v3/assert"
2828
appsv1 "k8s.io/api/apps/v1"
29-
batchv1beta1 "k8s.io/api/batch/v1beta1"
29+
batchv1 "k8s.io/api/batch/v1"
3030
corev1 "k8s.io/api/core/v1"
3131
rbacv1 "k8s.io/api/rbac/v1"
3232
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -60,8 +60,8 @@ var gvks = []schema.GroupVersionKind{{
6060
Version: appsv1.SchemeGroupVersion.Version,
6161
Kind: "DeploymentList",
6262
}, {
63-
Group: batchv1beta1.SchemeGroupVersion.Group,
64-
Version: batchv1beta1.SchemeGroupVersion.Version,
63+
Group: batchv1.SchemeGroupVersion.Group,
64+
Version: batchv1.SchemeGroupVersion.Version,
6565
Kind: "CronJobList",
6666
}, {
6767
Group: corev1.SchemeGroupVersion.Group,
@@ -139,7 +139,7 @@ func TestCustomLabels(t *testing.T) {
139139
labels["resource"] = resource.GetLabels()
140140
labels["podTemplate"] = resource.Spec.Template.GetLabels()
141141
case "CronJob":
142-
var resource batchv1beta1.CronJob
142+
var resource batchv1.CronJob
143143
err = runtime.DefaultUnstructuredConverter.
144144
FromUnstructured(u.UnstructuredContent(), &resource)
145145
labels["resource"] = resource.GetLabels()
@@ -392,7 +392,7 @@ func TestCustomAnnotations(t *testing.T) {
392392
annotations["resource"] = resource.GetAnnotations()
393393
annotations["podTemplate"] = resource.Spec.Template.GetAnnotations()
394394
case "CronJob":
395-
var resource batchv1beta1.CronJob
395+
var resource batchv1.CronJob
396396
err = runtime.DefaultUnstructuredConverter.
397397
FromUnstructured(u.UnstructuredContent(), &resource)
398398
annotations["resource"] = resource.GetAnnotations()

internal/controller/postgrescluster/controller.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@ import (
2626
"go.opentelemetry.io/otel/trace"
2727
appsv1 "k8s.io/api/apps/v1"
2828
batchv1 "k8s.io/api/batch/v1"
29-
batchv1beta1 "k8s.io/api/batch/v1beta1"
3029
corev1 "k8s.io/api/core/v1"
31-
policyv1beta1 "k8s.io/api/policy/v1beta1"
30+
policyv1 "k8s.io/api/policy/v1"
3231
rbacv1 "k8s.io/api/rbac/v1"
3332
"k8s.io/apimachinery/pkg/api/equality"
3433
"k8s.io/apimachinery/pkg/api/meta"
@@ -453,8 +452,8 @@ func (r *Reconciler) SetupWithManager(mgr manager.Manager) error {
453452
Owns(&batchv1.Job{}).
454453
Owns(&rbacv1.Role{}).
455454
Owns(&rbacv1.RoleBinding{}).
456-
Owns(&batchv1beta1.CronJob{}).
457-
Owns(&policyv1beta1.PodDisruptionBudget{}).
455+
Owns(&batchv1.CronJob{}).
456+
Owns(&policyv1.PodDisruptionBudget{}).
458457
Watches(&source.Kind{Type: &corev1.Pod{}}, r.watchPods()).
459458
Watches(&source.Kind{Type: &appsv1.StatefulSet{}},
460459
r.controllerRefHandlerFuncs()). // watch all StatefulSets

internal/controller/postgrescluster/instance.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import (
2828
"go.opentelemetry.io/otel/trace"
2929
appsv1 "k8s.io/api/apps/v1"
3030
corev1 "k8s.io/api/core/v1"
31-
policyv1beta1 "k8s.io/api/policy/v1beta1"
31+
policyv1 "k8s.io/api/policy/v1"
3232
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3333
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3434
"k8s.io/apimachinery/pkg/runtime/schema"
@@ -581,7 +581,7 @@ func (r *Reconciler) cleanupPodDisruptionBudgets(
581581
) error {
582582
selector, err := naming.AsSelector(naming.ClusterInstanceSets(cluster.Name))
583583

584-
pdbList := &policyv1beta1.PodDisruptionBudgetList{}
584+
pdbList := &policyv1.PodDisruptionBudgetList{}
585585
if err == nil {
586586
err = r.Client.List(ctx, pdbList,
587587
client.InNamespace(cluster.Namespace), client.MatchingLabelsSelector{

internal/controller/postgrescluster/instance_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import (
3333
"gotest.tools/v3/assert"
3434
appsv1 "k8s.io/api/apps/v1"
3535
corev1 "k8s.io/api/core/v1"
36-
policyv1beta1 "k8s.io/api/policy/v1beta1"
36+
policyv1 "k8s.io/api/policy/v1"
3737
apierrors "k8s.io/apimachinery/pkg/api/errors"
3838
"k8s.io/apimachinery/pkg/api/resource"
3939
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -1733,7 +1733,7 @@ func TestReconcileInstanceSetPodDisruptionBudget(t *testing.T) {
17331733
cluster *v1beta1.PostgresCluster,
17341734
spec *v1beta1.PostgresInstanceSetSpec,
17351735
) bool {
1736-
got := &policyv1beta1.PodDisruptionBudget{}
1736+
got := &policyv1.PodDisruptionBudget{}
17371737
err := r.Client.Get(ctx,
17381738
naming.AsObjectKey(naming.InstanceSet(cluster, spec)),
17391739
got)
@@ -1854,7 +1854,7 @@ func TestCleanupDisruptionBudgets(t *testing.T) {
18541854
cluster *v1beta1.PostgresCluster,
18551855
spec *v1beta1.PostgresInstanceSetSpec,
18561856
minAvailable *intstr.IntOrString,
1857-
) *policyv1beta1.PodDisruptionBudget {
1857+
) *policyv1.PodDisruptionBudget {
18581858
meta := naming.InstanceSet(cluster, spec)
18591859
meta.Labels = map[string]string{
18601860
naming.LabelCluster: cluster.Name,
@@ -1871,17 +1871,17 @@ func TestCleanupDisruptionBudgets(t *testing.T) {
18711871
}
18721872

18731873
createPDB := func(
1874-
pdb *policyv1beta1.PodDisruptionBudget,
1874+
pdb *policyv1.PodDisruptionBudget,
18751875
) error {
18761876
return r.Client.Create(ctx, pdb)
18771877
}
18781878

18791879
foundPDB := func(
1880-
pdb *policyv1beta1.PodDisruptionBudget,
1880+
pdb *policyv1.PodDisruptionBudget,
18811881
) bool {
18821882
return !apierrors.IsNotFound(
18831883
r.Client.Get(ctx, client.ObjectKeyFromObject(pdb),
1884-
&policyv1beta1.PodDisruptionBudget{}))
1884+
&policyv1.PodDisruptionBudget{}))
18851885
}
18861886

18871887
t.Run("pdbs not found", func(t *testing.T) {

internal/controller/postgrescluster/pgbackrest.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
"github.com/pkg/errors"
2828
appsv1 "k8s.io/api/apps/v1"
2929
batchv1 "k8s.io/api/batch/v1"
30-
batchv1beta1 "k8s.io/api/batch/v1beta1"
3130
corev1 "k8s.io/api/core/v1"
3231
rbacv1 "k8s.io/api/rbac/v1"
3332
apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -118,7 +117,7 @@ var regexRepoIndex = regexp.MustCompile(`\d+`)
118117
// RepoResources is used to store various resources for pgBackRest repositories and
119118
// repository hosts
120119
type RepoResources struct {
121-
cronjobs []*batchv1beta1.CronJob
120+
cronjobs []*batchv1.CronJob
122121
manualBackupJobs []*batchv1.Job
123122
replicaCreateBackupJobs []*batchv1.Job
124123
hosts []*appsv1.StatefulSet
@@ -202,8 +201,8 @@ func (r *Reconciler) getPGBackRestResources(ctx context.Context,
202201
Version: appsv1.SchemeGroupVersion.Version,
203202
Kind: "StatefulSetList",
204203
}, {
205-
Group: batchv1beta1.SchemeGroupVersion.Group,
206-
Version: batchv1beta1.SchemeGroupVersion.Version,
204+
Group: batchv1.SchemeGroupVersion.Group,
205+
Version: batchv1.SchemeGroupVersion.Version,
207206
Kind: "CronJobList",
208207
}}
209208

@@ -400,7 +399,7 @@ func unstructuredToRepoResources(kind string, repoResources *RepoResources,
400399
repoResources.hosts = append(repoResources.hosts, &stsList.Items[i])
401400
}
402401
case "CronJobList":
403-
var cronList batchv1beta1.CronJobList
402+
var cronList batchv1.CronJobList
404403
if err := runtime.DefaultUnstructuredConverter.
405404
FromUnstructured(uList.UnstructuredContent(), &cronList); err != nil {
406405
return errors.WithStack(err)
@@ -2739,7 +2738,7 @@ func getRepoVolumeStatus(repoStatus []v1beta1.RepoStatus, repoVolumes []*corev1.
27392738
// schedules configured in the cluster definition
27402739
func (r *Reconciler) reconcileScheduledBackups(
27412740
ctx context.Context, cluster *v1beta1.PostgresCluster, sa *corev1.ServiceAccount,
2742-
cronjobs []*batchv1beta1.CronJob,
2741+
cronjobs []*batchv1.CronJob,
27432742
) bool {
27442743
log := logging.FromContext(ctx).WithValues("reconcileResource", "repoCronJob")
27452744
// requeue if there is an error during creation
@@ -2783,7 +2782,7 @@ func (r *Reconciler) reconcileScheduledBackups(
27832782
func (r *Reconciler) reconcilePGBackRestCronJob(
27842783
ctx context.Context, cluster *v1beta1.PostgresCluster, repo v1beta1.PGBackRestRepo,
27852784
backupType string, schedule *string, serviceAccount *corev1.ServiceAccount,
2786-
cronjobs []*batchv1beta1.CronJob,
2785+
cronjobs []*batchv1.CronJob,
27872786
) error {
27882787

27892788
log := logging.FromContext(ctx).WithValues("reconcileResource", "repoCronJob")
@@ -2871,12 +2870,12 @@ func (r *Reconciler) reconcilePGBackRestCronJob(
28712870
suspend := (cluster.Spec.Shutdown != nil && *cluster.Spec.Shutdown) ||
28722871
(cluster.Spec.Standby != nil && cluster.Spec.Standby.Enabled)
28732872

2874-
pgBackRestCronJob := &batchv1beta1.CronJob{
2873+
pgBackRestCronJob := &batchv1.CronJob{
28752874
ObjectMeta: objectmeta,
2876-
Spec: batchv1beta1.CronJobSpec{
2875+
Spec: batchv1.CronJobSpec{
28772876
Schedule: *schedule,
28782877
Suspend: &suspend,
2879-
JobTemplate: batchv1beta1.JobTemplateSpec{
2878+
JobTemplate: batchv1.JobTemplateSpec{
28802879
ObjectMeta: metav1.ObjectMeta{
28812880
Annotations: annotations,
28822881
Labels: labels,
@@ -2894,7 +2893,7 @@ func (r *Reconciler) reconcilePGBackRestCronJob(
28942893
cluster.Spec.ImagePullSecrets
28952894

28962895
// set metadata
2897-
pgBackRestCronJob.SetGroupVersionKind(batchv1beta1.SchemeGroupVersion.WithKind("CronJob"))
2896+
pgBackRestCronJob.SetGroupVersionKind(batchv1.SchemeGroupVersion.WithKind("CronJob"))
28982897
err = errors.WithStack(r.setControllerReference(cluster, pgBackRestCronJob))
28992898

29002899
if err == nil {

internal/controller/postgrescluster/pgbackrest_test.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import (
3333
"gotest.tools/v3/assert"
3434
appsv1 "k8s.io/api/apps/v1"
3535
batchv1 "k8s.io/api/batch/v1"
36-
batchv1beta1 "k8s.io/api/batch/v1beta1"
3736
corev1 "k8s.io/api/core/v1"
3837
rbacv1 "k8s.io/api/rbac/v1"
3938
apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -173,8 +172,8 @@ func fakePostgresCluster(clusterName, namespace, clusterUID string,
173172
return postgresCluster
174173
}
175174

176-
func fakeObservedCronJobs() []*batchv1beta1.CronJob {
177-
return []*batchv1beta1.CronJob{
175+
func fakeObservedCronJobs() []*batchv1.CronJob {
176+
return []*batchv1.CronJob{
178177
{
179178
ObjectMeta: metav1.ObjectMeta{
180179
Name: "fake-cronjob",
@@ -518,7 +517,7 @@ topologySpreadConstraints:
518517
requeue := r.reconcileScheduledBackups(ctx, postgresCluster, serviceAccount, fakeObservedCronJobs())
519518
assert.Assert(t, !requeue)
520519

521-
returnedCronJob := &batchv1beta1.CronJob{}
520+
returnedCronJob := &batchv1.CronJob{}
522521
if err := tClient.Get(ctx, types.NamespacedName{
523522
Name: postgresCluster.Name + "-repo1-full",
524523
Namespace: postgresCluster.GetNamespace(),
@@ -564,7 +563,7 @@ topologySpreadConstraints:
564563

565564
t.Run("pgbackrest schedule suspended status", func(t *testing.T) {
566565

567-
returnedCronJob := &batchv1beta1.CronJob{}
566+
returnedCronJob := &batchv1.CronJob{}
568567
if err := tClient.Get(ctx, types.NamespacedName{
569568
Name: postgresCluster.Name + "-repo1-full",
570569
Namespace: postgresCluster.GetNamespace(),
@@ -3539,7 +3538,7 @@ func TestReconcileScheduledBackups(t *testing.T) {
35393538

35403539
var requeue bool
35413540
if tc.cronJobs {
3542-
existingCronJobs := []*batchv1beta1.CronJob{
3541+
existingCronJobs := []*batchv1.CronJob{
35433542
{
35443543
ObjectMeta: metav1.ObjectMeta{
35453544
Name: "existingcronjob-repo1-full",
@@ -3614,7 +3613,7 @@ func TestReconcileScheduledBackups(t *testing.T) {
36143613
cronJobName = postgresCluster.Name + "-repo1-" + backupType
36153614
}
36163615

3617-
returnedCronJob := &batchv1beta1.CronJob{}
3616+
returnedCronJob := &batchv1.CronJob{}
36183617
if err := tClient.Get(ctx, types.NamespacedName{
36193618
Name: cronJobName,
36203619
Namespace: postgresCluster.GetNamespace(),

internal/controller/postgrescluster/pgbouncer.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
"github.com/pkg/errors"
2424
appsv1 "k8s.io/api/apps/v1"
2525
corev1 "k8s.io/api/core/v1"
26-
policyv1beta1 "k8s.io/api/policy/v1beta1"
26+
policyv1 "k8s.io/api/policy/v1"
2727
"k8s.io/apimachinery/pkg/api/meta"
2828
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2929
"k8s.io/apimachinery/pkg/util/intstr"
@@ -531,7 +531,7 @@ func (r *Reconciler) reconcilePGBouncerPodDisruptionBudget(
531531
cluster *v1beta1.PostgresCluster,
532532
) error {
533533
deleteExistingPDB := func(cluster *v1beta1.PostgresCluster) error {
534-
existing := &policyv1beta1.PodDisruptionBudget{ObjectMeta: naming.ClusterPGBouncer(cluster)}
534+
existing := &policyv1.PodDisruptionBudget{ObjectMeta: naming.ClusterPGBouncer(cluster)}
535535
err := errors.WithStack(r.Client.Get(ctx, client.ObjectKeyFromObject(existing), existing))
536536
if err == nil {
537537
err = errors.WithStack(r.deleteControlled(ctx, cluster, existing))
@@ -569,7 +569,7 @@ func (r *Reconciler) reconcilePGBouncerPodDisruptionBudget(
569569
cluster.Spec.Proxy.PGBouncer.Metadata.GetAnnotationsOrNil())
570570

571571
selector := naming.ClusterPGBouncerSelector(cluster)
572-
pdb := &policyv1beta1.PodDisruptionBudget{}
572+
pdb := &policyv1.PodDisruptionBudget{}
573573
if err == nil {
574574
pdb, err = r.generatePodDisruptionBudget(cluster, meta, minAvailable, selector)
575575
}

internal/controller/postgrescluster/pgbouncer_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
"github.com/pkg/errors"
2626
"gotest.tools/v3/assert"
2727
corev1 "k8s.io/api/core/v1"
28-
policyv1beta1 "k8s.io/api/policy/v1beta1"
28+
policyv1 "k8s.io/api/policy/v1"
2929
apierrors "k8s.io/apimachinery/pkg/api/errors"
3030
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3131
"k8s.io/client-go/tools/record"
@@ -515,7 +515,7 @@ func TestReconcilePGBouncerDisruptionBudget(t *testing.T) {
515515
foundPDB := func(
516516
cluster *v1beta1.PostgresCluster,
517517
) bool {
518-
got := &policyv1beta1.PodDisruptionBudget{}
518+
got := &policyv1.PodDisruptionBudget{}
519519
err := r.Client.Get(ctx,
520520
naming.AsObjectKey(naming.ClusterPGBouncer(cluster)),
521521
got)

internal/controller/postgrescluster/pod_disruption_budget.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ package postgrescluster
2222
// https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget
2323
import (
2424
"github.com/pkg/errors"
25-
policyv1beta1 "k8s.io/api/policy/v1beta1"
25+
policyv1 "k8s.io/api/policy/v1"
2626
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2727
"k8s.io/apimachinery/pkg/util/intstr"
2828

@@ -37,15 +37,15 @@ func (r *Reconciler) generatePodDisruptionBudget(
3737
meta metav1.ObjectMeta,
3838
minAvailable *intstr.IntOrString,
3939
selector metav1.LabelSelector,
40-
) (*policyv1beta1.PodDisruptionBudget, error) {
41-
pdb := &policyv1beta1.PodDisruptionBudget{
40+
) (*policyv1.PodDisruptionBudget, error) {
41+
pdb := &policyv1.PodDisruptionBudget{
4242
ObjectMeta: meta,
43-
Spec: policyv1beta1.PodDisruptionBudgetSpec{
43+
Spec: policyv1.PodDisruptionBudgetSpec{
4444
MinAvailable: minAvailable,
4545
Selector: &selector,
4646
},
4747
}
48-
pdb.SetGroupVersionKind(policyv1beta1.SchemeGroupVersion.WithKind("PodDisruptionBudget"))
48+
pdb.SetGroupVersionKind(policyv1.SchemeGroupVersion.WithKind("PodDisruptionBudget"))
4949
err := errors.WithStack(r.setControllerReference(cluster, pdb))
5050
return pdb, err
5151
}

0 commit comments

Comments
 (0)