diff --git a/.pipelines/pr-e2e.yaml b/.pipelines/pr-e2e.yaml index 6e9920873e..df62a7f39a 100644 --- a/.pipelines/pr-e2e.yaml +++ b/.pipelines/pr-e2e.yaml @@ -113,6 +113,16 @@ jobs: containerRuntime: 'docker' runSSHTests: true +- template: e2e-job-template.yaml + parameters: + name: 'k8s_1_23_docker_e2e' + k8sRelease: '1.23' + apimodel: 'examples/e2e-tests/kubernetes/release/default/definition.json' + createVNET: true + enableKMSEncryption: false + containerRuntime: 'docker' + runSSHTests: true + - template: e2e-job-template.yaml parameters: name: 'k8s_1_18_containerd_e2e' @@ -162,3 +172,13 @@ jobs: enableKMSEncryption: false containerRuntime: 'containerd' runSSHTests: true + +- template: e2e-job-template.yaml + parameters: + name: 'k8s_1_23_containerd_e2e' + k8sRelease: '1.23' + apimodel: 'examples/e2e-tests/kubernetes/release/default/definition-no-vnet.json' + createVNET: false + enableKMSEncryption: false + containerRuntime: 'containerd' + runSSHTests: true diff --git a/Jenkinsfile b/Jenkinsfile index 0c553a4f21..57116a3e23 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -6,7 +6,7 @@ defaultEnv = [ VALIDATE_CPU_LOAD: false, ] + params -def k8sVersions = ["1.18", "1.19", "1.20", "1.21", "1.22"] +def k8sVersions = ["1.18", "1.19", "1.20", "1.21", "1.22", "1.23"] def latestReleasedVersion = "1.22" def tasks = [:] def testConfigs = [] diff --git a/cmd/generate_test.go b/cmd/generate_test.go index 5ca5687480..8388b6c860 100644 --- a/cmd/generate_test.go +++ b/cmd/generate_test.go @@ -587,6 +587,11 @@ func TestExampleAPIModels(t *testing.T) { apiModelPath: "../examples/kubernetes-releases/kubernetes1.22.json", setArgs: defaultSet, }, + { + name: "1.23 example", + apiModelPath: "../examples/kubernetes-releases/kubernetes1.23.json", + setArgs: defaultSet, + }, { name: "vmss", apiModelPath: "../examples/kubernetes-vmss/kubernetes.json", diff --git a/examples/kubernetes-releases/kubernetes1.23.json b/examples/kubernetes-releases/kubernetes1.23.json new file mode 100644 index 0000000000..65ce96a0bd --- /dev/null +++ b/examples/kubernetes-releases/kubernetes1.23.json @@ -0,0 +1,30 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorRelease": "1.23" + }, + "masterProfile": { + "count": 1, + "dnsPrefix": "", + "vmSize": "Standard_D2_v3" + }, + "agentPoolProfiles": [ + { + "name": "agentpool1", + "count": 3, + "vmSize": "Standard_D2_v3" + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "" + } + ] + } + } + } +} diff --git a/pkg/api/common/versions.go b/pkg/api/common/versions.go index 2d3bbc12de..acb1b84d9e 100644 --- a/pkg/api/common/versions.go +++ b/pkg/api/common/versions.go @@ -285,6 +285,7 @@ var AllKubernetesSupportedVersions = map[string]bool{ "1.22.0-beta.2": false, "1.22.0": false, "1.22.1": true, + "1.23.0-alpha.1": true, } // AllKubernetesSupportedVersionsAzureStack is a hash table of all supported Kubernetes version strings on Azure Stack diff --git a/pkg/api/k8s_versions.go b/pkg/api/k8s_versions.go index 091f520ec2..42c7001ae2 100644 --- a/pkg/api/k8s_versions.go +++ b/pkg/api/k8s_versions.go @@ -114,6 +114,12 @@ func getDefaultImage(image, kubernetesImageBaseType string) string { // The map supports GCR or MCR image string flavors var kubernetesImageBaseVersionedImages = map[string]map[string]map[string]string{ common.KubernetesImageBaseTypeGCR: { + "1.23": { + common.AddonResizerComponentName: "addon-resizer:1.8.7", + common.MetricsServerAddonName: "metrics-server/metrics-server:v0.5.0", + common.AddonManagerComponentName: "kube-addon-manager-amd64:v9.1.5", + common.ClusterAutoscalerAddonName: "cluster-autoscaler:v1.18.0", + }, "1.22": { common.AddonResizerComponentName: "addon-resizer:1.8.7", common.MetricsServerAddonName: "metrics-server/metrics-server:v0.5.0", @@ -238,6 +244,12 @@ var kubernetesImageBaseVersionedImages = map[string]map[string]map[string]string }, }, common.KubernetesImageBaseTypeMCR: { + "1.23": { + common.AddonResizerComponentName: "oss/kubernetes/autoscaler/addon-resizer:1.8.7", + common.MetricsServerAddonName: "oss/kubernetes/metrics-server:v0.5.0", + common.AddonManagerComponentName: "oss/kubernetes/kube-addon-manager:v9.1.5", + common.ClusterAutoscalerAddonName: "oss/kubernetes/autoscaler/cluster-autoscaler:v1.21.0", + }, "1.22": { common.AddonResizerComponentName: "oss/kubernetes/autoscaler/addon-resizer:1.8.7", common.MetricsServerAddonName: "oss/kubernetes/metrics-server:v0.5.0", @@ -478,6 +490,90 @@ func getK8sVersionComponents(version, kubernetesImageBaseType string, overrides var ret map[string]string k8sComponent := kubernetesImageBaseVersionedImages[kubernetesImageBaseType][majorMinor] switch majorMinor { + case "1.23": + ret = map[string]string{ + common.APIServerComponentName: getDefaultImage(common.APIServerComponentName, kubernetesImageBaseType) + ":v" + version, + common.ControllerManagerComponentName: getDefaultImage(common.ControllerManagerComponentName, kubernetesImageBaseType) + ":v" + version, + common.KubeProxyAddonName: getDefaultImage(common.KubeProxyAddonName, kubernetesImageBaseType) + ":v" + version, + common.SchedulerComponentName: getDefaultImage(common.SchedulerComponentName, kubernetesImageBaseType) + ":v" + version, + common.CloudControllerManagerComponentName: azureCloudControllerManagerImageReference, + common.CloudNodeManagerAddonName: azureCloudNodeManagerImageReference, + common.WindowsArtifactComponentName: "v" + version + "/windowszip/v" + version + "-1int.zip", + common.WindowsArtifactAzureStackComponentName: "v" + version + common.AzureStackSuffix + "/windowszip/v" + version + common.AzureStackSuffix + "-1int.zip", + common.DashboardAddonName: dashboardImageReference, + common.DashboardMetricsScraperContainerName: dashboardMetricsScraperImageReference, + common.ExecHealthZComponentName: getDefaultImage(common.ExecHealthZComponentName, kubernetesImageBaseType), + common.AddonResizerComponentName: k8sComponent[common.AddonResizerComponentName], + common.MetricsServerAddonName: k8sComponent[common.MetricsServerAddonName], + common.CoreDNSAddonName: getDefaultImage(common.CoreDNSAddonName, kubernetesImageBaseType), + common.CoreDNSAutoscalerName: clusterProportionalAutoscalerImageReference, + common.KubeDNSAddonName: getDefaultImage(common.KubeDNSAddonName, kubernetesImageBaseType), + common.AddonManagerComponentName: k8sComponent[common.AddonManagerComponentName], + common.DNSMasqComponentName: getDefaultImage(common.DNSMasqComponentName, kubernetesImageBaseType), + common.PauseComponentName: pauseImageReference, + common.TillerAddonName: tillerImageReference, + common.ReschedulerAddonName: getDefaultImage(common.ReschedulerAddonName, kubernetesImageBaseType), + common.ACIConnectorAddonName: virtualKubeletImageReference, + common.ClusterAutoscalerAddonName: k8sComponent[common.ClusterAutoscalerAddonName], + common.DNSSidecarComponentName: getDefaultImage(common.DNSSidecarComponentName, kubernetesImageBaseType), + common.BlobfuseFlexVolumeAddonName: blobfuseFlexVolumeImageReference, + common.SMBFlexVolumeAddonName: smbFlexVolumeImageReference, + common.KeyVaultFlexVolumeAddonName: keyvaultFlexVolumeImageReference, + common.IPMASQAgentAddonName: getDefaultImage(common.IPMASQAgentAddonName, kubernetesImageBaseType), + common.AzureNetworkPolicyAddonName: azureNPMContainerImageReference, + common.CalicoTyphaComponentName: calicoTyphaImageReference, + common.CalicoCNIComponentName: calicoCNIImageReference, + common.CalicoNodeComponentName: calicoNodeImageReference, + common.CalicoPod2DaemonComponentName: calicoPod2DaemonImageReference, + common.CalicoClusterAutoscalerComponentName: calicoClusterProportionalAutoscalerImageReference, + common.CiliumAgentContainerName: ciliumAgentImageReference, + common.CiliumCleanStateContainerName: ciliumCleanStateImageReference, + common.CiliumOperatorContainerName: ciliumOperatorImageReference, + common.CiliumEtcdOperatorContainerName: ciliumEtcdOperatorImageReference, + common.AntreaControllerContainerName: antreaControllerImageReference, + common.AntreaAgentContainerName: antreaAgentImageReference, + common.AntreaOVSContainerName: antreaOVSImageReference, + "antrea" + common.AntreaInstallCNIContainerName: antreaInstallCNIImageReference, + common.NMIContainerName: aadPodIdentityNMIImageReference, + common.MICContainerName: aadPodIdentityMICImageReference, + common.AzurePolicyAddonName: azurePolicyImageReference, + common.GatekeeperContainerName: gatekeeperImageReference, + common.NodeProblemDetectorAddonName: nodeProblemDetectorImageReference, + common.CSIProvisionerContainerName: csiProvisionerImageReference, + common.CSIAttacherContainerName: csiAttacherImageReference, + common.CSILivenessProbeContainerName: csiLivenessProbeImageReference, + common.CSILivenessProbeWindowsContainerName: csiLivenessProbeWindowsImageReference, + common.CSINodeDriverRegistrarContainerName: csiNodeDriverRegistrarImageReference, + common.CSINodeDriverRegistrarWindowsContainerName: csiNodeDriverRegistrarWindowsImageReference, + common.CSISnapshotterContainerName: csiSnapshotterImageReference, + common.CSISnapshotControllerContainerName: csiSnapshotControllerImageReference, + common.CSIResizerContainerName: csiResizerImageReference, + common.CSIAzureDiskContainerName: csiAzureDiskImageReference, + common.CSIAzureFileContainerName: csiAzureFileImageReference, + common.KubeFlannelContainerName: kubeFlannelImageReference, + "flannel" + common.FlannelInstallCNIContainerName: flannelInstallCNIImageReference, + common.KubeRBACProxyContainerName: KubeRBACProxyImageReference, + common.ScheduledMaintenanceManagerContainerName: ScheduledMaintenanceManagerImageReference, + "nodestatusfreq": DefaultKubernetesNodeStatusUpdateFrequency, + "nodegraceperiod": DefaultKubernetesCtrlMgrNodeMonitorGracePeriod, + "podeviction": DefaultKubernetesCtrlMgrPodEvictionTimeout, + "routeperiod": DefaultKubernetesCtrlMgrRouteReconciliationPeriod, + "backoffretries": strconv.Itoa(DefaultKubernetesCloudProviderBackoffRetries), + "backoffjitter": strconv.FormatFloat(DefaultKubernetesCloudProviderBackoffJitter, 'f', -1, 64), + "backoffduration": strconv.Itoa(DefaultKubernetesCloudProviderBackoffDuration), + "backoffexponent": strconv.FormatFloat(DefaultKubernetesCloudProviderBackoffExponent, 'f', -1, 64), + "ratelimitqps": strconv.FormatFloat(DefaultKubernetesCloudProviderRateLimitQPS, 'f', -1, 64), + "ratelimitqpswrite": strconv.FormatFloat(DefaultKubernetesCloudProviderRateLimitQPSWrite, 'f', -1, 64), + "ratelimitbucket": strconv.Itoa(DefaultKubernetesCloudProviderRateLimitBucket), + "ratelimitbucketwrite": strconv.Itoa(DefaultKubernetesCloudProviderRateLimitBucketWrite), + "gchighthreshold": strconv.Itoa(DefaultKubernetesGCHighThreshold), + "gclowthreshold": strconv.Itoa(DefaultKubernetesGCLowThreshold), + common.NVIDIADevicePluginAddonName: nvidiaDevicePluginImageReference, + common.CSISecretsStoreProviderAzureContainerName: csiSecretsStoreProviderAzureImageReference, + common.CSISecretsStoreDriverContainerName: csiSecretsStoreDriverImageReference, + common.AzureArcOnboardingAddonName: azureArcOnboardingImageReference, + common.AzureKMSProviderComponentName: azureKMSProviderImageReference, + } case "1.22": ret = map[string]string{ common.APIServerComponentName: getDefaultImage(common.APIServerComponentName, kubernetesImageBaseType) + ":v" + version, diff --git a/vhd/packer/configure-windows-vhd.ps1 b/vhd/packer/configure-windows-vhd.ps1 index 14e587b0ef..557f53d1f0 100644 --- a/vhd/packer/configure-windows-vhd.ps1 +++ b/vhd/packer/configure-windows-vhd.ps1 @@ -124,7 +124,8 @@ function Get-FilesToCacheOnVHD { "https://kubernetesartifacts.azureedge.net/kubernetes/v1.19.14/windowszip/v1.19.14-1int.zip", "https://kubernetesartifacts.azureedge.net/kubernetes/v1.20.10/windowszip/v1.20.10-1int.zip", "https://kubernetesartifacts.azureedge.net/kubernetes/v1.21.4/windowszip/v1.21.4-1int.zip", - "https://kubernetesartifacts.azureedge.net/kubernetes/v1.22.1/windowszip/v1.22.1-1int.zip" + "https://kubernetesartifacts.azureedge.net/kubernetes/v1.22.1/windowszip/v1.22.1-1int.zip", + "https://kubernetesartifacts.azureedge.net/kubernetes/v1.23.0-alpha.1/windowszip/v1.23.0-alpha.1-1int.zip" ); "c:\akse-cache\win-vnet-cni\" = @( "https://kubernetesartifacts.azureedge.net/azure-cni/v1.2.7/binaries/azure-vnet-cni-singletenancy-windows-amd64-v1.2.7.zip", diff --git a/vhd/packer/install-dependencies.sh b/vhd/packer/install-dependencies.sh index 29bd6c08e0..93370970a4 100644 --- a/vhd/packer/install-dependencies.sh +++ b/vhd/packer/install-dependencies.sh @@ -226,6 +226,7 @@ loadContainerImage "busybox" echo " - busybox" >> ${VHD_LOGS_FILEPATH} K8S_VERSIONS=" +1.23.0-alpha.1 1.22.1 1.21.4 1.20.10