From 0fc0e68fce53c57270ea5114d1f2b494c8fdcb43 Mon Sep 17 00:00:00 2001 From: Abhay Krishna Arunachalam Date: Mon, 12 Feb 2024 22:14:14 -0800 Subject: [PATCH] Add 1.29 VSphere E2E tests --- test/e2e/QUICK_TESTS.yaml | 16 +- test/e2e/SKIPPED_TESTS.yaml | 11 + test/e2e/vsphere_test.go | 1269 +++++++++++++++++++++++++++++++++-- test/framework/vsphere.go | 36 + 4 files changed, 1281 insertions(+), 51 deletions(-) diff --git a/test/e2e/QUICK_TESTS.yaml b/test/e2e/QUICK_TESTS.yaml index d6ef45bfca64..1d6f0cd244b6 100644 --- a/test/e2e/QUICK_TESTS.yaml +++ b/test/e2e/QUICK_TESTS.yaml @@ -2,14 +2,14 @@ quick_tests: # Docker - TestDocker.*128 # vSphere -- ^TestVSphereKubernetes127To128RedHatUpgrade$ -- TestVSphereKubernetes127To128StackedEtcdRedHatUpgrade -- ^TestVSphereKubernetes127UbuntuTo128Upgrade$ -- TestVSphereKubernetes127UbuntuTo128StackedEtcdUpgrade -- TestVSphereKubernetes127To128Ubuntu2204Upgrade -- TestVSphereKubernetes127To128Ubuntu2204StackedEtcdUpgrade -- TestVSphereKubernetes128Ubuntu2004To2204Upgrade -- TestVSphereKubernetes127BottlerocketTo128Upgrade +- ^TestVSphereKubernetes128To129RedHatUpgrade$ +- TestVSphereKubernetes128To129StackedEtcdRedHatUpgrade +- ^TestVSphereKubernetes128UbuntuTo129Upgrade$ +- TestVSphereKubernetes128UbuntuTo129StackedEtcdUpgrade +- TestVSphereKubernetes128To129Ubuntu2204Upgrade +- TestVSphereKubernetes128To129Ubuntu2204StackedEtcdUpgrade +- TestVSphereKubernetes129Ubuntu2004To2204Upgrade +- TestVSphereKubernetes128BottlerocketTo129Upgrade - TestVSphereKubernetes127BottlerocketTo128StackedEtcdUpgrade # CloudStack - TestCloudStackKubernetes128To129RedhatMultipleFieldsUpgrade diff --git a/test/e2e/SKIPPED_TESTS.yaml b/test/e2e/SKIPPED_TESTS.yaml index 48b8fddc242b..00e370b72980 100644 --- a/test/e2e/SKIPPED_TESTS.yaml +++ b/test/e2e/SKIPPED_TESTS.yaml @@ -102,3 +102,14 @@ skipped_tests: - TestNutanixKubernetes129UbuntuCuratedPackagesAdotSimpleFlow - TestNutanixKubernetes129UbuntuCuratedPackagesPrometheusSimpleFlow - TestNutanixKubernetes129UbuntuCuratedPackagesClusterAutoscalerSimpleFlow +- TestVSphereKubernetes129CuratedPackagesSimpleFlow +- TestVSphereKubernetes129BottleRocketCuratedPackagesSimpleFlow +- TestVSphereKubernetes129CuratedPackagesEmissarySimpleFlow +- TestVSphereKubernetes129BottleRocketCuratedPackagesEmissarySimpleFlow +- TestVSphereKubernetes129CuratedPackagesHarborSimpleFlow +- TestVSphereKubernetes129BottleRocketCuratedPackagesHarborSimpleFlow +- TestVSphereKubernetes129CuratedPackagesAdotUpdateFlow +- TestVSphereKubernetes129BottleRocketCuratedPackagesAdotUpdateFlow +- TestVSphereKubernetes129UbuntuCuratedPackagesClusterAutoscalerSimpleFlow +- TestVSphereKubernetes129UbuntuCuratedPackagesPrometheusSimpleFlow +- TestVSphereKubernetes129UbuntuWorkloadClusterCuratedPackagesSimpleFlow diff --git a/test/e2e/vsphere_test.go b/test/e2e/vsphere_test.go index d18b3bc0fb22..46eaed941158 100644 --- a/test/e2e/vsphere_test.go +++ b/test/e2e/vsphere_test.go @@ -79,6 +79,21 @@ func TestVSphereKubernetes128BottlerocketAutoimport(t *testing.T) { runAutoImportFlow(test, provider) } +func TestVSphereKubernetes129BottlerocketAutoimport(t *testing.T) { + provider := framework.NewVSphere(t, + framework.WithVSphereFillers( + api.WithTemplateForAllMachines(""), + api.WithOsFamilyForAllMachines(v1alpha1.Bottlerocket), + ), + ) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) + runAutoImportFlow(test, provider) +} + // AWS IAM Auth func TestVSphereKubernetes125AWSIamAuth(t *testing.T) { test := framework.NewClusterE2ETest( @@ -120,6 +135,16 @@ func TestVSphereKubernetes128AWSIamAuth(t *testing.T) { runAWSIamAuthFlow(test) } +func TestVSphereKubernetes129AWSIamAuth(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithAWSIam(), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) + runAWSIamAuthFlow(test) +} + func TestVSphereKubernetes125BottleRocketAWSIamAuth(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -160,6 +185,16 @@ func TestVSphereKubernetes128BottleRocketAWSIamAuth(t *testing.T) { runAWSIamAuthFlow(test) } +func TestVSphereKubernetes129BottleRocketAWSIamAuth(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithAWSIam(), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) + runAWSIamAuthFlow(test) +} + func TestVSphereKubernetes127To128AWSIamAuthUpgrade(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu127()) test := framework.NewClusterE2ETest( @@ -225,6 +260,18 @@ func TestVSphereKubernetes128CuratedPackagesSimpleFlow(t *testing.T) { runCuratedPackageInstallSimpleFlow(test) } +func TestVSphereKubernetes129CuratedPackagesSimpleFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runCuratedPackageInstallSimpleFlow(test) +} + func TestVSphereKubernetes125BottleRocketCuratedPackagesSimpleFlow(t *testing.T) { framework.CheckCuratedPackagesCredentials(t) test := framework.NewClusterE2ETest(t, @@ -273,6 +320,18 @@ func TestVSphereKubernetes128BottleRocketCuratedPackagesSimpleFlow(t *testing.T) runCuratedPackageInstallSimpleFlow(test) } +func TestVSphereKubernetes129BottleRocketCuratedPackagesSimpleFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runCuratedPackageInstallSimpleFlow(test) +} + func TestVSphereKubernetes125CuratedPackagesEmissarySimpleFlow(t *testing.T) { framework.CheckCuratedPackagesCredentials(t) test := framework.NewClusterE2ETest(t, @@ -321,6 +380,18 @@ func TestVSphereKubernetes128CuratedPackagesEmissarySimpleFlow(t *testing.T) { runCuratedPackageEmissaryInstallSimpleFlow(test) } +func TestVSphereKubernetes129CuratedPackagesEmissarySimpleFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runCuratedPackageEmissaryInstallSimpleFlow(test) +} + func TestVSphereKubernetes125BottleRocketCuratedPackagesEmissarySimpleFlow(t *testing.T) { framework.CheckCuratedPackagesCredentials(t) test := framework.NewClusterE2ETest(t, @@ -369,6 +440,18 @@ func TestVSphereKubernetes128BottleRocketCuratedPackagesEmissarySimpleFlow(t *te runCuratedPackageEmissaryInstallSimpleFlow(test) } +func TestVSphereKubernetes129BottleRocketCuratedPackagesEmissarySimpleFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runCuratedPackageEmissaryInstallSimpleFlow(test) +} + func TestVSphereKubernetes125CuratedPackagesHarborSimpleFlow(t *testing.T) { framework.CheckCuratedPackagesCredentials(t) test := framework.NewClusterE2ETest(t, @@ -417,6 +500,18 @@ func TestVSphereKubernetes128CuratedPackagesHarborSimpleFlow(t *testing.T) { runCuratedPackageHarborInstallSimpleFlowLocalStorageProvisioner(test) } +func TestVSphereKubernetes129CuratedPackagesHarborSimpleFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runCuratedPackageHarborInstallSimpleFlowLocalStorageProvisioner(test) +} + func TestVSphereKubernetes125BottleRocketCuratedPackagesHarborSimpleFlow(t *testing.T) { framework.CheckCuratedPackagesCredentials(t) test := framework.NewClusterE2ETest(t, @@ -465,6 +560,18 @@ func TestVSphereKubernetes128BottleRocketCuratedPackagesHarborSimpleFlow(t *test runCuratedPackageHarborInstallSimpleFlowLocalStorageProvisioner(test) } +func TestVSphereKubernetes129BottleRocketCuratedPackagesHarborSimpleFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runCuratedPackageHarborInstallSimpleFlowLocalStorageProvisioner(test) +} + func TestVSphereKubernetes125CuratedPackagesAdotUpdateFlow(t *testing.T) { framework.CheckCuratedPackagesCredentials(t) test := framework.NewClusterE2ETest(t, @@ -513,6 +620,18 @@ func TestVSphereKubernetes128CuratedPackagesAdotUpdateFlow(t *testing.T) { runCuratedPackagesAdotInstallUpdateFlow(test) } +func TestVSphereKubernetes129CuratedPackagesAdotUpdateFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runCuratedPackagesAdotInstallUpdateFlow(test) +} + func TestVSphereKubernetes125BottleRocketCuratedPackagesAdotUpdateFlow(t *testing.T) { framework.CheckCuratedPackagesCredentials(t) test := framework.NewClusterE2ETest(t, @@ -561,6 +680,18 @@ func TestVSphereKubernetes128BottleRocketCuratedPackagesAdotUpdateFlow(t *testin runCuratedPackagesAdotInstallUpdateFlow(test) } +func TestVSphereKubernetes129BottleRocketCuratedPackagesAdotUpdateFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runCuratedPackagesAdotInstallUpdateFlow(test) +} + func TestVSphereKubernetes125UbuntuCuratedPackagesClusterAutoscalerSimpleFlow(t *testing.T) { minNodes := 1 maxNodes := 2 @@ -617,6 +748,20 @@ func TestVSphereKubernetes128UbuntuCuratedPackagesClusterAutoscalerSimpleFlow(t runAutoscalerWithMetricsServerSimpleFlow(test) } +func TestVSphereKubernetes129UbuntuCuratedPackagesClusterAutoscalerSimpleFlow(t *testing.T) { + minNodes := 1 + maxNodes := 2 + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129), api.WithWorkerNodeAutoScalingConfig(minNodes, maxNodes)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runAutoscalerWithMetricsServerSimpleFlow(test) +} + func TestVSphereKubernetes125BottleRocketCuratedPackagesClusterAutoscalerSimpleFlow(t *testing.T) { minNodes := 1 maxNodes := 2 @@ -721,6 +866,18 @@ func TestVSphereKubernetes128UbuntuCuratedPackagesPrometheusSimpleFlow(t *testin runCuratedPackagesPrometheusInstallSimpleFlow(test) } +func TestVSphereKubernetes129UbuntuCuratedPackagesPrometheusSimpleFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithPackageConfig(t, packageBundleURI(v1alpha1.Kube129), + EksaPackageControllerHelmChartName, EksaPackageControllerHelmURI, + EksaPackageControllerHelmVersion, EksaPackageControllerHelmValues, nil), + ) + runCuratedPackagesPrometheusInstallSimpleFlow(test) +} + func TestVSphereKubernetes125BottleRocketCuratedPackagesPrometheusSimpleFlow(t *testing.T) { framework.CheckCuratedPackagesCredentials(t) test := framework.NewClusterE2ETest(t, @@ -797,6 +954,13 @@ func TestVSphereKubernetes128UbuntuWorkloadClusterCuratedPackagesSimpleFlow(t *t runCuratedPackageRemoteClusterInstallSimpleFlow(test) } +func TestVSphereKubernetes129UbuntuWorkloadClusterCuratedPackagesSimpleFlow(t *testing.T) { + framework.CheckCuratedPackagesCredentials(t) + provider := framework.NewVSphere(t, framework.WithUbuntu129()) + test := SetupSimpleMultiCluster(t, provider, v1alpha1.Kube129) + runCuratedPackageRemoteClusterInstallSimpleFlow(test) +} + func TestVSphereMultipleTemplatesUbuntu127(t *testing.T) { framework.CheckVsphereMultiTemplateUbuntu127EnvVars(t) provider := framework.NewVSphere( @@ -1007,6 +1171,18 @@ func TestVSphereKubernetes128GitFlux(t *testing.T) { runFluxFlow(test) } +func TestVSphereKubernetes129GitFlux(t *testing.T) { + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithFluxGit(), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + ) + runFluxFlow(test) +} + func TestVSphereKubernetes128BottleRocketGithubFlux(t *testing.T) { test := framework.NewClusterE2ETest(t, framework.NewVSphere(t, framework.WithBottleRocket128()), @@ -1019,6 +1195,18 @@ func TestVSphereKubernetes128BottleRocketGithubFlux(t *testing.T) { runFluxFlow(test) } +func TestVSphereKubernetes129BottleRocketGithubFlux(t *testing.T) { + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithFluxGithub(), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + ) + runFluxFlow(test) +} + func TestVSphereKubernetes128BottleRocketGitFlux(t *testing.T) { test := framework.NewClusterE2ETest(t, framework.NewVSphere(t, framework.WithBottleRocket128()), @@ -1031,6 +1219,18 @@ func TestVSphereKubernetes128BottleRocketGitFlux(t *testing.T) { runFluxFlow(test) } +func TestVSphereKubernetes129BottleRocketGitFlux(t *testing.T) { + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithFluxGit(), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + ) + runFluxFlow(test) +} + func TestVSphereKubernetes127To128GitFluxUpgrade(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu127()) test := framework.NewClusterE2ETest(t, @@ -1049,6 +1249,24 @@ func TestVSphereKubernetes127To128GitFluxUpgrade(t *testing.T) { ) } +func TestVSphereKubernetes128To129GitFluxUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithUbuntu128()) + test := framework.NewClusterE2ETest(t, + provider, + framework.WithFluxGit(), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + ) + runUpgradeFlowWithFlux( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Ubuntu129Template()), + ) +} + func TestVSphereInstallGitFluxDuringUpgrade(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu128()) test := framework.NewClusterE2ETest(t, @@ -1093,6 +1311,32 @@ func TestVSphereKubernetes128UbuntuLabelsUpgradeFlow(t *testing.T) { ) } +func TestVSphereKubernetes129UbuntuLabelsUpgradeFlow(t *testing.T) { + provider := ubuntu129ProviderWithLabels(t) + + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(1), + api.WithControlPlaneCount(1), + api.RemoveAllWorkerNodeGroups(), // This gives us a blank slate + ), + ) + + runLabelsUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade( + api.WithWorkerNodeGroup(worker0, api.WithLabel(key1, val1)), + api.WithWorkerNodeGroup(worker1, api.WithLabel(key2, val2)), + api.WithWorkerNodeGroup(worker2), + api.WithControlPlaneLabel(cpKey1, cpVal1), + ), + ) +} + func TestVSphereKubernetes128BottlerocketLabelsUpgradeFlow(t *testing.T) { provider := bottlerocket128ProviderWithLabels(t) @@ -1119,6 +1363,32 @@ func TestVSphereKubernetes128BottlerocketLabelsUpgradeFlow(t *testing.T) { ) } +func TestVSphereKubernetes129BottlerocketLabelsUpgradeFlow(t *testing.T) { + provider := bottlerocket129ProviderWithLabels(t) + + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(1), + api.WithControlPlaneCount(1), + api.RemoveAllWorkerNodeGroups(), // This gives us a blank slate + ), + ) + + runLabelsUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade( + api.WithWorkerNodeGroup(worker0, api.WithLabel(key1, val1)), + api.WithWorkerNodeGroup(worker1, api.WithLabel(key2, val2)), + api.WithWorkerNodeGroup(worker2), + api.WithControlPlaneLabel(cpKey1, cpVal1), + ), + ) +} + // Multicluster func TestVSphereKubernetes128MulticlusterWorkloadCluster(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu128()) @@ -1148,6 +1418,34 @@ func TestVSphereKubernetes128MulticlusterWorkloadCluster(t *testing.T) { runWorkloadClusterFlow(test) } +func TestVSphereKubernetes129MulticlusterWorkloadCluster(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithUbuntu129()) + test := framework.NewMulticlusterE2ETest( + t, + framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithControlPlaneCount(1), + api.WithWorkerNodeCount(1), + api.WithStackedEtcdTopology(), + ), + ), + framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithControlPlaneCount(1), + api.WithWorkerNodeCount(1), + api.WithStackedEtcdTopology(), + ), + ), + ) + runWorkloadClusterFlow(test) +} + func TestVSphereUpgradeMulticlusterWorkloadClusterWithGithubFlux(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu126()) test := framework.NewMulticlusterE2ETest( @@ -1241,6 +1539,19 @@ func TestVSphereKubernetes128OIDC(t *testing.T) { runOIDCFlow(test) } +func TestVSphereKubernetes129OIDC(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithOIDC(), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + ) + runOIDCFlow(test) +} + func TestVSphereKubernetes127To128OIDCUpgrade(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu127()) test := framework.NewClusterE2ETest( @@ -1275,6 +1586,20 @@ func TestVSphereKubernetes128UbuntuProxyConfigFlow(t *testing.T) { runProxyConfigFlow(test) } +func TestVSphereKubernetes129UbuntuProxyConfigFlow(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129(), + framework.WithPrivateNetwork()), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithProxy(framework.VsphereProxyRequiredEnvVars), + ) + runProxyConfigFlow(test) +} + func TestVSphereKubernetes128BottlerocketProxyConfigFlow(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -1289,6 +1614,20 @@ func TestVSphereKubernetes128BottlerocketProxyConfigFlow(t *testing.T) { runProxyConfigFlow(test) } +func TestVSphereKubernetes129BottlerocketProxyConfigFlow(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129(), + framework.WithPrivateNetwork()), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithProxy(framework.VsphereProxyRequiredEnvVars), + ) + runProxyConfigFlow(test) +} + // Registry mirror func TestVSphereKubernetes128UbuntuRegistryMirrorInsecureSkipVerify(t *testing.T) { test := framework.NewClusterE2ETest( @@ -1316,10 +1655,23 @@ func TestVSphereKubernetes128UbuntuRegistryMirrorAndCert(t *testing.T) { runRegistryMirrorConfigFlow(test) } -func TestVSphereKubernetes128BottlerocketRegistryMirrorAndCert(t *testing.T) { +func TestVSphereKubernetes129UbuntuRegistryMirrorAndCert(t *testing.T) { test := framework.NewClusterE2ETest( t, - framework.NewVSphere(t, framework.WithBottleRocket128(), framework.WithPrivateNetwork()), + framework.NewVSphere(t, framework.WithUbuntu129(), framework.WithPrivateNetwork()), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithRegistryMirrorEndpointAndCert(constants.VSphereProviderName), + ) + runRegistryMirrorConfigFlow(test) +} + +func TestVSphereKubernetes128BottlerocketRegistryMirrorAndCert(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket128(), framework.WithPrivateNetwork()), framework.WithClusterFiller(api.WithControlPlaneCount(1)), framework.WithClusterFiller(api.WithWorkerNodeCount(1)), framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), @@ -1329,6 +1681,19 @@ func TestVSphereKubernetes128BottlerocketRegistryMirrorAndCert(t *testing.T) { runRegistryMirrorConfigFlow(test) } +func TestVSphereKubernetes129BottlerocketRegistryMirrorAndCert(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129(), framework.WithPrivateNetwork()), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithRegistryMirrorEndpointAndCert(constants.VSphereProviderName), + ) + runRegistryMirrorConfigFlow(test) +} + func TestVSphereKubernetes128UbuntuAuthenticatedRegistryMirror(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -1342,6 +1707,19 @@ func TestVSphereKubernetes128UbuntuAuthenticatedRegistryMirror(t *testing.T) { runRegistryMirrorConfigFlow(test) } +func TestVSphereKubernetes129UbuntuAuthenticatedRegistryMirror(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129(), framework.WithPrivateNetwork()), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithAuthenticatedRegistryMirror(constants.VSphereProviderName), + ) + runRegistryMirrorConfigFlow(test) +} + func TestVSphereKubernetes128BottlerocketAuthenticatedRegistryMirror(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -1355,6 +1733,19 @@ func TestVSphereKubernetes128BottlerocketAuthenticatedRegistryMirror(t *testing. runRegistryMirrorConfigFlow(test) } +func TestVSphereKubernetes129BottlerocketAuthenticatedRegistryMirror(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129(), framework.WithPrivateNetwork()), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithAuthenticatedRegistryMirror(constants.VSphereProviderName), + ) + runRegistryMirrorConfigFlow(test) +} + // Clone mode func TestVSphereKubernetes128FullClone(t *testing.T) { diskSize := 30 @@ -1375,6 +1766,25 @@ func TestVSphereKubernetes128FullClone(t *testing.T) { runVSphereCloneModeFlow(test, vsphere, diskSize) } +func TestVSphereKubernetes129FullClone(t *testing.T) { + diskSize := 30 + vsphere := framework.NewVSphere(t, + framework.WithUbuntu129(), + framework.WithFullCloneMode(), + framework.WithDiskGiBForAllMachines(diskSize), + ) + + test := framework.NewClusterE2ETest( + t, + vsphere, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + ) + runVSphereCloneModeFlow(test, vsphere, diskSize) +} + func TestVSphereKubernetes128LinkedClone(t *testing.T) { diskSize := 20 vsphere := framework.NewVSphere(t, @@ -1394,6 +1804,25 @@ func TestVSphereKubernetes128LinkedClone(t *testing.T) { runVSphereCloneModeFlow(test, vsphere, diskSize) } +func TestVSphereKubernetes129LinkedClone(t *testing.T) { + diskSize := 20 + vsphere := framework.NewVSphere(t, + framework.WithUbuntu129(), + framework.WithLinkedCloneMode(), + framework.WithDiskGiBForAllMachines(diskSize), + ) + + test := framework.NewClusterE2ETest( + t, + vsphere, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + ) + runVSphereCloneModeFlow(test, vsphere, diskSize) +} + func TestVSphereKubernetes128BottlerocketFullClone(t *testing.T) { diskSize := 30 vsphere := framework.NewVSphere(t, @@ -1413,6 +1842,25 @@ func TestVSphereKubernetes128BottlerocketFullClone(t *testing.T) { runVSphereCloneModeFlow(test, vsphere, diskSize) } +func TestVSphereKubernetes129BottlerocketFullClone(t *testing.T) { + diskSize := 30 + vsphere := framework.NewVSphere(t, + framework.WithBottleRocket129(), + framework.WithFullCloneMode(), + framework.WithDiskGiBForAllMachines(diskSize), + ) + + test := framework.NewClusterE2ETest( + t, + vsphere, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + ) + runVSphereCloneModeFlow(test, vsphere, diskSize) +} + func TestVSphereKubernetes128BottlerocketLinkedClone(t *testing.T) { diskSize := 22 vsphere := framework.NewVSphere(t, @@ -1432,6 +1880,25 @@ func TestVSphereKubernetes128BottlerocketLinkedClone(t *testing.T) { runVSphereCloneModeFlow(test, vsphere, diskSize) } +func TestVSphereKubernetes129BottlerocketLinkedClone(t *testing.T) { + diskSize := 22 + vsphere := framework.NewVSphere(t, + framework.WithBottleRocket129(), + framework.WithLinkedCloneMode(), + framework.WithDiskGiBForAllMachines(diskSize), + ) + + test := framework.NewClusterE2ETest( + t, + vsphere, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + ) + runVSphereCloneModeFlow(test, vsphere, diskSize) +} + // Simpleflow func TestVSphereKubernetes125Ubuntu2004SimpleFlow(t *testing.T) { test := framework.NewClusterE2ETest( @@ -1469,6 +1936,15 @@ func TestVSphereKubernetes128Ubuntu2004SimpleFlow(t *testing.T) { runSimpleFlow(test) } +func TestVSphereKubernetes129Ubuntu2004SimpleFlow(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) + runSimpleFlow(test) +} + func TestVSphereKubernetes125Ubuntu2204SimpleFlow(t *testing.T) { provider := framework.NewVSphere(t) test := framework.NewClusterE2ETest( @@ -1513,6 +1989,17 @@ func TestVSphereKubernetes128Ubuntu2204SimpleFlow(t *testing.T) { runSimpleFlowWithoutClusterConfigGeneration(test) } +func TestVSphereKubernetes129Ubuntu2204SimpleFlow(t *testing.T) { + provider := framework.NewVSphere(t) + test := framework.NewClusterE2ETest( + t, + provider, + ).WithClusterConfig( + provider.WithKubeVersionAndOS(v1alpha1.Kube129, framework.Ubuntu2204, nil), + ) + runSimpleFlowWithoutClusterConfigGeneration(test) +} + func TestVSphereKubernetes125RedHatSimpleFlow(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -1549,42 +2036,31 @@ func TestVSphereKubernetes128RedHatSimpleFlow(t *testing.T) { runSimpleFlow(test) } -func TestVSphereKubernetes127To128RedHatUpgrade(t *testing.T) { - provider := framework.NewVSphere(t, framework.WithRedHat127VSphere()) +func TestVSphereKubernetes129RedHatSimpleFlow(t *testing.T) { test := framework.NewClusterE2ETest( t, - provider, - framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube127)), - ) - runSimpleUpgradeFlow( - test, - v1alpha1.Kube128, - framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube128)), - provider.WithProviderUpgrade(provider.Redhat128Template()), + framework.NewVSphere(t, framework.WithRedHat129VSphere()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), ) + runSimpleFlow(test) } -func TestVSphereKubernetes127To128StackedEtcdRedHatUpgrade(t *testing.T) { - provider := framework.NewVSphere(t, framework.WithRedHat127VSphere()) +func TestVSphereKubernetes128ThreeReplicasFiveWorkersSimpleFlow(t *testing.T) { test := framework.NewClusterE2ETest( t, - provider, - framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube127)), - framework.WithClusterFiller(api.WithStackedEtcdTopology()), - ) - runSimpleUpgradeFlow( - test, - v1alpha1.Kube128, - framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube128)), - provider.WithProviderUpgrade(provider.Redhat128Template()), + framework.NewVSphere(t, framework.WithUbuntu128()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + framework.WithClusterFiller(api.WithControlPlaneCount(3)), + framework.WithClusterFiller(api.WithWorkerNodeCount(5)), ) + runSimpleFlow(test) } -func TestVSphereKubernetes128ThreeReplicasFiveWorkersSimpleFlow(t *testing.T) { +func TestVSphereKubernetes129ThreeReplicasFiveWorkersSimpleFlow(t *testing.T) { test := framework.NewClusterE2ETest( t, - framework.NewVSphere(t, framework.WithUbuntu128()), - framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), framework.WithClusterFiller(api.WithControlPlaneCount(3)), framework.WithClusterFiller(api.WithWorkerNodeCount(5)), ) @@ -1601,6 +2077,16 @@ func TestVSphereKubernetes128DifferentNamespaceSimpleFlow(t *testing.T) { runSimpleFlow(test) } +func TestVSphereKubernetes129DifferentNamespaceSimpleFlow(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129(), framework.WithVSphereFillers(api.WithVSphereConfigNamespaceForAllMachinesAndDatacenter(clusterNamespace))), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithClusterNamespace(clusterNamespace)), + ) + runSimpleFlow(test) +} + func TestVSphereKubernetes127BottleRocketSimpleFlow(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -1619,6 +2105,15 @@ func TestVSphereKubernetes128BottleRocketSimpleFlow(t *testing.T) { runSimpleFlow(test) } +func TestVSphereKubernetes129BottleRocketSimpleFlow(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) + runSimpleFlow(test) +} + func TestVSphereKubernetes128BottleRocketThreeReplicasFiveWorkersSimpleFlow(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -1630,6 +2125,17 @@ func TestVSphereKubernetes128BottleRocketThreeReplicasFiveWorkersSimpleFlow(t *t runSimpleFlow(test) } +func TestVSphereKubernetes129BottleRocketThreeReplicasFiveWorkersSimpleFlow(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(3)), + framework.WithClusterFiller(api.WithWorkerNodeCount(5)), + ) + runSimpleFlow(test) +} + func TestVSphereKubernetes128BottleRocketDifferentNamespaceSimpleFlow(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -1641,6 +2147,17 @@ func TestVSphereKubernetes128BottleRocketDifferentNamespaceSimpleFlow(t *testing runSimpleFlow(test) } +func TestVSphereKubernetes129BottleRocketDifferentNamespaceSimpleFlow(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129(), + framework.WithVSphereFillers(api.WithVSphereConfigNamespaceForAllMachinesAndDatacenter(clusterNamespace))), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithClusterNamespace(clusterNamespace)), + ) + runSimpleFlow(test) +} + func TestVSphereKubernetes128CiliumAlwaysPolicyEnforcementModeSimpleFlow(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -1665,6 +2182,19 @@ func TestVSphereKubernetes128BottleRocketWithNTP(t *testing.T) { runNTPFlow(test, v1alpha1.Bottlerocket) } +func TestVSphereKubernetes129BottleRocketWithNTP(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere( + t, framework.WithBottleRocket129(), + framework.WithNTPServersForAllMachines(), + framework.WithSSHAuthorizedKeyForAllMachines(""), // set SSH key to empty + ), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) + runNTPFlow(test, v1alpha1.Bottlerocket) +} + func TestVSphereKubernetes128UbuntuWithNTP(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -1678,6 +2208,19 @@ func TestVSphereKubernetes128UbuntuWithNTP(t *testing.T) { runNTPFlow(test, v1alpha1.Ubuntu) } +func TestVSphereKubernetes129UbuntuWithNTP(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere( + t, framework.WithUbuntu129(), + framework.WithNTPServersForAllMachines(), + framework.WithSSHAuthorizedKeyForAllMachines(""), // set SSH key to empty + ), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) + runNTPFlow(test, v1alpha1.Ubuntu) +} + // Bottlerocket Configuration test func TestVSphereKubernetes128BottlerocketWithBottlerocketKubernetesSettings(t *testing.T) { test := framework.NewClusterE2ETest( @@ -1692,6 +2235,19 @@ func TestVSphereKubernetes128BottlerocketWithBottlerocketKubernetesSettings(t *t runBottlerocketConfigurationFlow(test) } +func TestVSphereKubernetes129BottlerocketWithBottlerocketKubernetesSettings(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere( + t, framework.WithBottleRocket129(), + framework.WithBottlerocketKubernetesSettingsForAllMachines(), + framework.WithSSHAuthorizedKeyForAllMachines(""), // set SSH key to empty + ), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) + runBottlerocketConfigurationFlow(test) +} + // Stacked etcd func TestVSphereKubernetes125StackedEtcdUbuntu(t *testing.T) { test := framework.NewClusterE2ETest(t, @@ -1729,6 +2285,15 @@ func TestVSphereKubernetes128StackedEtcdUbuntu(t *testing.T) { runStackedEtcdFlow(test) } +func TestVSphereKubernetes129StackedEtcdUbuntu(t *testing.T) { + test := framework.NewClusterE2ETest(t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(3)), + framework.WithClusterFiller(api.WithStackedEtcdTopology())) + runStackedEtcdFlow(test) +} + // Taints func TestVSphereKubernetes128UbuntuTaintsUpgradeFlow(t *testing.T) { provider := ubuntu128ProviderWithTaints(t) @@ -1756,6 +2321,32 @@ func TestVSphereKubernetes128UbuntuTaintsUpgradeFlow(t *testing.T) { ) } +func TestVSphereKubernetes129UbuntuTaintsUpgradeFlow(t *testing.T) { + provider := ubuntu129ProviderWithTaints(t) + + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(1), + api.WithControlPlaneCount(1), + api.RemoveAllWorkerNodeGroups(), // This gives us a blank slate + ), + ) + + runTaintsUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade( + api.WithWorkerNodeGroup(worker0, api.WithTaint(framework.NoExecuteTaint())), + api.WithWorkerNodeGroup(worker1, api.WithTaint(framework.NoExecuteTaint())), + api.WithWorkerNodeGroup(worker2, api.WithNoTaints()), + api.WithControlPlaneTaints([]corev1.Taint{framework.PreferNoScheduleTaint()}), + ), + ) +} + func TestVSphereKubernetes128BottlerocketTaintsUpgradeFlow(t *testing.T) { provider := bottlerocket128ProviderWithTaints(t) @@ -1782,6 +2373,32 @@ func TestVSphereKubernetes128BottlerocketTaintsUpgradeFlow(t *testing.T) { ) } +func TestVSphereKubernetes129BottlerocketTaintsUpgradeFlow(t *testing.T) { + provider := bottlerocket129ProviderWithTaints(t) + + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(1), + api.WithControlPlaneCount(1), + api.RemoveAllWorkerNodeGroups(), // This gives us a blank slate + ), + ) + + runTaintsUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade( + api.WithWorkerNodeGroup(worker0, api.WithTaint(framework.NoExecuteTaint())), + api.WithWorkerNodeGroup(worker1, api.WithTaint(framework.NoExecuteTaint())), + api.WithWorkerNodeGroup(worker2, api.WithNoTaints()), + api.WithControlPlaneTaints([]corev1.Taint{framework.PreferNoScheduleTaint()}), + ), + ) +} + func TestVSphereKubernetes127UbuntuWorkloadClusterTaintsFlow(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu127()) @@ -1863,6 +2480,21 @@ func TestVSphereKubernetes127UbuntuTo128Upgrade(t *testing.T) { ) } +func TestVSphereKubernetes128UbuntuTo129Upgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithUbuntu128()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Ubuntu129Template()), + ) +} + func TestVSphereKubernetes125To126Ubuntu2204Upgrade(t *testing.T) { provider := framework.NewVSphere(t) test := framework.NewClusterE2ETest( @@ -1911,6 +2543,22 @@ func TestVSphereKubernetes127To128Ubuntu2204Upgrade(t *testing.T) { ) } +func TestVSphereKubernetes128To129Ubuntu2204Upgrade(t *testing.T) { + provider := framework.NewVSphere(t) + test := framework.NewClusterE2ETest( + t, + provider, + ).WithClusterConfig( + provider.WithKubeVersionAndOS(v1alpha1.Kube128, framework.Ubuntu2204, nil), + ) + runSimpleUpgradeFlowWithoutClusterConfigGeneration( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Ubuntu2204Kubernetes129Template()), + ) +} + func TestVSphereKubernetes127To128Ubuntu2204StackedEtcdUpgrade(t *testing.T) { provider := framework.NewVSphere(t) test := framework.NewClusterE2ETest( @@ -1930,6 +2578,87 @@ func TestVSphereKubernetes127To128Ubuntu2204StackedEtcdUpgrade(t *testing.T) { ) } +func TestVSphereKubernetes128To129Ubuntu2204StackedEtcdUpgrade(t *testing.T) { + provider := framework.NewVSphere(t) + test := framework.NewClusterE2ETest( + t, + provider, + ).WithClusterConfig( + provider.WithKubeVersionAndOS(v1alpha1.Kube128, framework.Ubuntu2204, nil), + api.ClusterToConfigFiller( + api.WithStackedEtcdTopology(), + ), + ) + runSimpleUpgradeFlowWithoutClusterConfigGeneration( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Ubuntu2204Kubernetes129Template()), + ) +} + +func TestVSphereKubernetes127To128RedHatUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithRedHat127VSphere()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube127)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube128, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube128)), + provider.WithProviderUpgrade(provider.Redhat128Template()), + ) +} + +func TestVSphereKubernetes128To129RedHatUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithRedHat128VSphere()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Redhat129Template()), + ) +} + +func TestVSphereKubernetes127To128StackedEtcdRedHatUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithRedHat127VSphere()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube127)), + framework.WithClusterFiller(api.WithStackedEtcdTopology()), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube128, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube128)), + provider.WithProviderUpgrade(provider.Redhat128Template()), + ) +} + +func TestVSphereKubernetes128To129StackedEtcdRedHatUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithRedHat128VSphere()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + framework.WithClusterFiller(api.WithStackedEtcdTopology()), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Redhat129Template()), + ) +} + func TestVSphereKubernetes126Ubuntu2004To2204Upgrade(t *testing.T) { provider := framework.NewVSphere(t) test := framework.NewClusterE2ETest( @@ -1978,6 +2707,22 @@ func TestVSphereKubernetes128Ubuntu2004To2204Upgrade(t *testing.T) { ) } +func TestVSphereKubernetes129Ubuntu2004To2204Upgrade(t *testing.T) { + provider := framework.NewVSphere(t) + test := framework.NewClusterE2ETest( + t, + provider, + ).WithClusterConfig( + provider.WithKubeVersionAndOS(v1alpha1.Kube129, framework.Ubuntu2204, nil), + ) + runSimpleUpgradeFlowWithoutClusterConfigGeneration( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Ubuntu2204Kubernetes129Template()), + ) +} + func TestVSphereKubernetes127UbuntuTo128UpgradeCiliumPolicyEnforcementMode(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu127()) test := framework.NewClusterE2ETest( @@ -2024,6 +2769,33 @@ func TestVSphereKubernetes127UbuntuTo128MultipleFieldsUpgrade(t *testing.T) { ) } +func TestVSphereKubernetes128UbuntuTo129MultipleFieldsUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithUbuntu128()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade( + provider.Ubuntu129Template(), + api.WithNumCPUsForAllMachines(vsphereCpVmNumCpuUpdateVar), + api.WithMemoryMiBForAllMachines(vsphereCpVmMemoryUpdate), + api.WithDiskGiBForAllMachines(vsphereCpDiskGiBUpdateVar), + api.WithFolderForAllMachines(vsphereFolderUpdateVar), + // Uncomment once we support tests with multiple machine configs + /*api.WithWorkloadVMsNumCPUs(vsphereWlVmNumCpuUpdateVar), + api.WithWorkloadVMsMemoryMiB(vsphereWlVmMemoryUpdate), + api.WithWorkloadDiskGiB(vsphereWlDiskGiBUpdate),*/ + // Uncomment the network field once upgrade starts working with it + // api.WithNetwork(vsphereNetwork2UpdateVar), + ), + ) +} + func TestVSphereKubernetes128UbuntuControlPlaneNodeUpgrade(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu128()) test := framework.NewClusterE2ETest( @@ -2040,6 +2812,22 @@ func TestVSphereKubernetes128UbuntuControlPlaneNodeUpgrade(t *testing.T) { ) } +func TestVSphereKubernetes129UbuntuControlPlaneNodeUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithUbuntu129()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(3)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithControlPlaneCount(3)), + ) +} + func TestVSphereKubernetes128UbuntuWorkerNodeUpgrade(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu128()) test := framework.NewClusterE2ETest( @@ -2056,6 +2844,22 @@ func TestVSphereKubernetes128UbuntuWorkerNodeUpgrade(t *testing.T) { ) } +func TestVSphereKubernetes129UbuntuWorkerNodeUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithUbuntu129()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(3)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithWorkerNodeCount(5)), + ) +} + func TestVSphereKubernetes127BottlerocketTo128Upgrade(t *testing.T) { provider := framework.NewVSphere(t, framework.WithBottleRocket127()) test := framework.NewClusterE2ETest( @@ -2071,6 +2875,21 @@ func TestVSphereKubernetes127BottlerocketTo128Upgrade(t *testing.T) { ) } +func TestVSphereKubernetes128BottlerocketTo129Upgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithBottleRocket128()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Bottlerocket129Template()), + ) +} + func TestVSphereKubernetes127BottlerocketTo128MultipleFieldsUpgrade(t *testing.T) { provider := framework.NewVSphere(t, framework.WithBottleRocket127()) test := framework.NewClusterE2ETest( @@ -2098,40 +2917,135 @@ func TestVSphereKubernetes127BottlerocketTo128MultipleFieldsUpgrade(t *testing.T ) } +func TestVSphereKubernetes128BottlerocketTo129MultipleFieldsUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithBottleRocket128()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade( + provider.Bottlerocket129Template(), + api.WithNumCPUsForAllMachines(vsphereCpVmNumCpuUpdateVar), + api.WithMemoryMiBForAllMachines(vsphereCpVmMemoryUpdate), + api.WithDiskGiBForAllMachines(vsphereCpDiskGiBUpdateVar), + api.WithFolderForAllMachines(vsphereFolderUpdateVar), + // Uncomment once we support tests with multiple machine configs + /*api.WithWorkloadVMsNumCPUs(vsphereWlVmNumCpuUpdateVar), + api.WithWorkloadVMsMemoryMiB(vsphereWlVmMemoryUpdate), + api.WithWorkloadDiskGiB(vsphereWlDiskGiBUpdate),*/ + // Uncomment the network field once upgrade starts working with it + // api.WithNetwork(vsphereNetwork2UpdateVar), + ), + ) +} + func TestVSphereKubernetes128BottlerocketControlPlaneNodeUpgrade(t *testing.T) { provider := framework.NewVSphere(t, framework.WithBottleRocket128()) test := framework.NewClusterE2ETest( t, provider, - framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(3)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube128, + framework.WithClusterUpgrade(api.WithControlPlaneCount(3)), + ) +} + +func TestVSphereKubernetes129BottlerocketControlPlaneNodeUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithBottleRocket129()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(3)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithControlPlaneCount(3)), + ) +} + +func TestVSphereKubernetes128BottlerocketWorkerNodeUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithBottleRocket128()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(3)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube128, + framework.WithClusterUpgrade(api.WithWorkerNodeCount(5)), + ) +} + +func TestVSphereKubernetes129BottlerocketWorkerNodeUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithBottleRocket129()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(3)), + ) + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithWorkerNodeCount(5)), + ) +} + +func TestVSphereKubernetes127UbuntuTo128StackedEtcdUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithUbuntu127()) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube127)), framework.WithClusterFiller(api.WithControlPlaneCount(1)), - framework.WithClusterFiller(api.WithWorkerNodeCount(3)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithStackedEtcdTopology()), ) runSimpleUpgradeFlow( test, v1alpha1.Kube128, - framework.WithClusterUpgrade(api.WithControlPlaneCount(3)), + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube128)), + provider.WithProviderUpgrade(provider.Ubuntu128Template()), ) } -func TestVSphereKubernetes128BottlerocketWorkerNodeUpgrade(t *testing.T) { - provider := framework.NewVSphere(t, framework.WithBottleRocket128()) +func TestVSphereKubernetes128UbuntuTo129StackedEtcdUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithUbuntu128()) test := framework.NewClusterE2ETest( t, provider, framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), framework.WithClusterFiller(api.WithControlPlaneCount(1)), - framework.WithClusterFiller(api.WithWorkerNodeCount(3)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithStackedEtcdTopology()), ) runSimpleUpgradeFlow( test, - v1alpha1.Kube128, - framework.WithClusterUpgrade(api.WithWorkerNodeCount(5)), + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Ubuntu129Template()), ) } -func TestVSphereKubernetes127UbuntuTo128StackedEtcdUpgrade(t *testing.T) { - provider := framework.NewVSphere(t, framework.WithUbuntu127()) +func TestVSphereKubernetes127BottlerocketTo128StackedEtcdUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithBottleRocket127()) test := framework.NewClusterE2ETest( t, provider, @@ -2144,25 +3058,25 @@ func TestVSphereKubernetes127UbuntuTo128StackedEtcdUpgrade(t *testing.T) { test, v1alpha1.Kube128, framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube128)), - provider.WithProviderUpgrade(provider.Ubuntu128Template()), + provider.WithProviderUpgrade(provider.Bottlerocket128Template()), ) } -func TestVSphereKubernetes127BottlerocketTo128StackedEtcdUpgrade(t *testing.T) { - provider := framework.NewVSphere(t, framework.WithBottleRocket127()) +func TestVSphereKubernetes128BottlerocketTo129StackedEtcdUpgrade(t *testing.T) { + provider := framework.NewVSphere(t, framework.WithBottleRocket128()) test := framework.NewClusterE2ETest( t, provider, - framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube127)), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), framework.WithClusterFiller(api.WithControlPlaneCount(1)), framework.WithClusterFiller(api.WithWorkerNodeCount(1)), framework.WithClusterFiller(api.WithStackedEtcdTopology()), ) runSimpleUpgradeFlow( test, - v1alpha1.Kube128, - framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube128)), - provider.WithProviderUpgrade(provider.Bottlerocket128Template()), + v1alpha1.Kube129, + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + provider.WithProviderUpgrade(provider.Bottlerocket129Template()), ) } @@ -2335,6 +3249,33 @@ func TestVSphereKubernetes127To128UbuntuUpgradeFromLatestMinorRelease(t *testing ) } +func TestVSphereKubernetes128To129UbuntuUpgradeFromLatestMinorRelease(t *testing.T) { + release := latestMinorRelease(t) + provider := framework.NewVSphere(t, + framework.WithVSphereFillers( + api.WithOsFamilyForAllMachines(v1alpha1.Ubuntu), + ), + framework.WithKubeVersionAndOSForRelease(v1alpha1.Kube128, framework.Ubuntu2004, release), + ) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + ) + runUpgradeFromReleaseFlow( + test, + release, + v1alpha1.Kube129, + provider.WithProviderUpgrade( + provider.Ubuntu129Template(), // Set the template so it doesn't get autoimported + ), + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) +} + func TestVSphereKubernetes128BottlerocketAndRemoveWorkerNodeGroups(t *testing.T) { provider := framework.NewVSphere(t, framework.WithVSphereWorkerNodeGroup( @@ -2402,6 +3343,33 @@ func TestVSphereKubernetes127To128RedhatUpgradeFromLatestMinorRelease(t *testing ) } +func TestVSphereKubernetes128To129RedhatUpgradeFromLatestMinorRelease(t *testing.T) { + release := latestMinorRelease(t) + provider := framework.NewVSphere(t, + framework.WithVSphereFillers( + api.WithOsFamilyForAllMachines(v1alpha1.RedHat), + ), + framework.WithKubeVersionAndOSForRelease(v1alpha1.Kube128, framework.RedHat8, release), + ) + test := framework.NewClusterE2ETest( + t, + provider, + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube128)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + ) + runUpgradeFromReleaseFlow( + test, + release, + v1alpha1.Kube129, + provider.WithProviderUpgrade( + provider.Redhat129Template(), // Set the template so it doesn't get auto-imported + ), + framework.WithClusterUpgrade(api.WithKubernetesVersion(v1alpha1.Kube129)), + ) +} + func TestVSphereKubernetes125UbuntuUpgradeAndRemoveWorkerNodeGroupsAPI(t *testing.T) { provider := framework.NewVSphere(t) test := framework.NewClusterE2ETest( @@ -2914,6 +3882,20 @@ func TestVSphereKubernetes128UbuntuAirgappedRegistryMirror(t *testing.T) { runAirgapConfigFlow(test, "195.18.0.1/16,196.18.0.1/16") } +func TestVSphereKubernetes129UbuntuAirgappedRegistryMirror(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129(), framework.WithPrivateNetwork()), + framework.WithClusterFiller(api.WithControlPlaneCount(1)), + framework.WithClusterFiller(api.WithWorkerNodeCount(1)), + framework.WithClusterFiller(api.WithExternalEtcdTopology(1)), + framework.WithClusterFiller(api.WithKubernetesVersion(v1alpha1.Kube129)), + framework.WithRegistryMirrorEndpointAndCert(constants.VSphereProviderName), + ) + + runAirgapConfigFlow(test, "195.18.0.1/16,196.18.0.1/16") +} + func TestVSphereKubernetesUbuntu128EtcdEncryption(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -2935,6 +3917,27 @@ func TestVSphereKubernetesUbuntu128EtcdEncryption(t *testing.T) { test.DeleteCluster() } +func TestVSphereKubernetesUbuntu129EtcdEncryption(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(1), + api.WithControlPlaneCount(1), + ), + framework.WithPodIamConfig(), + ) + test.OSFamily = v1alpha1.Ubuntu + test.GenerateClusterConfig() + test.CreateCluster() + test.PostClusterCreateEtcdEncryptionSetup() + test.UpgradeClusterWithNewConfig([]framework.ClusterE2ETestOpt{framework.WithEtcdEncrytion()}) + test.StopIfFailed() + test.ValidateEtcdEncryption() + test.DeleteCluster() +} + func TestVSphereKubernetesBottlerocket128EtcdEncryption(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -2955,6 +3958,26 @@ func TestVSphereKubernetesBottlerocket128EtcdEncryption(t *testing.T) { test.DeleteCluster() } +func TestVSphereKubernetesBottlerocket129EtcdEncryption(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(1), + api.WithControlPlaneCount(1), + ), + framework.WithPodIamConfig(), + ) + test.OSFamily = v1alpha1.Bottlerocket + test.GenerateClusterConfig() + test.CreateCluster() + test.PostClusterCreateEtcdEncryptionSetup() + test.UpgradeClusterWithNewConfig([]framework.ClusterE2ETestOpt{framework.WithEtcdEncrytion()}) + test.StopIfFailed() + test.DeleteCluster() +} + func ubuntu128ProviderWithLabels(t *testing.T) *framework.VSphere { return framework.NewVSphere(t, framework.WithVSphereWorkerNodeGroup( @@ -2975,6 +3998,26 @@ func ubuntu128ProviderWithLabels(t *testing.T) *framework.VSphere { ) } +func ubuntu129ProviderWithLabels(t *testing.T) *framework.VSphere { + return framework.NewVSphere(t, + framework.WithVSphereWorkerNodeGroup( + worker0, + framework.WithWorkerNodeGroup(worker0, api.WithCount(2), + api.WithLabel(key1, val2)), + ), + framework.WithVSphereWorkerNodeGroup( + worker1, + framework.WithWorkerNodeGroup(worker1, api.WithCount(1)), + ), + framework.WithVSphereWorkerNodeGroup( + worker2, + framework.WithWorkerNodeGroup(worker2, api.WithCount(1), + api.WithLabel(key2, val2)), + ), + framework.WithUbuntu129(), + ) +} + func bottlerocket128ProviderWithLabels(t *testing.T) *framework.VSphere { return framework.NewVSphere(t, framework.WithVSphereWorkerNodeGroup( @@ -2995,6 +4038,26 @@ func bottlerocket128ProviderWithLabels(t *testing.T) *framework.VSphere { ) } +func bottlerocket129ProviderWithLabels(t *testing.T) *framework.VSphere { + return framework.NewVSphere(t, + framework.WithVSphereWorkerNodeGroup( + worker0, + framework.WithWorkerNodeGroup(worker0, api.WithCount(2), + api.WithLabel(key1, val2)), + ), + framework.WithVSphereWorkerNodeGroup( + worker1, + framework.WithWorkerNodeGroup(worker1, api.WithCount(1)), + ), + framework.WithVSphereWorkerNodeGroup( + worker2, + framework.WithWorkerNodeGroup(worker2, api.WithCount(1), + api.WithLabel(key2, val2)), + ), + framework.WithBottleRocket129(), + ) +} + func ubuntu128ProviderWithTaints(t *testing.T) *framework.VSphere { return framework.NewVSphere(t, framework.WithVSphereWorkerNodeGroup( @@ -3013,6 +4076,24 @@ func ubuntu128ProviderWithTaints(t *testing.T) *framework.VSphere { ) } +func ubuntu129ProviderWithTaints(t *testing.T) *framework.VSphere { + return framework.NewVSphere(t, + framework.WithVSphereWorkerNodeGroup( + worker0, + framework.NoScheduleWorkerNodeGroup(worker0, 2), + ), + framework.WithVSphereWorkerNodeGroup( + worker1, + framework.WithWorkerNodeGroup(worker1, api.WithCount(1)), + ), + framework.WithVSphereWorkerNodeGroup( + worker2, + framework.PreferNoScheduleWorkerNodeGroup(worker2, 1), + ), + framework.WithUbuntu129(), + ) +} + func bottlerocket128ProviderWithTaints(t *testing.T) *framework.VSphere { return framework.NewVSphere(t, framework.WithVSphereWorkerNodeGroup( @@ -3031,6 +4112,24 @@ func bottlerocket128ProviderWithTaints(t *testing.T) *framework.VSphere { ) } +func bottlerocket129ProviderWithTaints(t *testing.T) *framework.VSphere { + return framework.NewVSphere(t, + framework.WithVSphereWorkerNodeGroup( + worker0, + framework.NoScheduleWorkerNodeGroup(worker0, 2), + ), + framework.WithVSphereWorkerNodeGroup( + worker1, + framework.WithWorkerNodeGroup(worker1, api.WithCount(1)), + ), + framework.WithVSphereWorkerNodeGroup( + worker2, + framework.PreferNoScheduleWorkerNodeGroup(worker2, 1), + ), + framework.WithBottleRocket129(), + ) +} + func runVSphereCloneModeFlow(test *framework.ClusterE2ETest, vsphere *framework.VSphere, diskSize int) { test.GenerateClusterConfig() test.CreateCluster() @@ -3084,6 +4183,27 @@ func TestVSphereKubernetes128BottlerocketEtcdScaleUp(t *testing.T) { ) } +func TestVSphereKubernetes129BottlerocketEtcdScaleUp(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(1), + api.WithControlPlaneCount(1), + api.WithWorkerNodeCount(1), + ), + ) + + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade( + api.WithExternalEtcdTopology(3), + ), + ) +} + func TestVSphereKubernetes128BottlerocketEtcdScaleDown(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -3105,6 +4225,27 @@ func TestVSphereKubernetes128BottlerocketEtcdScaleDown(t *testing.T) { ) } +func TestVSphereKubernetes129BottlerocketEtcdScaleDown(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithBottleRocket129()), + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(3), + api.WithControlPlaneCount(1), + api.WithWorkerNodeCount(1), + ), + ) + + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade( + api.WithExternalEtcdTopology(1), + ), + ) +} + func TestVSphereKubernetes127to128BottlerocketEtcdScaleUp(t *testing.T) { provider := framework.NewVSphere(t, framework.WithBottleRocket127()) test := framework.NewClusterE2ETest( @@ -3174,6 +4315,27 @@ func TestVSphereKubernetes128UbuntuEtcdScaleUp(t *testing.T) { ) } +func TestVSphereKubernetes129UbuntuEtcdScaleUp(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(1), + api.WithControlPlaneCount(1), + api.WithWorkerNodeCount(1), + ), + ) + + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade( + api.WithExternalEtcdTopology(3), + ), + ) +} + func TestVSphereKubernetes128UbuntuEtcdScaleDown(t *testing.T) { test := framework.NewClusterE2ETest( t, @@ -3195,6 +4357,27 @@ func TestVSphereKubernetes128UbuntuEtcdScaleDown(t *testing.T) { ) } +func TestVSphereKubernetes129UbuntuEtcdScaleDown(t *testing.T) { + test := framework.NewClusterE2ETest( + t, + framework.NewVSphere(t, framework.WithUbuntu129()), + framework.WithClusterFiller( + api.WithKubernetesVersion(v1alpha1.Kube129), + api.WithExternalEtcdTopology(3), + api.WithControlPlaneCount(1), + api.WithWorkerNodeCount(1), + ), + ) + + runSimpleUpgradeFlow( + test, + v1alpha1.Kube129, + framework.WithClusterUpgrade( + api.WithExternalEtcdTopology(1), + ), + ) +} + func TestVSphereKubernetes127to128UbuntuEtcdScaleUp(t *testing.T) { provider := framework.NewVSphere(t, framework.WithUbuntu127()) test := framework.NewClusterE2ETest( diff --git a/test/framework/vsphere.go b/test/framework/vsphere.go index 89e9599f03e9..013304a61c8c 100644 --- a/test/framework/vsphere.go +++ b/test/framework/vsphere.go @@ -160,6 +160,17 @@ func WithRedHat128VSphere() VSphereOpt { return withVSphereKubeVersionAndOS(anywherev1.Kube128, RedHat8, nil) } +// WithRedHat129VSphere vsphere test with Redhat 8 for Kubernetes 1.29. +func WithRedHat129VSphere() VSphereOpt { + return withVSphereKubeVersionAndOS(anywherev1.Kube129, RedHat8, nil) +} + +// WithUbuntu129 returns a VSphereOpt that adds API fillers to use a Ubuntu vSphere template for k8s 1.29 +// and the "ubuntu" osFamily in all machine configs. +func WithUbuntu129() VSphereOpt { + return withVSphereKubeVersionAndOS(anywherev1.Kube129, Ubuntu2004, nil) +} + // WithUbuntu128 returns a VSphereOpt that adds API fillers to use a Ubuntu vSphere template for k8s 1.28 // and the "ubuntu" osFamily in all machine configs. func WithUbuntu128() VSphereOpt { @@ -204,6 +215,11 @@ func WithBottleRocket128() VSphereOpt { return withVSphereKubeVersionAndOS(anywherev1.Kube128, Bottlerocket1, nil) } +// WithBottleRocket129 returns br 1.29 var. +func WithBottleRocket129() VSphereOpt { + return withVSphereKubeVersionAndOS(anywherev1.Kube129, Bottlerocket1, nil) +} + func WithPrivateNetwork() VSphereOpt { return func(v *VSphere) { v.fillers = append(v.fillers, @@ -456,6 +472,11 @@ func (v *VSphere) Ubuntu128Template() api.VSphereFiller { return v.templateForKubeVersionAndOS(anywherev1.Kube128, Ubuntu2004, nil) } +// Ubuntu129Template returns vsphere filler for 1.29 Ubuntu. +func (v *VSphere) Ubuntu129Template() api.VSphereFiller { + return v.templateForKubeVersionAndOS(anywherev1.Kube129, Ubuntu2004, nil) +} + // Ubuntu2204Kubernetes126Template returns vsphere filler for 1.26 Ubuntu 22.04. func (v *VSphere) Ubuntu2204Kubernetes126Template() api.VSphereFiller { return v.templateForKubeVersionAndOS(anywherev1.Kube126, Ubuntu2204, nil) @@ -471,6 +492,11 @@ func (v *VSphere) Ubuntu2204Kubernetes128Template() api.VSphereFiller { return v.templateForKubeVersionAndOS(anywherev1.Kube128, Ubuntu2204, nil) } +// Ubuntu2204Kubernetes129Template returns vsphere filler for 1.29 Ubuntu 22.04. +func (v *VSphere) Ubuntu2204Kubernetes129Template() api.VSphereFiller { + return v.templateForKubeVersionAndOS(anywherev1.Kube129, Ubuntu2204, nil) +} + // Bottlerocket125Template returns vsphere filler for 1.25 BR. func (v *VSphere) Bottlerocket125Template() api.VSphereFiller { return v.templateForKubeVersionAndOS(anywherev1.Kube125, Bottlerocket1, nil) @@ -491,6 +517,16 @@ func (v *VSphere) Bottlerocket128Template() api.VSphereFiller { return v.templateForKubeVersionAndOS(anywherev1.Kube128, Bottlerocket1, nil) } +// Bottlerocket129Template returns vsphere filler for 1.29 BR. +func (v *VSphere) Bottlerocket129Template() api.VSphereFiller { + return v.templateForKubeVersionAndOS(anywherev1.Kube129, Bottlerocket1, nil) +} + +// Redhat129Template returns vsphere filler for 1.29 Redhat. +func (v *VSphere) Redhat129Template() api.VSphereFiller { + return v.templateForKubeVersionAndOS(anywherev1.Kube129, RedHat8, nil) +} + // Redhat128Template returns vsphere filler for 1.28 Redhat. func (v *VSphere) Redhat128Template() api.VSphereFiller { return v.templateForKubeVersionAndOS(anywherev1.Kube128, RedHat8, nil)