From 90d6bdd25ad2d0431705194b3b02b9cfb4700c53 Mon Sep 17 00:00:00 2001 From: Rafael Franzke Date: Thu, 27 Aug 2020 15:19:15 +0200 Subject: [PATCH] Update API versions for 1.19 https://github.com/kubernetes/kubernetes/pull/91420 https://github.com/kubernetes/kubernetes/pull/90672 https://github.com/kubernetes/kubernetes/pull/90671 https://github.com/kubernetes/kubernetes/pull/89778 https://github.com/kubernetes/kubernetes/pull/90463 can only be tacked later when the GRM vendors the 1.19 libraries and is capable of understanding autoscaling/v2beta2 (as it has some incompatible changes compared to autoscaling/v2beta1) --- charts/utils-templates/templates/_versions.tpl | 4 +++- extensions/pkg/controller/csimigration/reconciler.go | 4 ++-- .../pkg/controller/csimigration/reconciler_test.go | 12 ++++++------ hack/local-development/dev-setup-register-gardener | 6 +++--- pkg/operation/botanist/cleanup.go | 4 ++-- pkg/operation/botanist/controlplane.go | 1 + .../controlplane/kubescheduler/kube_scheduler.go | 7 ++++++- .../kubescheduler/kube_scheduler_test.go | 10 ++++++++-- pkg/operation/common/utils.go | 1 + 9 files changed, 32 insertions(+), 17 deletions(-) diff --git a/charts/utils-templates/templates/_versions.tpl b/charts/utils-templates/templates/_versions.tpl index c58fac778fa..36223421e9f 100644 --- a/charts/utils-templates/templates/_versions.tpl +++ b/charts/utils-templates/templates/_versions.tpl @@ -81,7 +81,9 @@ policy/v1beta1 {{- end -}} {{- define "ingressversion" -}} -{{- if semverCompare ">= 1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- if semverCompare ">= 1.19-0" .Capabilities.KubeVersion.GitVersion -}} +networking.k8s.io/v1 +{{- else if semverCompare ">= 1.14-0" .Capabilities.KubeVersion.GitVersion -}} networking.k8s.io/v1beta1 {{- else -}} extensions/v1beta1 diff --git a/extensions/pkg/controller/csimigration/reconciler.go b/extensions/pkg/controller/csimigration/reconciler.go index badb3283137..a6c53908b8a 100644 --- a/extensions/pkg/controller/csimigration/reconciler.go +++ b/extensions/pkg/controller/csimigration/reconciler.go @@ -30,7 +30,7 @@ import ( "github.com/go-logr/logr" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - storagev1beta1 "k8s.io/api/storage/v1beta1" + storagev1 "k8s.io/api/storage/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -182,7 +182,7 @@ func (r *reconciler) reconcile(ctx context.Context, cluster *extensionsv1alpha1. // Delete legacy storage classes created by the extension controller to allow their recreation with the new CSI // provisioner names and the same storage class names (the storage classes are immutable, hence, a regular UPDATE // does not work). - storageClassList := &storagev1beta1.StorageClassList{} + storageClassList := &storagev1.StorageClassList{} if err := shootClient.List(ctx, storageClassList); err != nil { return reconcile.Result{}, err } diff --git a/extensions/pkg/controller/csimigration/reconciler_test.go b/extensions/pkg/controller/csimigration/reconciler_test.go index d0b83cb7a6c..d79ba1742b6 100644 --- a/extensions/pkg/controller/csimigration/reconciler_test.go +++ b/extensions/pkg/controller/csimigration/reconciler_test.go @@ -28,7 +28,7 @@ import ( . "github.com/onsi/gomega" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - storagev1beta1 "k8s.io/api/storage/v1beta1" + storagev1 "k8s.io/api/storage/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -199,17 +199,17 @@ var _ = Describe("reconciler", func() { return nil }) - storageClass := &storagev1beta1.StorageClass{ + storageClass := &storagev1.StorageClass{ ObjectMeta: metav1.ObjectMeta{ Name: storageClassName, }, Provisioner: storageClassProvisioner, } - shootClient.EXPECT().List(ctx, gomock.AssignableToTypeOf(&storagev1beta1.StorageClassList{})).DoAndReturn(func(_ context.Context, list runtime.Object, _ ...client.ListOption) error { - obj := &storagev1beta1.StorageClassList{ - Items: []storagev1beta1.StorageClass{*storageClass}, + shootClient.EXPECT().List(ctx, gomock.AssignableToTypeOf(&storagev1.StorageClassList{})).DoAndReturn(func(_ context.Context, list runtime.Object, _ ...client.ListOption) error { + obj := &storagev1.StorageClassList{ + Items: []storagev1.StorageClass{*storageClass}, } - obj.DeepCopyInto(list.(*storagev1beta1.StorageClassList)) + obj.DeepCopyInto(list.(*storagev1.StorageClassList)) return nil }) shootClient.EXPECT().Delete(ctx, storageClass) diff --git a/hack/local-development/dev-setup-register-gardener b/hack/local-development/dev-setup-register-gardener index 06a1a57d1a6..f86e49458fa 100755 --- a/hack/local-development/dev-setup-register-gardener +++ b/hack/local-development/dev-setup-register-gardener @@ -156,7 +156,7 @@ subsets: EOF cat <= 1.18") utilruntime.Must(err) + versionConstraintK8sGreaterEqual119, err = semver.NewConstraint(">= 1.19") + utilruntime.Must(err) } // Secrets is collection of secrets for the kube-scheduler. diff --git a/pkg/operation/botanist/controlplane/kubescheduler/kube_scheduler_test.go b/pkg/operation/botanist/controlplane/kubescheduler/kube_scheduler_test.go index 9c6c00836c1..27df80f72f9 100644 --- a/pkg/operation/botanist/controlplane/kubescheduler/kube_scheduler_test.go +++ b/pkg/operation/botanist/controlplane/kubescheduler/kube_scheduler_test.go @@ -383,6 +383,8 @@ var _ = Describe("KubeScheduler", func() { Entry("kubernetes 1.17 w/ full config", "1.17.7", configFull), Entry("kubernetes 1.18 w/o config", "1.18.8", configEmpty), Entry("kubernetes 1.18 w/ full config", "1.18.8", configFull), + Entry("kubernetes 1.19 w/o config", "1.19.8", configEmpty), + Entry("kubernetes 1.19 w/ full config", "1.19.8", configFull), ) }) }) @@ -407,11 +409,15 @@ var _ = Describe("KubeScheduler", func() { }) func componentConfigYAMLForKubernetesVersion(version string) (string, string) { - apiVersion, checksum := "componentconfig/v1alpha1", "a09f1f2d75393187666e68e29d3f405db81f8027d1111918ce40e4cb31c2e696" - if k8sVersionGreaterEqual118, _ := versionutils.CompareVersions(version, ">=", "1.18"); k8sVersionGreaterEqual118 { + var apiVersion, checksum string + if k8sVersionGreaterEqual119, _ := versionutils.CompareVersions(version, ">=", "1.19"); k8sVersionGreaterEqual119 { + apiVersion, checksum = "kubescheduler.config.k8s.io/v1beta1", "9988c880500b124fb153fd6e8c34435386b1924dcd48a39385fdb6d2bef492a9" + } else if k8sVersionGreaterEqual118, _ := versionutils.CompareVersions(version, ">=", "1.18"); k8sVersionGreaterEqual118 { apiVersion, checksum = "kubescheduler.config.k8s.io/v1alpha2", "a1916d3e007de7f094bb829768c16eef1c4ec2ba30087e3bb1e564ecd2990fc5" } else if k8sVersionGreaterEqual112, _ := versionutils.CompareVersions(version, ">=", "1.12"); k8sVersionGreaterEqual112 { apiVersion, checksum = "kubescheduler.config.k8s.io/v1alpha1", "b1821b1b8e76431815e36877e29eda9a50fbdd9adc2a9e579f378fe69a6f744c" + } else { + apiVersion, checksum = "componentconfig/v1alpha1", "a09f1f2d75393187666e68e29d3f405db81f8027d1111918ce40e4cb31c2e696" } return `apiVersion: ` + apiVersion + ` diff --git a/pkg/operation/common/utils.go b/pkg/operation/common/utils.go index c907e6094b0..812f0ccc7bf 100644 --- a/pkg/operation/common/utils.go +++ b/pkg/operation/common/utils.go @@ -416,6 +416,7 @@ func DeleteLoggingStack(ctx context.Context, k8sClient client.Client, namespace &rbacv1.RoleBindingList{}, &appsv1.DaemonSetList{}, &appsv1.DeploymentList{}, + // TODO: Use autoscaling/v2beta2 for Kubernetes 1.19+ shoots once kubernetes-v1.19 golang dependencies were vendored. &autoscalingv2beta1.HorizontalPodAutoscalerList{}, &extensionsv1beta1.IngressList{}, &corev1.SecretList{},