Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Postpone CSI migration to Kubernetes v1.21 #215

Merged
merged 1 commit into from
Dec 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/usage-as-end-user.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,10 +244,10 @@ spec:

## CSI volume provisioners

Every Azure shoot cluster that has at least Kubernetes v1.20 will be deployed with the Azure Disk CSI driver and the Azure File CSI driver.
Every Azure shoot cluster that has at least Kubernetes v1.21 will be deployed with the Azure Disk CSI driver and the Azure File CSI driver.
Both are compatible with the legacy in-tree volume provisioners that were deprecated by the Kubernetes community and will be removed in future versions of Kubernetes.
End-users might want to update their custom `StorageClass`es to the new `disk.csi.azure.com` or `file.csi.azure.com` provisioner, respectively.
Shoot clusters with Kubernetes v1.19 or less will use the in-tree `kubernetes.io/azure-disk` and `kubernetes.io/azure-file` volume provisioners in the kube-controller-manager and the kubelet.
Shoot clusters with Kubernetes v1.20 or less will use the in-tree `kubernetes.io/azure-disk` and `kubernetes.io/azure-file` volume provisioners in the kube-controller-manager and the kubelet.

## Miscellaneous

Expand Down
2 changes: 1 addition & 1 deletion pkg/azure/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ const (
MachineControllerManagerImageName = "machine-controller-manager"
// TerraformerImageName is the name of the Terraformer image.
TerraformerImageName = "terraformer"
// RemedyControllerName is the name of the remedy-controller image.
// RemedyControllerImageName is the name of the remedy-controller image.
RemedyControllerImageName = "remedy-controller-azure"

// SubscriptionIDKey is the key for the subscription ID.
Expand Down
18 changes: 9 additions & 9 deletions pkg/controller/controlplane/valuesprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -418,7 +418,7 @@ func (vp *valuesProvider) GetControlPlaneShootChartValues(
return nil, errors.Wrapf(err, "could not decode infrastructureProviderStatus of controlplane '%s'", kutil.ObjectName(cp))
}

k8sVersionLessThan120, err := version.CompareVersions(cluster.Shoot.Spec.Kubernetes.Version, "<", "1.20")
k8sVersionLessThan121, err := version.CompareVersions(cluster.Shoot.Spec.Kubernetes.Version, "<", "1.21")
if err != nil {
return nil, err
}
Expand All @@ -428,7 +428,7 @@ func (vp *valuesProvider) GetControlPlaneShootChartValues(
cloudProviderDiskConfigChecksum string
)

if !k8sVersionLessThan120 {
if !k8sVersionLessThan121 {
secret := &corev1.Secret{}
if err := vp.Client().Get(ctx, kutil.Key(cp.Namespace, azure.CloudProviderDiskConfigName), secret); err != nil {
return nil, err
Expand All @@ -440,7 +440,7 @@ func (vp *valuesProvider) GetControlPlaneShootChartValues(

disableRemedyController := cluster.Shoot.Annotations[azure.DisableRemedyControllerAnnotation] == "true"

return getControlPlaneShootChartValues(cluster, infraStatus, k8sVersionLessThan120, disableRemedyController, cloudProviderDiskConfig, cloudProviderDiskConfigChecksum), nil
return getControlPlaneShootChartValues(cluster, infraStatus, k8sVersionLessThan121, disableRemedyController, cloudProviderDiskConfig, cloudProviderDiskConfigChecksum), nil
}

// GetStorageClassesChartValues returns the values for the storage classes chart applied by the generic actuator.
Expand All @@ -449,13 +449,13 @@ func (vp *valuesProvider) GetStorageClassesChartValues(
_ *extensionsv1alpha1.ControlPlane,
cluster *extensionscontroller.Cluster,
) (map[string]interface{}, error) {
k8sVersionLessThan120, err := version.CompareVersions(cluster.Shoot.Spec.Kubernetes.Version, "<", "1.20")
k8sVersionLessThan121, err := version.CompareVersions(cluster.Shoot.Spec.Kubernetes.Version, "<", "1.21")
if err != nil {
return nil, err
}

return map[string]interface{}{
"useLegacyProvisioner": k8sVersionLessThan120,
"useLegacyProvisioner": k8sVersionLessThan121,
}, nil
}

Expand Down Expand Up @@ -605,12 +605,12 @@ func getCSIControllerChartValues(
checksums map[string]string,
scaledDown bool,
) (map[string]interface{}, error) {
k8sVersionLessThan120, err := version.CompareVersions(cluster.Shoot.Spec.Kubernetes.Version, "<", "1.20")
k8sVersionLessThan121, err := version.CompareVersions(cluster.Shoot.Spec.Kubernetes.Version, "<", "1.21")
if err != nil {
return nil, err
}

if k8sVersionLessThan120 {
if k8sVersionLessThan121 {
return map[string]interface{}{"enabled": false}, nil
}

Expand Down Expand Up @@ -659,7 +659,7 @@ func getRemedyControllerChartValues(
func getControlPlaneShootChartValues(
cluster *extensionscontroller.Cluster,
infraStatus *apisazure.InfrastructureStatus,
k8sVersionLessThan120 bool,
k8sVersionLessThan121 bool,
disableRemedyController bool,
cloudProviderDiskConfig string,
cloudProviderDiskConfigChecksum string,
Expand All @@ -668,7 +668,7 @@ func getControlPlaneShootChartValues(
azure.AllowUDPEgressName: map[string]interface{}{"enabled": infraStatus.Zoned},
azure.CloudControllerManagerName: map[string]interface{}{"enabled": true},
azure.CSINodeName: map[string]interface{}{
"enabled": !k8sVersionLessThan120,
"enabled": !k8sVersionLessThan121,
"vpaEnabled": gardencorev1beta1helper.ShootWantsVerticalPodAutoscaler(cluster.Shoot),
"podAnnotations": map[string]interface{}{
"checksum/configmap-" + azure.CloudProviderDiskConfigName: cloudProviderDiskConfigChecksum,
Expand Down
36 changes: 18 additions & 18 deletions pkg/controller/controlplane/valuesprovider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ var _ = Describe("ValuesProvider", func() {
cidr = "10.250.0.0/19"
cloudProviderConfigData = "foo"

k8sVersionLessThan120 = "1.13.4"
k8sVersionHigherEqual120 = "1.20.4"
k8sVersionLessThan121 = "1.13.4"
k8sVersionHigherEqual121 = "1.21.4"

enabledTrue = map[string]interface{}{"enabled": true}
enabledFalse = map[string]interface{}{"enabled": false}
Expand Down Expand Up @@ -159,7 +159,7 @@ var _ = Describe("ValuesProvider", func() {

infrastructureStatus = defaultInfrastructureStatus.DeepCopy()
controlPlaneConfig = defaultControlPlaneConfig.DeepCopy()
cluster = generateCluster(cidr, k8sVersionLessThan120, false, nil)
cluster = generateCluster(cidr, k8sVersionLessThan121, false, nil)
})

AfterEach(func() {
Expand Down Expand Up @@ -253,7 +253,7 @@ var _ = Describe("ValuesProvider", func() {
"availabilitySetName": primaryAvailabilitySetName,
"routeTableName": "route-table-name",
"securityGroupName": "security-group-name-workers",
"kubernetesVersion": k8sVersionLessThan120,
"kubernetesVersion": k8sVersionLessThan121,
"maxNodes": maxNodes,
}))
})
Expand All @@ -275,7 +275,7 @@ var _ = Describe("ValuesProvider", func() {
"region": "eu-west-1a",
"routeTableName": "route-table-name",
"securityGroupName": "security-group-name-workers",
"kubernetesVersion": k8sVersionLessThan120,
"kubernetesVersion": k8sVersionLessThan121,
"maxNodes": maxNodes,
}))
})
Expand All @@ -302,7 +302,7 @@ var _ = Describe("ValuesProvider", func() {
"region": "eu-west-1a",
"routeTableName": "route-table-name",
"securityGroupName": "security-group-name-workers",
"kubernetesVersion": k8sVersionLessThan120,
"kubernetesVersion": k8sVersionLessThan121,
"acrIdentityClientId": identityName,
"maxNodes": maxNodes,
}))
Expand All @@ -320,7 +320,7 @@ var _ = Describe("ValuesProvider", func() {
ccmChartValues = utils.MergeMaps(enabledTrue, map[string]interface{}{
"replicas": 1,
"clusterName": namespace,
"kubernetesVersion": k8sVersionLessThan120,
"kubernetesVersion": k8sVersionLessThan121,
"podNetwork": cidr,
"podAnnotations": map[string]interface{}{
"checksum/secret-cloud-controller-manager": "3d791b164a808638da9a8df03924be2a41e34cd664e42231c00fe369e3588272",
Expand All @@ -342,7 +342,7 @@ var _ = Describe("ValuesProvider", func() {
c.EXPECT().Delete(context.TODO(), ccmMonitoringConfigmap).DoAndReturn(clientDeleteSuccess())
})

It("should return correct control plane chart values (k8s < 1.20)", func() {
It("should return correct control plane chart values (k8s < 1.21)", func() {
cp := generateControlPlane(controlPlaneConfig, infrastructureStatus)
values, err := vp.GetControlPlaneChartValues(ctx, cp, cluster, checksums, false)

Expand All @@ -362,8 +362,8 @@ var _ = Describe("ValuesProvider", func() {
}))
})

It("should return correct control plane chart values (k8s >= 1.20)", func() {
cluster = generateCluster(cidr, k8sVersionHigherEqual120, true, nil)
It("should return correct control plane chart values (k8s >= 1.21)", func() {
cluster = generateCluster(cidr, k8sVersionHigherEqual121, true, nil)
cp := generateControlPlane(controlPlaneConfig, infrastructureStatus)

values, err := vp.GetControlPlaneChartValues(ctx, cp, cluster, checksums, false)
Expand Down Expand Up @@ -400,7 +400,7 @@ var _ = Describe("ValuesProvider", func() {
})

It("should return correct control plane chart values when remedy controller is disabled", func() {
cluster = generateCluster(cidr, k8sVersionLessThan120, false, map[string]string{
cluster = generateCluster(cidr, k8sVersionLessThan121, false, map[string]string{
azure.DisableRemedyControllerAnnotation: "true",
})

Expand Down Expand Up @@ -436,7 +436,7 @@ var _ = Describe("ValuesProvider", func() {
})
)

Context("k8s < 1.20", func() {
Context("k8s < 1.21", func() {
It("should return correct control plane shoot chart values for zoned cluster", func() {
cp := generateControlPlane(controlPlaneConfig, infrastructureStatus)

Expand Down Expand Up @@ -466,7 +466,7 @@ var _ = Describe("ValuesProvider", func() {
})
})

Context("k8s >= 1.20", func() {
Context("k8s >= 1.21", func() {
var (
cpDiskConfigKey = client.ObjectKey{Namespace: namespace, Name: azure.CloudProviderDiskConfigName}
cpDiskConfig = &corev1.Secret{
Expand All @@ -482,7 +482,7 @@ var _ = Describe("ValuesProvider", func() {

BeforeEach(func() {
c.EXPECT().Get(ctx, cpDiskConfigKey, &corev1.Secret{}).DoAndReturn(clientGet(cpDiskConfig))
cluster = generateCluster(cidr, k8sVersionHigherEqual120, true, nil)
cluster = generateCluster(cidr, k8sVersionHigherEqual121, true, nil)
})

It("should return correct control plane shoot chart values for zoned cluster", func() {
Expand Down Expand Up @@ -515,7 +515,7 @@ var _ = Describe("ValuesProvider", func() {

Context("remedy controller is disabled", func() {
BeforeEach(func() {
cluster = generateCluster(cidr, k8sVersionLessThan120, false, map[string]string{
cluster = generateCluster(cidr, k8sVersionLessThan121, false, map[string]string{
azure.DisableRemedyControllerAnnotation: "true",
})
})
Expand Down Expand Up @@ -550,15 +550,15 @@ var _ = Describe("ValuesProvider", func() {
})

Describe("#GetStorageClassesChartValues()", func() {
It("should return correct storage class chart values (k8s < 1.20)", func() {
It("should return correct storage class chart values (k8s < 1.21)", func() {
cp := generateControlPlane(controlPlaneConfig, infrastructureStatus)
values, err := vp.GetStorageClassesChartValues(ctx, cp, cluster)
Expect(err).NotTo(HaveOccurred())
Expect(values).To(Equal(map[string]interface{}{"useLegacyProvisioner": true}))
})

It("should return correct storage class chart values (k8s >= 1.20)", func() {
cluster = generateCluster(cidr, k8sVersionHigherEqual120, true, nil)
It("should return correct storage class chart values (k8s >= 1.21)", func() {
cluster = generateCluster(cidr, k8sVersionHigherEqual121, true, nil)
cp := generateControlPlane(controlPlaneConfig, infrastructureStatus)
values, err := vp.GetStorageClassesChartValues(ctx, cp, cluster)
Expect(err).NotTo(HaveOccurred())
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/csimigration/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type AddOptions struct {
func AddToManagerWithOptions(mgr manager.Manager, opts AddOptions) error {
return csimigration.Add(mgr, csimigration.AddArgs{
ControllerOptions: opts.Controller,
CSIMigrationKubernetesVersion: "1.20",
CSIMigrationKubernetesVersion: "1.21",
Type: azure.Type,
StorageClassNameToLegacyProvisioner: map[string]string{
"default": "kubernetes.io/azure-disk",
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/healthcheck/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ var (
// HealthChecks are grouped by extension (e.g worker), extension.type (e.g azure) and Health Check Type (e.g SystemComponentsHealthy)
func RegisterHealthChecks(mgr manager.Manager, opts healthcheck.DefaultAddArgs) error {
csiEnabledPreCheckFunc := func(_ runtime.Object, cluster *extensionscontroller.Cluster) bool {
csiEnabled, err := version.CompareVersions(cluster.Shoot.Spec.Kubernetes.Version, ">=", "1.20")
csiEnabled, err := version.CompareVersions(cluster.Shoot.Spec.Kubernetes.Version, ">=", "1.21")
if err != nil {
return false
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/webhook/controlplane/ensurer.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import (

const (
acrConfigPath = "/var/lib/kubelet/acr.conf"
csiMigrationVersion = "1.20"
csiMigrationVersion = "1.21"
)

// NewEnsurer creates a new controlplane ensurer.
Expand Down
Loading