From 12ddecfa1fd9c2c31880f31b588c762c73b51dce Mon Sep 17 00:00:00 2001 From: abarreiro Date: Mon, 8 Apr 2024 09:24:03 +0200 Subject: [PATCH 01/15] Fix Upgrade Signed-off-by: abarreiro --- govcd/cse.go | 4 ++-- govcd/cse_yaml.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/govcd/cse.go b/govcd/cse.go index 68ed5ebcd..bde21bfe3 100644 --- a/govcd/cse.go +++ b/govcd/cse.go @@ -233,8 +233,8 @@ func (cluster *CseKubernetesCluster) GetSupportedUpgrades(refreshOvas bool) ([]* if err != nil { continue // This means it's not a TKGm OVA, or it is not supported, so we skip it } - // The OVA can be used if the TKG version is higher than the actual and the Kubernetes version is at most 1 minor higher. - if targetVersions.compareTkgVersion(cluster.TkgVersion.String()) == 1 && targetVersions.kubernetesVersionIsOneMinorHigher(cluster.KubernetesVersion.String()) { + // The OVA can be used if the TKG version is higher or equal than the actual and the Kubernetes version is at most 1 minor higher. + if targetVersions.compareTkgVersion(cluster.TkgVersion.String()) >= 0 && targetVersions.kubernetesVersionIsOneMinorHigher(cluster.KubernetesVersion.String()) { cluster.supportedUpgrades = append(cluster.supportedUpgrades, vAppTemplate.VAppTemplate) } } diff --git a/govcd/cse_yaml.go b/govcd/cse_yaml.go index f5cc5af06..9ae8690e9 100644 --- a/govcd/cse_yaml.go +++ b/govcd/cse_yaml.go @@ -74,7 +74,7 @@ func (cluster *CseKubernetesCluster) updateCapiYaml(input CseClusterUpdateInput) if err != nil { return cluster.capvcdType.Spec.CapiYaml, fmt.Errorf("could not retrieve the TKG versions of OVA '%s': %s", *input.KubernetesTemplateOvaId, err) } - if versions.compareTkgVersion(cluster.capvcdType.Status.Capvcd.Upgrade.Current.TkgVersion) != 1 || !versions.kubernetesVersionIsOneMinorHigher(cluster.capvcdType.Status.Capvcd.Upgrade.Current.KubernetesVersion) { + if versions.compareTkgVersion(cluster.capvcdType.Status.Capvcd.Upgrade.Current.TkgVersion) < 0 || !versions.kubernetesVersionIsOneMinorHigher(cluster.capvcdType.Status.Capvcd.Upgrade.Current.KubernetesVersion) { return cluster.capvcdType.Spec.CapiYaml, fmt.Errorf("cannot perform an OVA change as the new one '%s' has an older TKG/Kubernetes version (%s/%s)", vAppTemplate.VAppTemplate.Name, versions.TkgVersion, versions.KubernetesVersion) } err = cseUpdateKubernetesTemplateInYaml(yamlDocs, vAppTemplate.VAppTemplate) From cd150e1639c5da482e955d6c57362bb0dbe29990 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Tue, 9 Apr 2024 13:35:40 +0200 Subject: [PATCH 02/15] Add changelog Signed-off-by: abarreiro --- .changes/v2.24.0/663-bug-fixes.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 .changes/v2.24.0/663-bug-fixes.md diff --git a/.changes/v2.24.0/663-bug-fixes.md b/.changes/v2.24.0/663-bug-fixes.md new file mode 100644 index 000000000..cffae1f9d --- /dev/null +++ b/.changes/v2.24.0/663-bug-fixes.md @@ -0,0 +1 @@ +* Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to an OVA with higher Kubernetes version but same TKG version [GH-663] From 63e7d6929eed9adce347e699a865d85c31809999 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Wed, 10 Apr 2024 10:35:09 +0200 Subject: [PATCH 03/15] Fix minor upgrades Signed-off-by: abarreiro --- govcd/cse.go | 2 +- govcd/cse_util.go | 39 ++++++++++++------- govcd/cse_util_unit_test.go | 78 +++++++++++++++++++++---------------- govcd/cse_yaml.go | 2 +- 4 files changed, 72 insertions(+), 49 deletions(-) diff --git a/govcd/cse.go b/govcd/cse.go index bde21bfe3..3acb35148 100644 --- a/govcd/cse.go +++ b/govcd/cse.go @@ -234,7 +234,7 @@ func (cluster *CseKubernetesCluster) GetSupportedUpgrades(refreshOvas bool) ([]* continue // This means it's not a TKGm OVA, or it is not supported, so we skip it } // The OVA can be used if the TKG version is higher or equal than the actual and the Kubernetes version is at most 1 minor higher. - if targetVersions.compareTkgVersion(cluster.TkgVersion.String()) >= 0 && targetVersions.kubernetesVersionIsOneMinorHigher(cluster.KubernetesVersion.String()) { + if targetVersions.compareTkgVersion(cluster.TkgVersion.String()) >= 0 && targetVersions.kubernetesVersionIsUpgradeableFrom(cluster.KubernetesVersion.String()) { cluster.supportedUpgrades = append(cluster.supportedUpgrades, vAppTemplate.VAppTemplate) } } diff --git a/govcd/cse_util.go b/govcd/cse_util.go index 2f75fe82c..c0566790e 100644 --- a/govcd/cse_util.go +++ b/govcd/cse_util.go @@ -832,35 +832,46 @@ func (tkgVersions tkgVersionBundle) compareTkgVersion(tkgVersion string) int { return receiverVersion.Compare(inputVersion) } -// kubernetesVersionIsOneMinorHigher returns true only if the receiver Kubernetes version is exactly one minor version higher +// kubernetesVersionIsUpgradeableFrom returns true only if the receiver Kubernetes version is exactly one minor version higher // than the given input version, being the minor digit the 'Y' in 'X.Y.Z'. // Any malformed version returns false. // Examples: -// * "1.19.2".kubernetesVersionIsOneMinorHigher("1.18.7") = true -// * "1.19.10".kubernetesVersionIsOneMinorHigher("1.18.0") = true -// * "1.20.2".kubernetesVersionIsOneMinorHigher("1.18.7") = false -// * "1.21.2".kubernetesVersionIsOneMinorHigher("1.18.7") = false -// * "1.18.0".kubernetesVersionIsOneMinorHigher("1.18.7") = false -func (tkgVersions tkgVersionBundle) kubernetesVersionIsOneMinorHigher(kubernetesVersion string) bool { - receiverVersion, err := semver.NewVersion(tkgVersions.KubernetesVersion) +// * "1.19.2".kubernetesVersionIsUpgradeableFrom("1.18.7") = true +// * "1.19.2".kubernetesVersionIsUpgradeableFrom("1.19.2") = false +// * "1.19.2".kubernetesVersionIsUpgradeableFrom("1.19.0") = true +// * "1.19.10".kubernetesVersionIsUpgradeableFrom("1.18.0") = true +// * "1.20.2".kubernetesVersionIsUpgradeableFrom("1.18.7") = false +// * "1.21.2".kubernetesVersionIsUpgradeableFrom("1.18.7") = false +// * "1.18.0".kubernetesVersionIsUpgradeableFrom("1.18.7") = false +func (tkgVersions tkgVersionBundle) kubernetesVersionIsUpgradeableFrom(kubernetesVersion string) bool { + upgradeToVersion, err := semver.NewVersion(tkgVersions.KubernetesVersion) if err != nil { return false } - inputVersion, err := semver.NewVersion(kubernetesVersion) + fromVersion, err := semver.NewVersion(kubernetesVersion) if err != nil { return false } - receiverVersionSegments := receiverVersion.Segments() - if len(receiverVersionSegments) < 2 { + if upgradeToVersion.Equal(fromVersion) { return false } - inputSegments := inputVersion.Segments() - if len(inputSegments) < 2 { + + upgradeToVersionSegments := upgradeToVersion.Segments() + if len(upgradeToVersionSegments) < 2 { + return false + } + fromVersionSegments := fromVersion.Segments() + if len(fromVersionSegments) < 2 { return false } - return receiverVersionSegments[0] == inputSegments[0] && receiverVersionSegments[1]-1 == inputSegments[1] + majorIsEqual := upgradeToVersionSegments[0] == fromVersionSegments[0] + minorIsJustOneHigher := upgradeToVersionSegments[1]-1 == fromVersionSegments[1] + minorIsEqual := upgradeToVersionSegments[1] == fromVersionSegments[1] + patchIsHigher := upgradeToVersionSegments[2] > fromVersionSegments[2] + + return majorIsEqual && (minorIsJustOneHigher || (minorIsEqual && patchIsHigher)) } // getVcdKeConfig gets the required information from the CSE Server configuration RDE (VCDKEConfig), such as the diff --git a/govcd/cse_util_unit_test.go b/govcd/cse_util_unit_test.go index 5e98edb8e..507534b08 100644 --- a/govcd/cse_util_unit_test.go +++ b/govcd/cse_util_unit_test.go @@ -235,63 +235,75 @@ func Test_tkgVersionBundle_compareTkgVersion(t *testing.T) { TkgVersion: tt.receiverTkgVersion, } if got := tkgVersions.compareTkgVersion(tt.comparedTkgVersion); got != tt.want { - t.Errorf("kubernetesVersionIsOneMinorHigher() = %v, want %v", got, tt.want) + t.Errorf("kubernetesVersionIsUpgradeableFrom() = %v, want %v", got, tt.want) } }) } } -func Test_tkgVersionBundle_kubernetesVersionIsOneMinorHigher(t *testing.T) { +func Test_tkgVersionBundle_kubernetesVersionIsUpgradeableFrom(t *testing.T) { tests := []struct { - name string - receiverKubernetesVersion string - comparedKubernetesVersion string - want bool + name string + upgradeToVersion string + fromVersion string + want bool }{ { - name: "same Kubernetes versions", - receiverKubernetesVersion: "1.20.2+vmware.1", - comparedKubernetesVersion: "1.20.2+vmware.1", - want: false, + name: "same Kubernetes versions", + upgradeToVersion: "1.20.2+vmware.1", + fromVersion: "1.20.2+vmware.1", + want: false, }, { - name: "one Kubernetes minor higher", - receiverKubernetesVersion: "1.21.9+vmware.1", - comparedKubernetesVersion: "1.20.2+vmware.1", - want: true, + name: "the Kubernetes patch is higher", + upgradeToVersion: "1.21.9+vmware.1", + fromVersion: "1.21.7+vmware.1", + want: true, }, { - name: "one Kubernetes minor lower", - receiverKubernetesVersion: "1.19.9+vmware.1", - comparedKubernetesVersion: "1.20.2+vmware.1", - want: false, + name: "one Kubernetes minor higher", + upgradeToVersion: "1.21.9+vmware.1", + fromVersion: "1.20.2+vmware.1", + want: true, }, { - name: "several Kubernetes minors higher", - receiverKubernetesVersion: "1.22.9+vmware.1", - comparedKubernetesVersion: "1.20.2+vmware.1", - want: false, + name: "the Kubernetes patch is lower", + upgradeToVersion: "1.20.0+vmware.1", + fromVersion: "1.20.7+vmware.1", + want: false, }, { - name: "wrong receiver Kubernetes version", - receiverKubernetesVersion: "foo", - comparedKubernetesVersion: "1.20.2+vmware.1", - want: false, + name: "one Kubernetes minor lower", + upgradeToVersion: "1.19.9+vmware.1", + fromVersion: "1.20.2+vmware.1", + want: false, }, { - name: "wrong compared Kubernetes version", - receiverKubernetesVersion: "1.20.2+vmware.1", - comparedKubernetesVersion: "foo", - want: false, + name: "several Kubernetes minors higher", + upgradeToVersion: "1.22.9+vmware.1", + fromVersion: "1.20.2+vmware.1", + want: false, + }, + { + name: "wrong receiver Kubernetes version", + upgradeToVersion: "foo", + fromVersion: "1.20.2+vmware.1", + want: false, + }, + { + name: "wrong compared Kubernetes version", + upgradeToVersion: "1.20.2+vmware.1", + fromVersion: "foo", + want: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { tkgVersions := tkgVersionBundle{ - KubernetesVersion: tt.receiverKubernetesVersion, + KubernetesVersion: tt.upgradeToVersion, } - if got := tkgVersions.kubernetesVersionIsOneMinorHigher(tt.comparedKubernetesVersion); got != tt.want { - t.Errorf("kubernetesVersionIsOneMinorHigher() = %v, want %v", got, tt.want) + if got := tkgVersions.kubernetesVersionIsUpgradeableFrom(tt.fromVersion); got != tt.want { + t.Errorf("kubernetesVersionIsUpgradeableFrom() = %v, want %v", got, tt.want) } }) } diff --git a/govcd/cse_yaml.go b/govcd/cse_yaml.go index 9ae8690e9..aa7e6b9ef 100644 --- a/govcd/cse_yaml.go +++ b/govcd/cse_yaml.go @@ -74,7 +74,7 @@ func (cluster *CseKubernetesCluster) updateCapiYaml(input CseClusterUpdateInput) if err != nil { return cluster.capvcdType.Spec.CapiYaml, fmt.Errorf("could not retrieve the TKG versions of OVA '%s': %s", *input.KubernetesTemplateOvaId, err) } - if versions.compareTkgVersion(cluster.capvcdType.Status.Capvcd.Upgrade.Current.TkgVersion) < 0 || !versions.kubernetesVersionIsOneMinorHigher(cluster.capvcdType.Status.Capvcd.Upgrade.Current.KubernetesVersion) { + if versions.compareTkgVersion(cluster.capvcdType.Status.Capvcd.Upgrade.Current.TkgVersion) < 0 || !versions.kubernetesVersionIsUpgradeableFrom(cluster.capvcdType.Status.Capvcd.Upgrade.Current.KubernetesVersion) { return cluster.capvcdType.Spec.CapiYaml, fmt.Errorf("cannot perform an OVA change as the new one '%s' has an older TKG/Kubernetes version (%s/%s)", vAppTemplate.VAppTemplate.Name, versions.TkgVersion, versions.KubernetesVersion) } err = cseUpdateKubernetesTemplateInYaml(yamlDocs, vAppTemplate.VAppTemplate) From d172382f98113a6292b07355e271d24e5a162ece Mon Sep 17 00:00:00 2001 From: abarreiro Date: Wed, 10 Apr 2024 10:37:41 +0200 Subject: [PATCH 04/15] Fix minor upgrades Signed-off-by: abarreiro --- .changes/v2.24.0/663-bug-fixes.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.changes/v2.24.0/663-bug-fixes.md b/.changes/v2.24.0/663-bug-fixes.md index cffae1f9d..1e9bbaffe 100644 --- a/.changes/v2.24.0/663-bug-fixes.md +++ b/.changes/v2.24.0/663-bug-fixes.md @@ -1 +1,2 @@ -* Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to an OVA with higher Kubernetes version but same TKG version [GH-663] +* Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to an OVA with higher Kubernetes version but same TKG version + and to an OVA with a higher patch version of Kubernetes [GH-663] From b1959a14a3bf8713ade454f55926cbf494bb3eb3 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Wed, 10 Apr 2024 10:38:56 +0200 Subject: [PATCH 05/15] Fix minor upgrades Signed-off-by: abarreiro --- govcd/cse_util.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/govcd/cse_util.go b/govcd/cse_util.go index c0566790e..db40cd9b9 100644 --- a/govcd/cse_util.go +++ b/govcd/cse_util.go @@ -832,8 +832,9 @@ func (tkgVersions tkgVersionBundle) compareTkgVersion(tkgVersion string) int { return receiverVersion.Compare(inputVersion) } -// kubernetesVersionIsUpgradeableFrom returns true only if the receiver Kubernetes version is exactly one minor version higher -// than the given input version, being the minor digit the 'Y' in 'X.Y.Z'. +// kubernetesVersionIsUpgradeableFrom returns true either if the receiver Kubernetes version is exactly one minor version higher +// than the given input version (being the minor digit the 'Y' in 'X.Y.Z') or if the minor is the same, but the patch is higher +// (being the minor digit the 'Z' in 'X.Y.Z'). // Any malformed version returns false. // Examples: // * "1.19.2".kubernetesVersionIsUpgradeableFrom("1.18.7") = true From a11193eeb02cb1c48f5f0f1951cd604eeb5dd304 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Wed, 10 Apr 2024 10:39:56 +0200 Subject: [PATCH 06/15] self-review Signed-off-by: abarreiro --- govcd/cse_util_unit_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/govcd/cse_util_unit_test.go b/govcd/cse_util_unit_test.go index 507534b08..abbeed63b 100644 --- a/govcd/cse_util_unit_test.go +++ b/govcd/cse_util_unit_test.go @@ -235,7 +235,7 @@ func Test_tkgVersionBundle_compareTkgVersion(t *testing.T) { TkgVersion: tt.receiverTkgVersion, } if got := tkgVersions.compareTkgVersion(tt.comparedTkgVersion); got != tt.want { - t.Errorf("kubernetesVersionIsUpgradeableFrom() = %v, want %v", got, tt.want) + t.Errorf("compareTkgVersion() = %v, want %v", got, tt.want) } }) } From e88f3e391fe70bb4859c0092fa50e5fd72519c8c Mon Sep 17 00:00:00 2001 From: abarreiro Date: Thu, 11 Apr 2024 20:06:22 +0200 Subject: [PATCH 07/15] Fix TKG versions Signed-off-by: abarreiro --- govcd/cse/tkg_versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/govcd/cse/tkg_versions.json b/govcd/cse/tkg_versions.json index ad96e2822..1aeba1b73 100644 --- a/govcd/cse/tkg_versions.json +++ b/govcd/cse/tkg_versions.json @@ -39,7 +39,7 @@ "tkg": "v2.4.0", "tkr": "v1.25.13---vmware.1-tkg.1", "etcd": "v3.5.6_vmware.20", - "coreDns": "v1.10.1_vmware.7" + "coreDns": "v1.9.3_vmware.16" }, "v1.25.13+vmware.1-tkg.1-6f7650434fd3787d751e8fb3c9e2153d": { "tkg": "v2.3.1", From 527e9afb899b7b05556755facad47043e363bb24 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Thu, 11 Apr 2024 22:19:39 +0200 Subject: [PATCH 08/15] Fix versions Signed-off-by: abarreiro --- govcd/cse/tkg_versions.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/govcd/cse/tkg_versions.json b/govcd/cse/tkg_versions.json index 1aeba1b73..a3aebaf57 100644 --- a/govcd/cse/tkg_versions.json +++ b/govcd/cse/tkg_versions.json @@ -21,7 +21,7 @@ "tkg": "v2.5.0", "tkr": "v1.26.11---vmware.1-tkg.1-rc.5", "etcd": "v3.5.10_vmware.1", - "coreDns": "v1.9.3_vmware.19" + "coreDns": "v1.10.1_vmware.12" }, "v1.26.8+vmware.1-tkg.1-b8c57a6c8c98d227f74e7b1a9eef27st": { "tkg": "v2.4.0", @@ -39,7 +39,7 @@ "tkg": "v2.4.0", "tkr": "v1.25.13---vmware.1-tkg.1", "etcd": "v3.5.6_vmware.20", - "coreDns": "v1.9.3_vmware.16" + "coreDns": "v1.10.1_vmware.7" }, "v1.25.13+vmware.1-tkg.1-6f7650434fd3787d751e8fb3c9e2153d": { "tkg": "v2.3.1", From 063340cba9b051f55e084c727595506ade00ae79 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Fri, 12 Apr 2024 09:50:52 +0200 Subject: [PATCH 09/15] Changelog Signed-off-by: abarreiro --- .changes/v2.24.0/663-bug-fixes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.changes/v2.24.0/663-bug-fixes.md b/.changes/v2.24.0/663-bug-fixes.md index 1e9bbaffe..2994479e4 100644 --- a/.changes/v2.24.0/663-bug-fixes.md +++ b/.changes/v2.24.0/663-bug-fixes.md @@ -1,2 +1,4 @@ * Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to an OVA with higher Kubernetes version but same TKG version and to an OVA with a higher patch version of Kubernetes [GH-663] +* Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to TKG v2.5.0 with Kubernetes v1.26.11 as it + performed an invalid upgrade of CoreDNS [GH-663] From 52c6fa8af27e8b167bd088ce1f286398426d20ca Mon Sep 17 00:00:00 2001 From: abarreiro Date: Fri, 12 Apr 2024 12:56:32 +0200 Subject: [PATCH 10/15] nit in changelog Signed-off-by: abarreiro --- .changes/v2.24.0/663-bug-fixes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changes/v2.24.0/663-bug-fixes.md b/.changes/v2.24.0/663-bug-fixes.md index 2994479e4..f4608fccb 100644 --- a/.changes/v2.24.0/663-bug-fixes.md +++ b/.changes/v2.24.0/663-bug-fixes.md @@ -1,4 +1,4 @@ -* Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to an OVA with higher Kubernetes version but same TKG version +* Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to an OVA with higher Kubernetes version but same TKG version, and to an OVA with a higher patch version of Kubernetes [GH-663] * Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to TKG v2.5.0 with Kubernetes v1.26.11 as it performed an invalid upgrade of CoreDNS [GH-663] From f2d7137089f68b390a654bc76e4a27752b2f6350 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Fri, 12 Apr 2024 17:52:56 +0200 Subject: [PATCH 11/15] Fix mispelling Signed-off-by: abarreiro --- .changes/v2.24.0/663-bug-fixes.md | 4 ++-- govcd/cse.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.changes/v2.24.0/663-bug-fixes.md b/.changes/v2.24.0/663-bug-fixes.md index f4608fccb..d6e7e23ee 100644 --- a/.changes/v2.24.0/663-bug-fixes.md +++ b/.changes/v2.24.0/663-bug-fixes.md @@ -1,4 +1,4 @@ -* Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to an OVA with higher Kubernetes version but same TKG version, +* Fixed an issue that prevented CSE Kubernetes clusters from being upgraded to an OVA with higher Kubernetes version but same TKG version, and to an OVA with a higher patch version of Kubernetes [GH-663] -* Fixed an issue that prevented CSE Kubernetes clusters to be upgraded to TKG v2.5.0 with Kubernetes v1.26.11 as it +* Fixed an issue that prevented CSE Kubernetes clusters from being upgraded to TKG v2.5.0 with Kubernetes v1.26.11 as it performed an invalid upgrade of CoreDNS [GH-663] diff --git a/govcd/cse.go b/govcd/cse.go index 3acb35148..305e85ec6 100644 --- a/govcd/cse.go +++ b/govcd/cse.go @@ -233,7 +233,7 @@ func (cluster *CseKubernetesCluster) GetSupportedUpgrades(refreshOvas bool) ([]* if err != nil { continue // This means it's not a TKGm OVA, or it is not supported, so we skip it } - // The OVA can be used if the TKG version is higher or equal than the actual and the Kubernetes version is at most 1 minor higher. + // The OVA can be used if the TKG version is equal to the actual or higher, and the Kubernetes version is at most 1 minor higher. if targetVersions.compareTkgVersion(cluster.TkgVersion.String()) >= 0 && targetVersions.kubernetesVersionIsUpgradeableFrom(cluster.KubernetesVersion.String()) { cluster.supportedUpgrades = append(cluster.supportedUpgrades, vAppTemplate.VAppTemplate) } From 87ccb6d6def1a16712de90080567278d8bc3b870 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Tue, 16 Apr 2024 16:05:14 +0200 Subject: [PATCH 12/15] Fix SSH public key issue Signed-off-by: abarreiro --- govcd/cse_util.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/govcd/cse_util.go b/govcd/cse_util.go index db40cd9b9..d323f6ba1 100644 --- a/govcd/cse_util.go +++ b/govcd/cse_util.go @@ -357,9 +357,9 @@ func cseConvertToCseKubernetesClusterType(rde *DefinedEntity) (*CseKubernetesClu if len(users) == 0 { return nil, fmt.Errorf("expected 'spec.kubeadmConfigSpec.users' slice to not to be empty") } - keys := traverseMapAndGet[[]string](users[0], "sshAuthorizedKeys") + keys := traverseMapAndGet[[]interface{}](users[0], "sshAuthorizedKeys") if len(keys) > 0 { - result.SshPublicKey = keys[0] // Optional field + result.SshPublicKey = keys[0].(string) // Optional field } version, err := semver.NewVersion(traverseMapAndGet[string](yamlDocument, "spec.version")) From b4b1a14f255fa614bc4eeada497a3dbf23f28ed1 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Tue, 16 Apr 2024 16:06:46 +0200 Subject: [PATCH 13/15] Fix SSH public key issue Signed-off-by: abarreiro --- .changes/v2.24.0/663-bug-fixes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.changes/v2.24.0/663-bug-fixes.md b/.changes/v2.24.0/663-bug-fixes.md index d6e7e23ee..9cccb0fed 100644 --- a/.changes/v2.24.0/663-bug-fixes.md +++ b/.changes/v2.24.0/663-bug-fixes.md @@ -2,3 +2,4 @@ and to an OVA with a higher patch version of Kubernetes [GH-663] * Fixed an issue that prevented CSE Kubernetes clusters from being upgraded to TKG v2.5.0 with Kubernetes v1.26.11 as it performed an invalid upgrade of CoreDNS [GH-663] +* Fixed an issue that prevented reading the SSH Public Key from provisioned CSE Kubernetes clusters [GH-663] From 4ddb7579df186119d09a2293649534c034faa4af Mon Sep 17 00:00:00 2001 From: abarreiro Date: Tue, 16 Apr 2024 16:10:36 +0200 Subject: [PATCH 14/15] Fix test Signed-off-by: abarreiro --- govcd/cse_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/govcd/cse_test.go b/govcd/cse_test.go index 3f09742b3..29ecfbab3 100644 --- a/govcd/cse_test.go +++ b/govcd/cse_test.go @@ -79,6 +79,7 @@ func (vcd *TestVCD) Test_Cse(check *C) { check.Assert(err, IsNil) check.Assert(cseVersion, NotNil) + sshPublicKey := "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrCI+QkLjgQVqR7c7dJfawJqCslVomo5I25JdolqlteX7RCUq0yncWyS+8MTYWCS03sm1jOroLOeuji8CDKCDCcKwQerJiOFoJS+VOK5xCjJ2u8RBGlIpXNcmIh2VriRJrV7TCKrFMSKLNF4/n83q4gWI/YPf6/dRhpPB72HYrdI4omvRlU4GG09jMmgiz+5Yb8wJEXYMsJni+MwPzFKe6TbMcqjBusDyeFGAhgyN7QJGpdNhAn1sqvqZrW2QjaE8P+4t8RzBo8B2ucyQazd6+lbYmOHq9366LjG160snzXrFzlARc4hhpjMzu9Bcm6i3ZZI70qhIbmi5IonbbVh8t" // Create the cluster clusterSettings := CseClusterSettings{ Name: "test-cse", @@ -112,6 +113,7 @@ func (vcd *TestVCD) Test_Cse(check *C) { NodeHealthCheck: true, PodCidr: "100.96.0.0/11", ServiceCidr: "100.64.0.0/13", + SshPublicKey: sshPublicKey, AutoRepairOnErrors: true, } cluster, err := org.CseCreateKubernetesCluster(clusterSettings, 150*time.Minute) @@ -409,6 +411,7 @@ func assertCseClusterCreation(check *C, createdCluster *CseKubernetesCluster, se check.Assert(createdCluster.ServiceCidr, Equals, settings.ServiceCidr) check.Assert(createdCluster.SshPublicKey, Equals, settings.SshPublicKey) check.Assert(createdCluster.VirtualIpSubnet, Equals, settings.VirtualIpSubnet) + check.Assert(createdCluster.SshPublicKey, Equals, settings.SshPublicKey) v411, err := semver.NewVersion("4.1.1") check.Assert(err, IsNil) From de9584633e386f3298d3aee4fa9c357bf5fb4ce6 Mon Sep 17 00:00:00 2001 From: abarreiro Date: Wed, 17 Apr 2024 20:39:45 +0200 Subject: [PATCH 15/15] Adjust TKG versions Signed-off-by: abarreiro --- govcd/cse/tkg_versions.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/govcd/cse/tkg_versions.json b/govcd/cse/tkg_versions.json index a3aebaf57..ea8ca2fa2 100644 --- a/govcd/cse/tkg_versions.json +++ b/govcd/cse/tkg_versions.json @@ -21,13 +21,13 @@ "tkg": "v2.5.0", "tkr": "v1.26.11---vmware.1-tkg.1-rc.5", "etcd": "v3.5.10_vmware.1", - "coreDns": "v1.10.1_vmware.12" + "coreDns": "v1.9.3_vmware.19" }, "v1.26.8+vmware.1-tkg.1-b8c57a6c8c98d227f74e7b1a9eef27st": { "tkg": "v2.4.0", "tkr": "v1.26.8---vmware.1-tkg.1", "etcd": "v3.5.6_vmware.20", - "coreDns": "v1.10.1_vmware.7" + "coreDns": "v1.9.3_vmware.16" }, "v1.26.8+vmware.1-tkg.1-0edd4dafbefbdb503f64d5472e500cf8": { "tkg": "v2.3.1", @@ -39,7 +39,7 @@ "tkg": "v2.4.0", "tkr": "v1.25.13---vmware.1-tkg.1", "etcd": "v3.5.6_vmware.20", - "coreDns": "v1.10.1_vmware.7" + "coreDns": "v1.9.3_vmware.16" }, "v1.25.13+vmware.1-tkg.1-6f7650434fd3787d751e8fb3c9e2153d": { "tkg": "v2.3.1",