Skip to content

Commit cc832dc

Browse files
author
Dawei Wei
committed
feat: Add Windows 2025 support for Windows Cilium Networking (WCN)
- Add Windows 2025 entry to OCIArtifacts in components.json with windowsSkuMatch: 2025* - Add 3 test entries for Windows 2025 Gen2 with NextGenNetworking scenarios - AKSWindows2025Gen2+NextGenNetworking (enabled with config) - AKSWindows2025Gen2+NextGenNetworkingNoConfig (enabled without config) - AKSWindows2025Gen2+NextGenNetworkingDisabled (disabled) This enables Windows 2025 VHDs to download and cache the WCN package (v1.3.0) during VHD build, following the same pattern as Windows 23H2.
1 parent 748a134 commit cc832dc

9 files changed

Lines changed: 1914 additions & 2 deletions

File tree

e2e/scenario_win_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,35 @@ func Test_Windows2025Gen2(t *testing.T) {
349349
})
350350
}
351351

352+
func Test_Windows2025Gen2_WindowsCiliumNetworking(t *testing.T) {
353+
t.Skip("skipping test for Windows Cilium Networking (WCN) on Windows 2025 Gen2, as it needs a reboot after provisioning - and that is not working yet")
354+
RunScenario(t, &Scenario{
355+
Description: "Windows Server 2025 Gen2 with Windows Cilium Networking (WCN) enabled",
356+
Config: Config{
357+
Cluster: ClusterAzureNetwork,
358+
VHD: config.VHDWindows2025Gen2,
359+
VMConfigMutator: EmptyVMConfigMutator,
360+
WaitForSSHAfterReboot: 5 * time.Minute,
361+
BootstrapConfigMutator: func(configuration *datamodel.NodeBootstrappingConfiguration) {
362+
Windows2025BootstrapConfigMutator(t, configuration)
363+
if configuration.AgentPoolProfile.AgentPoolWindowsProfile == nil {
364+
configuration.AgentPoolProfile.AgentPoolWindowsProfile = &datamodel.AgentPoolWindowsProfile{}
365+
}
366+
configuration.AgentPoolProfile.AgentPoolWindowsProfile.NextGenNetworkingEnabled = to.Ptr(true)
367+
configuration.AgentPoolProfile.AgentPoolWindowsProfile.NextGenNetworkingConfig = to.Ptr("")
368+
},
369+
Validator: func(ctx context.Context, s *Scenario) {
370+
ValidateWindowsVersionFromWindowsSettings(ctx, s, "2025-gen2")
371+
ValidateWindowsProductName(ctx, s, "Windows Server 2025 Datacenter")
372+
ValidateWindowsDisplayVersion(ctx, s, "24H2")
373+
ValidateFileHasContent(ctx, s, "/k/kubeletstart.ps1", "--container-runtime=remote")
374+
ValidateWindowsProcessHasCliArguments(ctx, s, "kubelet.exe", []string{"--rotate-certificates=true", "--client-ca-file=c:\\k\\ca.crt"})
375+
ValidateWindowsCiliumIsRunning(ctx, s)
376+
},
377+
},
378+
})
379+
}
380+
352381
func Test_Windows2022_SecureTLSBootstrapping_BootstrapToken_Fallback(t *testing.T) {
353382
RunScenario(t, &Scenario{
354383
Description: "Windows Server 2022 with Containerd 2- hyperv gen 2 using secure TLS bootstrapping bootstrap token fallback",

parts/common/components.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -773,14 +773,14 @@
773773
"downloadURL": "mcr.microsoft.com/aks/aks-gpu-cuda:*",
774774
"gpuVersion": {
775775
"renovateTag": "registry=https://mcr.microsoft.com, name=aks/aks-gpu-cuda",
776-
"latestVersion": "580.95.05-20260108182831"
776+
"latestVersion": "580.95.05-20260108182831"
777777
}
778778
},
779779
{
780780
"downloadURL": "mcr.microsoft.com/aks/aks-gpu-grid:*",
781781
"gpuVersion": {
782782
"renovateTag": "registry=https://mcr.microsoft.com, name=aks/aks-gpu-grid",
783-
"latestVersion": "550.144.06-20260108183226"
783+
"latestVersion": "550.144.06-20260108183226"
784784
}
785785
}
786786
],
@@ -1772,6 +1772,11 @@
17721772
"renovateTag": "<DO_NOT_UPDATE>",
17731773
"latestVersion": "1.3.0",
17741774
"windowsSkuMatch": "23H2*"
1775+
},
1776+
{
1777+
"renovateTag": "<DO_NOT_UPDATE>",
1778+
"latestVersion": "1.3.0",
1779+
"windowsSkuMatch": "2025*"
17751780
}
17761781
]
17771782
}

pkg/agent/baker_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2293,6 +2293,27 @@ var _ = Describe("Assert generated customData and cseCmd for Windows", func() {
22932293
NextGenNetworkingConfig: to.StringPtr("{}"),
22942294
}
22952295
}),
2296+
Entry("AKSWindows2025Gen2 with NextGenNetworking", "AKSWindows2025Gen2+NextGenNetworking", "1.29.0",
2297+
func(config *datamodel.NodeBootstrappingConfiguration) {
2298+
config.AgentPoolProfile.AgentPoolWindowsProfile = &datamodel.AgentPoolWindowsProfile{
2299+
NextGenNetworkingEnabled: to.BoolPtr(true),
2300+
NextGenNetworkingConfig: to.StringPtr("{}"),
2301+
}
2302+
}),
2303+
Entry("AKSWindows2025Gen2 with NextGenNetworking enabled but no config", "AKSWindows2025Gen2+NextGenNetworkingNoConfig", "1.29.0",
2304+
func(config *datamodel.NodeBootstrappingConfiguration) {
2305+
config.AgentPoolProfile.AgentPoolWindowsProfile = &datamodel.AgentPoolWindowsProfile{
2306+
NextGenNetworkingEnabled: to.BoolPtr(true),
2307+
NextGenNetworkingConfig: nil,
2308+
}
2309+
}),
2310+
Entry("AKSWindows2025Gen2 with NextGenNetworking disabled", "AKSWindows2025Gen2+NextGenNetworkingDisabled", "1.29.0",
2311+
func(config *datamodel.NodeBootstrappingConfiguration) {
2312+
config.AgentPoolProfile.AgentPoolWindowsProfile = &datamodel.AgentPoolWindowsProfile{
2313+
NextGenNetworkingEnabled: to.BoolPtr(false),
2314+
NextGenNetworkingConfig: to.StringPtr("{}"),
2315+
}
2316+
}),
22962317
)
22972318

22982319
})
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
powershell.exe -ExecutionPolicy Unrestricted -command " $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: |49|, Output: |WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN|, Error: |$inputFile does not exist.|' }; Copy-Item $inputFile $outputFile -Force; PowerShell -File $outputFile -AgentKey '''' -AADClientSecret ''U2VjcmV0'' -CSEResultFilePath %SYSTEMDRIVE%\AzureData\provision.complete >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\provision.complete)) { throw 'ExitCode: |50|, Output: |WINDOWS_CSE_ERROR_NO_CSE_RESULT_LOG|, Error: |C:\AzureData\provision.complete is not generated.|'; }; $result=(Get-Content %SYSTEMDRIVE%\AzureData\provision.complete); if ($result -ne '0') { throw $result; }; "

pkg/agent/testdata/AKSWindows2025Gen2+NextGenNetworking/CustomData

Lines changed: 618 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
powershell.exe -ExecutionPolicy Unrestricted -command " $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: |49|, Output: |WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN|, Error: |$inputFile does not exist.|' }; Copy-Item $inputFile $outputFile -Force; PowerShell -File $outputFile -AgentKey '''' -AADClientSecret ''U2VjcmV0'' -CSEResultFilePath %SYSTEMDRIVE%\AzureData\provision.complete >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\provision.complete)) { throw 'ExitCode: |50|, Output: |WINDOWS_CSE_ERROR_NO_CSE_RESULT_LOG|, Error: |C:\AzureData\provision.complete is not generated.|'; }; $result=(Get-Content %SYSTEMDRIVE%\AzureData\provision.complete); if ($result -ne '0') { throw $result; }; "

pkg/agent/testdata/AKSWindows2025Gen2+NextGenNetworkingDisabled/CustomData

Lines changed: 618 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
powershell.exe -ExecutionPolicy Unrestricted -command " $inputFile = '%SYSTEMDRIVE%\AzureData\CustomData.bin'; $outputFile = '%SYSTEMDRIVE%\AzureData\CustomDataSetupScript.ps1'; if (!(Test-Path $inputFile)) { throw 'ExitCode: |49|, Output: |WINDOWS_CSE_ERROR_NO_CUSTOM_DATA_BIN|, Error: |$inputFile does not exist.|' }; Copy-Item $inputFile $outputFile -Force; PowerShell -File $outputFile -AgentKey '''' -AADClientSecret ''U2VjcmV0'' -CSEResultFilePath %SYSTEMDRIVE%\AzureData\provision.complete >> %SYSTEMDRIVE%\AzureData\CustomDataSetupScript.log 2>&1; if (!(Test-Path %SYSTEMDRIVE%\AzureData\provision.complete)) { throw 'ExitCode: |50|, Output: |WINDOWS_CSE_ERROR_NO_CSE_RESULT_LOG|, Error: |C:\AzureData\provision.complete is not generated.|'; }; $result=(Get-Content %SYSTEMDRIVE%\AzureData\provision.complete); if ($result -ne '0') { throw $result; }; "

pkg/agent/testdata/AKSWindows2025Gen2+NextGenNetworkingNoConfig/CustomData

Lines changed: 618 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)