From 04566d68f763b695696b42fa509752a8ef61e21b Mon Sep 17 00:00:00 2001 From: xinhl Date: Tue, 3 Mar 2026 02:35:16 +0900 Subject: [PATCH 1/4] feat: init oras and reserve some exit code for network isolated cluster in windows --- parts/windows/kuberneteswindowssetup.ps1 | 27 ++++- parts/windows/windowscsehelper.ps1 | 19 +++- .../AKSWindows2019+CustomCloud/CustomData | 12 +- staging/cse/windows/containerdfunc.ps1 | 10 +- staging/cse/windows/containerdfunc.tests.ps1 | 16 +-- .../windows/networkisolatedclusterfunc.ps1 | 48 ++++++++ .../networkisolatedclusterfunc.tests.ps1 | 107 ++++++++++++++++++ 7 files changed, 219 insertions(+), 20 deletions(-) create mode 100644 staging/cse/windows/networkisolatedclusterfunc.ps1 create mode 100644 staging/cse/windows/networkisolatedclusterfunc.tests.ps1 diff --git a/parts/windows/kuberneteswindowssetup.ps1 b/parts/windows/kuberneteswindowssetup.ps1 index 33e663a8edc..0d6ac4adf23 100644 --- a/parts/windows/kuberneteswindowssetup.ps1 +++ b/parts/windows/kuberneteswindowssetup.ps1 @@ -221,8 +221,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="{{GetBootstrapProfileContainerRegistryServer}}" -$global:MCR_REPOSITORY_BASE="{{GetMCRRepositoryBase}}" +$global:BootstrapProfileContainerRegistryServer="{{GetBootstrapProfileContainerRegistryServer}}" +$global:MCRRepositoryBase="{{GetMCRRepositoryBase}}" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -291,6 +296,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -333,6 +344,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/parts/windows/windowscsehelper.ps1 b/parts/windows/windowscsehelper.ps1 index 106830b9e81..c4d892c59e6 100644 --- a/parts/windows/windowscsehelper.ps1 +++ b/parts/windows/windowscsehelper.ps1 @@ -79,9 +79,16 @@ $global:WINDOWS_CSE_ERROR_WINDOWS_CILIUM_NETWORKING_INSTALL_FAILED=72 $global:WINDOWS_CSE_ERROR_EXTRACT_ZIP=73 $global:WINDOWS_CSE_ERROR_LOAD_METADATA=74 $global:WINDOWS_CSE_ERROR_PARSE_METADATA=75 +$global:WINDOWS_CSE_ERROR_ORAS_NOT_FOUND=76 # exit code for not finding oras in the expected path, which is a prerequisite for pulling packages from registry for network isolated cluster +$global:WINDOWS_CSE_ERROR_ORAS_IMDS_TIMEOUT=77 # exit code for timeout waiting for IMDS response +$global:WINDOWS_CSE_ERROR_ORAS_PULL_NETWORK_TIMEOUT=78 # exit code for error pulling oras when login +$global:WINDOWS_CSE_ERROR_ORAS_PULL_UNAUTHORIZED=79 # exit code for error pulling artifact with oras from registry with authorization issue +$global:WINDOWS_CSE_ERROR_ORAS_PULL_WINDOWSZIP_FAIL=80 # exit code for error pulling kubelet kubectl artifact with oras from registry +$global:WINDOWS_CSE_ERROR_ORAS_PULL_CREDENTIAL_PROVIDER=81 # exit code for error pulling credential provider artifact with oras from registry +$global:WINDOWS_CSE_ERROR_ORAS_PULL_POD_INFRA_CONTAINER=82 # exit code for error pulling pause image with oras from registry # WINDOWS_CSE_ERROR_MAX_CODE is only used in unit tests to verify whether new error code name is added in $global:ErrorCodeNames # Please use the current value of WINDOWS_CSE_ERROR_MAX_CODE as the value of the new error code and increment it by 1 -$global:WINDOWS_CSE_ERROR_MAX_CODE=76 +$global:WINDOWS_CSE_ERROR_MAX_CODE=83 # Please add new error code for downloading new packages in RP code too $global:ErrorCodeNames = @( @@ -160,7 +167,14 @@ $global:ErrorCodeNames = @( "WINDOWS_CSE_ERROR_WINDOWS_CILIUM_NETWORKING_INSTALL_FAILED", "WINDOWS_CSE_ERROR_EXTRACT_ZIP", "WINDOWS_CSE_ERROR_LOAD_METADATA", - "WINDOWS_CSE_ERROR_PARSE_METADATA" + "WINDOWS_CSE_ERROR_PARSE_METADATA", + "WINDOWS_CSE_ERROR_ORAS_NOT_FOUND", + "WINDOWS_CSE_ERROR_ORAS_IMDS_TIMEOUT", + "WINDOWS_CSE_ERROR_ORAS_PULL_NETWORK_TIMEOUT", + "WINDOWS_CSE_ERROR_ORAS_PULL_UNAUTHORIZED", + "WINDOWS_CSE_ERROR_ORAS_PULL_WINDOWSZIP_FAIL", + "WINDOWS_CSE_ERROR_ORAS_PULL_CREDENTIAL_PROVIDER", + "WINDOWS_CSE_ERROR_ORAS_PULL_POD_INFRA_CONTAINER" ) # The package domain to be used @@ -635,3 +649,4 @@ function Resolve-Error ($ErrorRecord=$Error[0]) $Exception |Format-List * -Force } } + diff --git a/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData b/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData index d3af76406b4..d955f752ed1 100644 --- a/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData @@ -285,6 +285,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -374,13 +380,13 @@ function BasePrep { # we borrow the logic of AzureStackCloud to achieve AKSCustomCloud. # In case of AKSCustomCloud, customer cloud env will be loaded from azurestackcloud.json - + $azureStackConfigFile = [io.path]::Combine($global:KubeDir, "azurestackcloud.json") $envJSON = "eyJuYW1lIjoiQXp1cmVTdGFja0Nsb3VkIiwiTmFtZSI6IkF6dXJlU3RhY2tDbG91ZCIsIm1jclVSTCI6Im1jci5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkIiwicmVwb0RlcG90RW5kcG9pbnQiOiJodHRwczovL3JlcG9kZXBvdC5henVyZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkL3VidW50dSIsIm1hbmFnZW1lbnRQb3J0YWxVUkwiOiJodHRwczovL3BvcnRhbC5henVyZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsInNlcnZpY2VNYW5hZ2VtZW50RW5kcG9pbnQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsInJlc291cmNlTWFuYWdlckVuZHBvaW50IjoiaHR0cHM6Ly9tYW5hZ2VtZW50LmF6dXJlLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQvIiwiYWN0aXZlRGlyZWN0b3J5RW5kcG9pbnQiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsImtleVZhdWx0RW5kcG9pbnQiOiJodHRwczovL3ZhdWx0LmNsb3VkYXBpLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQvIiwiZ3JhcGhFbmRwb2ludCI6Imh0dHBzOi8vZ3JhcGguY2xvdWRhcGkubWljcm9zb2Z0LmZha2VjdXN0b21jbG91ZC8iLCJzdG9yYWdlRW5kcG9pbnRTdWZmaXgiOiJjb3JlLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQiLCJzcWxEYXRhYmFzZUROU1N1ZmZpeCI6ImRhdGFiYXNlLmNsb3VkYXBpLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQiLCJrZXlWYXVsdEROU1N1ZmZpeCI6InZhdWx0LmNsb3VkYXBpLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQiLCJyZXNvdXJjZU1hbmFnZXJWTUROU1N1ZmZpeCI6ImNsb3VkYXBwLmF6dXJlLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQvIiwiY29udGFpbmVyUmVnaXN0cnlETlNTdWZmaXgiOiIuYXp1cmVjci5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkIiwiY29zbW9zREJETlNTdWZmaXgiOiJkb2N1bWVudHMuY29yZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsInRva2VuQXVkaWVuY2UiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsInJlc291cmNlSWRlbnRpZmllcnMiOnt9fQ==" [io.file]::WriteAllBytes($azureStackConfigFile, [System.Convert]::FromBase64String($envJSON)) Get-CACertificates - + Write-CACert -CACertificate $global:CACertificate ` -KubeDir $global:KubeDir @@ -418,7 +424,7 @@ function BasePrep { Set-Explorer Adjust-PageFileSize Logs-To-Event -TaskName "AKS.WindowsCSE.PreprovisionExtension" -TaskMessage "Start preProvisioning script" - + Update-ServiceFailureActions Adjust-DynamicPortRange Register-LogsCleanupScriptTask diff --git a/staging/cse/windows/containerdfunc.ps1 b/staging/cse/windows/containerdfunc.ps1 index 09442d5175f..6330052dcc3 100644 --- a/staging/cse/windows/containerdfunc.ps1 +++ b/staging/cse/windows/containerdfunc.ps1 @@ -161,7 +161,7 @@ function ProcessAndWriteContainerdConfig { # Set up registry mirrors Set-ContainerdRegistryConfig -Registry "docker.io" -RegistryHost "registry-1.docker.io" - if ((Test-Path variable:global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER) -and -not [string]::IsNullOrEmpty($global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER)) { + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and -not [string]::IsNullOrEmpty($global:BootstrapProfileContainerRegistryServer)) { Set-BootstrapProfileRegistryContainerdHost } else { Set-ContainerdRegistryConfig -Registry "mcr.azk8s.cn" -RegistryHost "mcr.azure.cn" @@ -235,9 +235,9 @@ server = "https://$Registry" } function Set-BootstrapProfileRegistryContainerdHost { - $mcrRegistry = if ((Test-Path variable:global:MCR_REPOSITORY_BASE) -and - -not [string]::IsNullOrEmpty($global:MCR_REPOSITORY_BASE)) { - [string]$global:MCR_REPOSITORY_BASE + $mcrRegistry = if ((Test-Path variable:global:MCRRepositoryBase) -and + -not [string]::IsNullOrEmpty($global:MCRRepositoryBase)) { + [string]$global:MCRRepositoryBase } else { "mcr.microsoft.com" @@ -246,7 +246,7 @@ function Set-BootstrapProfileRegistryContainerdHost { $mcrRegistryPath = Join-Path $rootRegistryPath $mcrRegistry $hostsTomlPath = Join-Path $mcrRegistryPath "hosts.toml" - $registryHost = [string]$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER + $registryHost = [string]$global:BootstrapProfileContainerRegistryServer $registryHost = ($registryHost -replace '^https?://', '').TrimEnd('/') $registryHostParts = $registryHost.Split('/', 2) diff --git a/staging/cse/windows/containerdfunc.tests.ps1 b/staging/cse/windows/containerdfunc.tests.ps1 index f75bcc9795e..079b6665e3a 100644 --- a/staging/cse/windows/containerdfunc.tests.ps1 +++ b/staging/cse/windows/containerdfunc.tests.ps1 @@ -309,10 +309,10 @@ Describe "Set-BootstrapProfileRegistryContainerdHost" { } } - It "Should write hosts.toml for default mcr.microsoft.com when MCR_REPOSITORY_BASE is not set" { - $global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER = "myacr.azurecr.io" - if (Test-Path variable:global:MCR_REPOSITORY_BASE) { - Remove-Variable -Name MCR_REPOSITORY_BASE -Scope Global + It "Should write hosts.toml for default mcr.microsoft.com when MCRRepositoryBase is not set" { + $global:BootstrapProfileContainerRegistryServer = "myacr.azurecr.io" + if (Test-Path variable:global:MCRRepositoryBase) { + Remove-Variable -Name MCRRepositoryBase -Scope Global } Set-BootstrapProfileRegistryContainerdHost @@ -329,8 +329,8 @@ Describe "Set-BootstrapProfileRegistryContainerdHost" { } It "Should sanitize bootstrap profile host and use custom mcr repository base" { - $global:MCR_REPOSITORY_BASE = "my.mcr.mirror" - $global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER = "https://myacr.azurecr.io/some/path/" + $global:MCRRepositoryBase = "my.mcr.mirror" + $global:BootstrapProfileContainerRegistryServer = "https://myacr.azurecr.io/some/path/" Set-BootstrapProfileRegistryContainerdHost @@ -343,8 +343,8 @@ Describe "Set-BootstrapProfileRegistryContainerdHost" { } It "Should map host with repository prefix to v2 path" { - $global:MCR_REPOSITORY_BASE = "mcr.microsoft.com" - $global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER = "myacr.azurecr.io/aaa" + $global:MCRRepositoryBase = "mcr.microsoft.com" + $global:BootstrapProfileContainerRegistryServer = "myacr.azurecr.io/aaa" Set-BootstrapProfileRegistryContainerdHost diff --git a/staging/cse/windows/networkisolatedclusterfunc.ps1 b/staging/cse/windows/networkisolatedclusterfunc.ps1 new file mode 100644 index 00000000000..41fdbd27c3b --- /dev/null +++ b/staging/cse/windows/networkisolatedclusterfunc.ps1 @@ -0,0 +1,48 @@ +function Ensure-Oras { + if (Test-Path $global:OrasPath) { + return + } + # Ensure cache directory exists before checking for archives or downloading + if (-Not (Test-Path $global:OrasCacheDir)) { + New-Item -ItemType Directory -Path $global:OrasCacheDir -Force | Out-Null + } + + if (-Not (Test-Path $global:OrasCacheDir)) { + Set-ExitCode -ExitCode $global:WINDOWS_CSE_ERROR_ORAS_NOT_FOUND -ErrorMessage "Oras cache directory not found at $($global:OrasCacheDir)" + } + + # Look for a cached oras archive (.tar.gz or .zip) in the oras cache directory + $orasArchive = Get-ChildItem -Path $global:OrasCacheDir -File | + Where-Object { $_.Name -like "*.tar.gz" -or $_.Name -like "*.zip" } | + Sort-Object LastWriteTime -Descending | + Select-Object -First 1 + if (-Not $orasArchive) { + Set-ExitCode -ExitCode $global:WINDOWS_CSE_ERROR_ORAS_NOT_FOUND -ErrorMessage "No oras archive (.tar.gz or .zip) found in $($global:OrasCacheDir)" + } + + # Extract the archive to the oras install directory + $orasInstallDir = [IO.Path]::GetDirectoryName($global:OrasPath) + if (-Not (Test-Path $orasInstallDir)) { + New-Item -ItemType Directory -Path $orasInstallDir -Force | Out-Null + } + + Write-Log "Extracting oras from $($orasArchive.FullName) to $orasInstallDir" + if ($orasArchive.Name -like "*.zip") { + AKS-Expand-Archive -Path $orasArchive.FullName -DestinationPath $orasInstallDir + } elseif ($orasArchive.Name -like "*.tar.gz") { + try { + tar -xzf $orasArchive.FullName -C $orasInstallDir + if ($LASTEXITCODE -ne 0) { + Set-ExitCode -ExitCode $global:WINDOWS_CSE_ERROR_ORAS_NOT_FOUND -ErrorMessage "Failed to extract oras archive $($orasArchive.FullName) (tar exit code $LASTEXITCODE)" + } + } catch { + Set-ExitCode -ExitCode $global:WINDOWS_CSE_ERROR_ORAS_NOT_FOUND -ErrorMessage "Exception while extracting oras archive $($orasArchive.FullName): $($_.Exception.Message)" + } + } + + if (-Not (Test-Path $global:OrasPath)) { + Set-ExitCode -ExitCode $global:WINDOWS_CSE_ERROR_ORAS_NOT_FOUND -ErrorMessage "Oras executable not found at $($global:OrasPath) after extraction" + } + + Write-Log "Oras installed successfully at $($global:OrasPath)" +} diff --git a/staging/cse/windows/networkisolatedclusterfunc.tests.ps1 b/staging/cse/windows/networkisolatedclusterfunc.tests.ps1 new file mode 100644 index 00000000000..b617f7c636c --- /dev/null +++ b/staging/cse/windows/networkisolatedclusterfunc.tests.ps1 @@ -0,0 +1,107 @@ + +BeforeAll { + . $PSScriptRoot\..\..\..\parts\windows\windowscsehelper.ps1 + . $PSCommandPath.Replace('.tests.ps1', '.ps1') + +} + +Describe "Ensure-Oras" { + BeforeEach { + $global:OrasPath = "C:\aks-tools\oras\oras.exe" + $global:OrasCacheDir = "C:\akse-cache\oras" + $script:archiveExtractCalls = 0 + + Mock New-Item -MockWith {} + Mock Expand-Archive -MockWith { $script:archiveExtractCalls++ } + Mock AKS-Expand-Archive -MockWith { + param($Path, $DestinationPath, $Force) + $script:archiveExtractCalls++ + } + Mock tar -MockWith {} + Mock Set-ExitCode -MockWith { + Param( + [Parameter(Mandatory = $true)][int]$ExitCode, + [Parameter(Mandatory = $true)][string]$ErrorMessage + ) + throw "Set-ExitCode:${ExitCode}:${ErrorMessage}" + } + } + + It "should return early when oras executable already exists" { + Mock Test-Path -MockWith { + Param($Path) + return $Path -eq $global:OrasPath + } + + { Ensure-Oras } | Should -Not -Throw + Assert-MockCalled -CommandName 'New-Item' -Times 0 + Assert-MockCalled -CommandName 'Expand-Archive' -Times 0 + Assert-MockCalled -CommandName 'AKS-Expand-Archive' -Times 0 + } + + It "should extract cached zip archive and install oras" { + $script:orasInstalled = $false + + Mock Test-Path -MockWith { + Param($Path) + switch ($Path) { + { $_ -eq $global:OrasPath } { return $script:orasInstalled } + { $_ -eq $global:OrasCacheDir } { return $true } + { $_ -eq "C:\aks-tools\oras" } { return $false } + default { return $true } + } + } + + Mock Get-ChildItem -MockWith { + return [pscustomobject]@{ Name = "oras_1.3.0_windows_amd64.zip"; FullName = "C:\akse-cache\oras\oras_1.3.0_windows_amd64.zip" } + } + + Mock Expand-Archive -MockWith { + $script:archiveExtractCalls++ + $script:orasInstalled = $true + } + Mock AKS-Expand-Archive -MockWith { + param($Path, $DestinationPath, $Force) + $script:archiveExtractCalls++ + $script:orasInstalled = $true + } + + { Ensure-Oras } | Should -Not -Throw + $script:archiveExtractCalls | Should -Be 1 + } + + It "should fail when no cached oras archive exists" { + Mock Test-Path -MockWith { + Param($Path) + return $Path -ne $global:OrasPath + } + + Mock Get-ChildItem -MockWith { @() } + + { + Ensure-Oras + } | Should -Throw "*Set-ExitCode:$($global:WINDOWS_CSE_ERROR_ORAS_NOT_FOUND):No oras archive*" + } + + It "should fail when tar extraction returns non-zero exit code" { + Mock Test-Path -MockWith { + Param($Path) + switch ($Path) { + { $_ -eq $global:OrasPath } { return $false } + { $_ -eq $global:OrasCacheDir } { return $true } + { $_ -eq "C:\aks-tools\oras" } { return $true } + default { return $true } + } + } + + Mock Get-ChildItem -MockWith { + return [pscustomobject]@{ Name = "oras_1.3.0_windows_amd64.tar.gz"; FullName = "C:\akse-cache\oras\oras_1.3.0_windows_amd64.tar.gz" } + } + + Mock tar -MockWith { $global:LASTEXITCODE = 1 } + + { + Ensure-Oras + } | Should -Throw "*Set-ExitCode:$($global:WINDOWS_CSE_ERROR_ORAS_NOT_FOUND):Failed to extract oras archive*" + } +} From 72d495aa3ed1305b765996b213bc80109e84ad27 Mon Sep 17 00:00:00 2001 From: xinhl Date: Tue, 3 Mar 2026 11:19:02 +0900 Subject: [PATCH 2/4] comment --- staging/cse/windows/networkisolatedclusterfunc.ps1 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/staging/cse/windows/networkisolatedclusterfunc.ps1 b/staging/cse/windows/networkisolatedclusterfunc.ps1 index 41fdbd27c3b..15f1cca9a0c 100644 --- a/staging/cse/windows/networkisolatedclusterfunc.ps1 +++ b/staging/cse/windows/networkisolatedclusterfunc.ps1 @@ -1,4 +1,9 @@ +# functions for network isolated cluster + +# unpackage and install oras from cache +# Oras is used for pulling windows binaries, e.g. windowszip, from private container registry when it is network isolated cluster. function Ensure-Oras { + # If oras already installed, directly return if (Test-Path $global:OrasPath) { return } From f1c6006df2d75587b0e3c1e9a331aeb47fdc1cd5 Mon Sep 17 00:00:00 2001 From: xinhl Date: Tue, 3 Mar 2026 11:31:57 +0900 Subject: [PATCH 3/4] fix --- .../cse/windows/networkisolatedclusterfunc.ps1 | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/staging/cse/windows/networkisolatedclusterfunc.ps1 b/staging/cse/windows/networkisolatedclusterfunc.ps1 index 15f1cca9a0c..e34ae998e15 100644 --- a/staging/cse/windows/networkisolatedclusterfunc.ps1 +++ b/staging/cse/windows/networkisolatedclusterfunc.ps1 @@ -3,8 +3,22 @@ # unpackage and install oras from cache # Oras is used for pulling windows binaries, e.g. windowszip, from private container registry when it is network isolated cluster. function Ensure-Oras { - # If oras already installed, directly return - if (Test-Path $global:OrasPath) { + # Check if OrasPath variable exists to avoid latest cached cse in vhd with possible old ab svc + $orasPathVarExists = Test-Path variable:global:OrasPath + if (-not $orasPathVarExists) { + Write-Log "OrasPath variable does not exist. Setting OrasPath to default value C:\aks-tools\oras\oras.exe" + $global:OrasPath = "C:\aks-tools\oras\oras.exe" + } + + $orasFileExists = $false + + if ($orasPathVarExists -and -not [string]::IsNullOrWhiteSpace($global:OrasPath)) { + $orasFileExists = Test-Path -Path $global:OrasPath -PathType Leaf + } + + if (Test-Path -Path $global:OrasPath) { + # oras already installed, skip + Write-Log "Oras already installed at $($global:OrasPath)" return } # Ensure cache directory exists before checking for archives or downloading From 6d1378ed28393160aaa2584e7be49923414da81a Mon Sep 17 00:00:00 2001 From: xinhl Date: Tue, 3 Mar 2026 11:33:11 +0900 Subject: [PATCH 4/4] data --- .../CustomData | 29 +++++++++++++++++-- .../AKSWindows2019+CustomCloud/CustomData | 29 +++++++++++++++---- .../AKSWindows2019+CustomVnet/CustomData | 29 +++++++++++++++++-- .../CustomData | 29 +++++++++++++++++-- .../testdata/AKSWindows2019+K8S116/CustomData | 29 +++++++++++++++++-- .../testdata/AKSWindows2019+K8S117/CustomData | 29 +++++++++++++++++-- .../testdata/AKSWindows2019+K8S118/CustomData | 29 +++++++++++++++++-- .../AKSWindows2019+K8S119+CSI/CustomData | 29 +++++++++++++++++-- .../AKSWindows2019+K8S119+FIPS/CustomData | 29 +++++++++++++++++-- .../testdata/AKSWindows2019+K8S119/CustomData | 29 +++++++++++++++++-- .../CustomData | 29 +++++++++++++++++-- .../CustomData | 29 +++++++++++++++++-- .../AKSWindows2019+ManagedIdentity/CustomData | 29 +++++++++++++++++-- .../AKSWindows2019+SecurityProfile/CustomData | 29 +++++++++++++++++-- .../CustomData | 29 +++++++++++++++++-- .../CustomData | 29 +++++++++++++++++-- .../CustomData | 29 +++++++++++++++++-- .../CustomData | 29 +++++++++++++++++-- 18 files changed, 465 insertions(+), 57 deletions(-) diff --git a/pkg/agent/testdata/AKSWindows2019+CustomCloud+ootcredentialprovider/CustomData b/pkg/agent/testdata/AKSWindows2019+CustomCloud+ootcredentialprovider/CustomData index 6a9621ed8eb..a9b0828d4b4 100644 --- a/pkg/agent/testdata/AKSWindows2019+CustomCloud+ootcredentialprovider/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+CustomCloud+ootcredentialprovider/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData b/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData index d955f752ed1..15aec6939cf 100644 --- a/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+CustomCloud/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -333,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL @@ -380,13 +397,13 @@ function BasePrep { # we borrow the logic of AzureStackCloud to achieve AKSCustomCloud. # In case of AKSCustomCloud, customer cloud env will be loaded from azurestackcloud.json - + $azureStackConfigFile = [io.path]::Combine($global:KubeDir, "azurestackcloud.json") $envJSON = "eyJuYW1lIjoiQXp1cmVTdGFja0Nsb3VkIiwiTmFtZSI6IkF6dXJlU3RhY2tDbG91ZCIsIm1jclVSTCI6Im1jci5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkIiwicmVwb0RlcG90RW5kcG9pbnQiOiJodHRwczovL3JlcG9kZXBvdC5henVyZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkL3VidW50dSIsIm1hbmFnZW1lbnRQb3J0YWxVUkwiOiJodHRwczovL3BvcnRhbC5henVyZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsInNlcnZpY2VNYW5hZ2VtZW50RW5kcG9pbnQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsInJlc291cmNlTWFuYWdlckVuZHBvaW50IjoiaHR0cHM6Ly9tYW5hZ2VtZW50LmF6dXJlLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQvIiwiYWN0aXZlRGlyZWN0b3J5RW5kcG9pbnQiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsImtleVZhdWx0RW5kcG9pbnQiOiJodHRwczovL3ZhdWx0LmNsb3VkYXBpLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQvIiwiZ3JhcGhFbmRwb2ludCI6Imh0dHBzOi8vZ3JhcGguY2xvdWRhcGkubWljcm9zb2Z0LmZha2VjdXN0b21jbG91ZC8iLCJzdG9yYWdlRW5kcG9pbnRTdWZmaXgiOiJjb3JlLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQiLCJzcWxEYXRhYmFzZUROU1N1ZmZpeCI6ImRhdGFiYXNlLmNsb3VkYXBpLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQiLCJrZXlWYXVsdEROU1N1ZmZpeCI6InZhdWx0LmNsb3VkYXBpLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQiLCJyZXNvdXJjZU1hbmFnZXJWTUROU1N1ZmZpeCI6ImNsb3VkYXBwLmF6dXJlLm1pY3Jvc29mdC5mYWtlY3VzdG9tY2xvdWQvIiwiY29udGFpbmVyUmVnaXN0cnlETlNTdWZmaXgiOiIuYXp1cmVjci5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkIiwiY29zbW9zREJETlNTdWZmaXgiOiJkb2N1bWVudHMuY29yZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsInRva2VuQXVkaWVuY2UiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS5taWNyb3NvZnQuZmFrZWN1c3RvbWNsb3VkLyIsInJlc291cmNlSWRlbnRpZmllcnMiOnt9fQ==" [io.file]::WriteAllBytes($azureStackConfigFile, [System.Convert]::FromBase64String($envJSON)) Get-CACertificates - + Write-CACert -CACertificate $global:CACertificate ` -KubeDir $global:KubeDir @@ -424,7 +441,7 @@ function BasePrep { Set-Explorer Adjust-PageFileSize Logs-To-Event -TaskName "AKS.WindowsCSE.PreprovisionExtension" -TaskMessage "Start preProvisioning script" - + Update-ServiceFailureActions Adjust-DynamicPortRange Register-LogsCleanupScriptTask diff --git a/pkg/agent/testdata/AKSWindows2019+CustomVnet/CustomData b/pkg/agent/testdata/AKSWindows2019+CustomVnet/CustomData index 92c55d606cb..ccb856ab816 100644 --- a/pkg/agent/testdata/AKSWindows2019+CustomVnet/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+CustomVnet/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CustomData b/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CustomData index 8f4612558ae..022780fe461 100644 --- a/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+EnablePrivateClusterHostsConfigAgent/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAAcAAAAd2luZG93cy93aW5kb3dzY3NlaGVscGVyLnBzMdR9a3PbOLLod/0KXFn3xN4JFduJnRlN8dxlJNrRWK9LUnaycUoLk5CEE4rQEqAdT5L/fgoPkiBF0nJ298Omtjw22d1oNBr9QoN7ALw1poD6Md4ygClIKAoAIyBASxwhcAcp9kHCcAiWSeQzTCLaOgBDAXuHGEOxBp2BABwBtkaKLgVJFKAYUAZXOFq98il69YCjgDzQbqt1AAYSG4YhQF8xAz4JkCBxI4FA37XloJuEMrCBzF+Dv3+yjL8tPv/y91ZnFZI7GPZuhpPB9MZd9F174c77fdt1zePKt7bjTJ3FfHI1md5MzBNwAC5IDJIIfd0in6EAoDgmMfBhslozcPco5uKLYe9C4n/hvH1J7lAcIYaomgpFLNl2t/SkYcjB9GYymlqDxcVwZC9uht77hWN7zkfztAFpOLmeXtkL+4Pdn3vWu5Ftvm6AFpQnU29hfxi6nvmmAbT/3u5fLazZcOHazrXtLPrTycTue8ProffRPGvAnFlz114Mx9alPtZ5A8al7S3c+buJ7S1mjn0x/GC+bYSe2I7l2QtvemVPFhdTZ2E5Y/PXBpSJ7d1MnavFcOLZzoXVt12Ns9/2QLQG1syzHQ3rpEl7xtbEurTH9sRbDGc6UtP6963RsD8V4h727YXV70/nE0/HblKE/nTiWcOJ7QwExnDietZoZA/MkyaFKGE588lkOLk0T5o0YzqzJ677vjxMk0qkKBdDx76xRiOB259OLoaXc4cjN2nHcHJtjYaDxcxyrLHNV2E4WVh/mzu2ImGeNKnLZLoYTPtXtrPwpot38+FooDQ0m7t50qQ7XDn71qJvO97wYti3PNs1T5p0JtvHZazTJpWxxzPv4y5Kk8LYE77hF67d57LwRq552qQhl2PXWtgfZtZksLCc/vvhtW2eNimHRJCDzKY3tuO+t0ejxcwZXg9H9qVtnjapicB2bW/h2JdD13M+Lma2Mx667nA6MU+btGUX89oazbk0Go0IxxqOZ1PHW/T7l/a1PfFc87TRkhRRrKvr2Ww0vxxOUuRGmzL1FhfT+WRQ3O3maaM9yZCkJk7m43e2Y75u0owcZ+ZMr4dcfsPJ5cLtO8OZ55qvm1TE9SyHm5CBvXBsLlKJtfAs98p83aQtuRa79mJm9a+sS9t83aQuGcbV/J3tTGzPdnPEJk3Jh5oMc4wmDckw3k/cxXg6mHO/16Qc2p4URjYbpUk9MiShJxlKk1JoUhvy5frwMcfbz2bkBjlFfNOkHHxNvf5sMfg4scbD/kLosmNNOF6TYkj1U4axbA/fNCnGbM5tQO7jzTdNSiHH8azLIkpj5JGL4N1wYjkf02ilSSNSOdgf+qP5wC7IoUkxON58UC2/Jt1I8arGa7Yai/7c9abjxcDyLD5B881v4AA4iCUxj4sxTQNMEiAeS/oU+ZuAx47gYY0i0O/dWn8mMRpABm/7CWVkw3/t3uEIBARREBHGQ2XKnmDDFTZhPvIWo+mleXb8T3Dh2g6iSci6IVntz0R/OvvIx170p6MRDy2nk8yqnTUpr2O7w7/Zi6m7GDjci501ur3ZXII5abRiiZEurCGPW84aPWANrjcc29O5Z541OsAa5OvxQrDP7bo7n3HN4Xw0esQaUnNHhlKu7Zlnjc5xNl+4V/PFcHIxzR2KedboHWsGzfMUaziaO7Z51hg+6VRkIOcOLyeWJzCbbGLd+PaHvj3jv5nnTZbxKZnZH2zzvEnL5rOB5XFPy/3Zoj+au55Mg3jIed6ocrbyucPZ9TmPCc4blcz2dJt3bTsiRDpv0i01o0XfsQf2xBtaIxkcDGwHmOD8DBzk2TJYkhjgiDIYhjhaAT9GAYoYhiHYxuQeByjeyzPxoQbFsczz852RAvIQhQQGNUOBJcRhEqMmu7A7qUzsb3fG89fI/1I3mE+iJV7tMaY1+GPueouZdWmLJJnvUPO8SbFH0+nVfCZXYtK3pT33rEvz/LcdHkNCBIvJFkQkQFtCwlfXY8DgioJ7DMFwPHD3WYM81F+8m04913Os2aI/GtoTz3x73LgUFPlJjIA3csEdIYyyGG6BH2IUsT3Ek+pbIwMnTVr3z42fPRmOhvNxmpbzzZlypsz526Z9aX/wHKvvLf42nJlvm7akEPbY9iy+qObbpp04sxzX1mDPWgdgF2psfVj0pwMbYApIFD7KUhqOQBJhBhiijAJGwD2K8fKRe1i2RjGI0IPuhiO4QZwADAKJnHJlc5g+CdAEbhBtHYBZiCBFfBBZnUrimMv5HoYJAmTZxCCkAiUD5X+U+IARH92P0YYTxaII1mRIU9rm2/NWzhwMgjLhss7y11vof4ErWfJzZhKOEdKqnjswwV8PWwAA0Nb5UBW/9svdV8rWy3JfPUBdca4eY6cyVw9aLMvVwzXW5OrRKgty9eA71bgm0KpSXD18Ux3uaaydIlw9Sk0BrkG0TxTfGjBrCm97Y6iiWz18ZcHtafCaYlujxjYX2hqW6MkiW7O+lepee+zDvTEqC2sN4OWiWgPjuwW1p4Dri2lPYNYU0p6DJYtoT2CUC2h7g5eLZ026Ulk42wdBL5rtA19VMKvHayqW7aOReaFsD+jdItkeSFqBbA/ovDi2B3CxMLYHgl4U2wN8pyC2D85OMaxh8WoLYfU4TUWweqxyAewp+qXi115+QS98PT3n3SJUM051wetpnOeMs1voaoYtVKOaZFRbM6pHKtWLGmxaY63o+XiqTvR8xMoa0fPJaPWhZuTd2tDzByvXhfakUKoJ7YlVVQ96PqpWC6pHbqoDNQxZqgE1Q+7Wf+rhG2o/+9jUijJOw3arLcXU41SVUuqh68ooe0yloRjxtPR+Cjl78kQZop6CVoJokolWfmhwRIXSQ7t1xLNrb43SnBkEZANxBBgBd6IYEGRZ80xCDFSyffGPIAIm6ERJGKY0YrREcYyCjNrF/x9McgLp62pK7TRt78IvtAv/TGLU9cmm3ToAFzAM76D/RdADeKmN5MMoIowz65OIQZ9pHKdoNeNBnxobHMcklqOhYIW6EWJtLpPJ1LN74CpryrlGMcVEOy4Rw+EItO/b2YBjHOENDHewbjBbjyBDlPUlFooDzsFJ9/TX7nEbHIAbHIbAX8NohQBmXPyiCEPiGPkM3KvBxTHKAwI02W5JzESxI+1p8nPKClytyoYzlWy0BqOMHiOi3qOhnna//tRsTuV0Xr/uHvMFs0K2JslqrWYRMQwF+VQvkjgEmAKKGMARsK7crE4TkYeXYoqMSyRCsnss2QaQycLUkoQhecDRCtzDGMO7EFFRBLJWKGLv4BcUZyKxT21ZJ9O7wnblBBjabEPI8mJiPi+lOp6C4LO8/3b8w5DqefLqDkcwxoi+yskaOoChmrkMuAnO33QZjLurP4WCpQoVJZs7FKsSn5EV+fjkSELBNoQ+ohlnLuMzzvlLqQjpn3dfn+XKWF6iAujb7ulxPeipBnvaPe6+abfyWp2ckII4PT49E1DHp2diWhdJGGbLvIVsTQGMEVihCMWQoQAklK/dJ8piHK0+93oXJN5Advik6F+CjlqvI7kPuG6gIGfMvkcRoyOyWuFoNcAxZ6vfu1X8ipPH2xFZ0dtZmKxwRG/H2I8JJUvW7ZPNNmGoK49GXdFkaH9lKOLD3UrCt7m4PEi/TOBGaEPxqYc3yGVws5WvWqodcolDhmIQow255+YjkZs95uYqpuDw9pjPCftrISsfblkSSzWIKN100VcESMK2CZMzD8lqxffFOhZ7bEseUEzXKAxbaiBHDDRJwpCCb6CzAEaMhCKBF7fHL16CFy/Aj1YKzHmmgudvoN05vETMGHBVN+TKAHLUA51FW2CofkxwE2OGjBFZHXY2iFK4Qkfgm/A5nQ1dcbegHoPvOX3xXmK+J5QJ0JZONTPQOETTexS/Z2yryM5gDDeySsv/fRJ/I4biwzGMAshI/MhHZXGCjj6nypWBd+Zx+PKnkQeIMhxBzuIMsvXehHDENCr2V8z6JEDiyVFL/OcAXOCYMnkexe0cRYi7N8g1BoEHzKQFpVzZslJ+GCMYPAIf+msUACI7Y6/fD6T8/RDBaB6HnJF5HHbdbYjZ4Yv/9+Lo07Fkp8OJK/39NJx2+aQ+93qXiF2oF4cZFcVohyIY+2tRKj8ST/AS5HuWc8J3nAGjABx6iDKDEwVlgKNUS4o0ORMDzD0diR9zTujOAC9z3l8KLFeQmG752nzu9awwTOlgRCWjP1o5v3LEbp8kEQNGhMCxzlCm1KA9F0ZKSTh1E2Spic4AfbJ95FBiqZYx2YBOOsKn489HfDnLqtPOxuLIxpChDVCSyhCBoSHtUBC70kdqZvwnCikqStVPYjSLCSM+Cam2ZOI1jqoAPrmPlKFNd4JY1+XvMXtMIbzHLfrc60mIAVrCJGQvwT4YNHyt9If/W5IYQX8NDjtbBccNXErHjpKNXPprGCaIPs1SQZlAusS78zMiwpR3piAbu4xcKbtfzByhAP2jtftbkeH4HvtoRnDExjCCKxRzgZSmwbdoachcXJ0x3G5RIHfyXMQ/xjtIEX9gDCPMMAz573yTV6qwQAnA3BkJGGD8t06TkezYTNPqSp3NWSJhMIvJKkaUymAeRT63Ip3dpzlSJcYLF4coYuEj9/c4StALbZiUMe45uBtPJTvAcBURyrBPuy4j2wfIfG65XAZjNkEPmp6z+LG0wB0Yr4Syf5vH2Mwl8TsYI7Ymgdm+RKz9O5gmwviYZTn8DsSxoSVcldnm47d/FEZwEIsfjT7ZbLgZzH5pD6N78gUZDqJMDtUGhsWZkSwZHA8jCs7kr48DFMJHF/kkCig4Oc5VTV0ZKM7LRcxIfQvIf+tozzjfY+WP2xcQhzK20I9Nc3l05TyFz6/Q8uLiiGXQzQsK4ZaiYMwlXQK11SschpjK2eVrrrsTa7sdRhSv1oz25WE/N9Ui0Szv2g7isRkwwQQ9GNO7/+HJUjuP66ztNsS+WMKUYncAGeRKx4Mv2hWxnYdCtOGSb1cQ76aRHteKNEKpBJzFZItihhH91E49afszF0S6v6qwxnz1ffqpPUhiwemYSqRMlEWsOiF1vRj6X8R8DiXpI235ntiO1Tu7VWVXUhGgQHq+ok3Z8Vc40pViQ3PJ8UBTeMBdH6ftNJAaCPAdyIDUGGHKwHe+UQ1XxGrge85gS85XDyv1HdLaO5w0m8O45ijQrA0m9c0onspV0gTsIgayzctFmv3BrQn6ilm+RXVqUrJZNqSQzGLgecBza57zf0+7NijawpgzzR9A8EDiLzAmSRQAirlytAGJwQsQEFH14K85YHazaYtiQYaJNVzRIhMae+ZhgVs9JfnOU5L/+7b/QspC9APlbOtLOSOUbUkkjSmMmUrcYrWsPL0zPGKIXQCMLE9rW1duVyWCfdfupmRKVNoSJTOVwq/wJfBjxDMiGAE+NsPcU0IqIvZYkpAx+FitAZTcSrPk8iAyCVHAaSulNuyvyE8YAu08eeNpnvQMiWiSaecu5O9txamRsqriwL+31YjbGEc+3sKwatBZ9tKYUxQPA+B+dD17DLjCkYhHU0BFLJbvy+DYSaIRukcheI9Xa0SZ0h4W49VKLDmmUgYkdfad9J3k4A9y56kHhsUAyBLLo64VBMq9HZ6cHXGLjLiLAMY0oyUuAOI6KQJDyTGVtJFPUROFkTKQscZja5Hdc6RUqMBPhQqX/KfoBOQRPzct+ro6aIUpQ3GZmVzPlDYYfq5Rw2ibMOWatGmVd31fqFiwl47pO0LiGVn69BMGbsdGXSRh+HSma3aWMKTVGXPKzVxsJBO0Zf0nBNsk3hKqbNVRnpoZE8IKmWPKw1FNhibnDYJ0pBxDVANLLOReh+uSzLv4T6H6GSgojQ3+W5W3gYi+SpmW7hP340J2tysXKHzUAVgztqW9V68og/4Xco/iZUgeuj7ZvIKvXr85O/vt7OzNq/Pf3p6cnueLzifhoc2WxDB+zAdXFZgtjGVQlMbNhRyf4/G/VNSWLh7oRKoioJAuExx87vUm6IH/pqD3kN7hHwRHSpCKE0H6qKC21pVr2F+3MAoMK/bX+B79VKHnGoaYpzkTwiZJGE5je7Nlj4e5Tnae1uNnkXt2LSjdI/Wk7wgJEYw+d/LMXm6MYg5TkpaSsIyXygFU51vpyY9iTMWjdr2SUFJnN/F9ROkyCcNH7ulhlEd7gn5taWM3RdHIqsyDEUVTp2hUZR1ZhFgdEErMZ4SFoCFd2qcBuJxKzSN4FyI5IZFPgD/xVsxqJ4kqRqTFTPHfovi5MVbDPK2qT5JeQ7oW5w8adZ7I/gtIF4NslRH/W+gW0mvdDXGDfdjBwATHv4Pfge53dqsJB2AgA+KQrIBI5mW0LH7dwMfseJCiiGLGd2wAGSzQ0LaGYAx0MOiBji/Xq5hixvKW1X9lywn+yofKYPIEvapG0MG//FJ4IEtlwFihTNhVBTG2jskD6CwKL4pFDxEjG26I0LZOvjlScReouogMhcVO2nsnNORXGbWnopcChU+fizrNjcmeBJ7MD3HEiuTDkDygIIWUFdjjoyLG7m7gitkIUywcmeCkVrv50of50v8uFKQm0OKwwEkiEQ1r4s3EBLrdbq6s/1UJk70WijeyXM/+MPTE5QEjIgxHu1Ip66POkjaC3BgoAElEdbclzk7ymyWFMdu1Gmyk0mtQZf7PVz6oYv+VokSwB+s641XbfmcXif88t/Bnf13DhPIcI1YKJULUitUqZhgWpShmxgUOkS3i1/23adOpGqfH48K9jfzTx2nViYQap5BIPFd2GZXSTdUq586jFlVreJfgMJiIA341uLLjh2loo2qGj6D9/mo07t260wvvxnLs/HA6PcAGE++2Ly/lqLP39lFXPRDj1DGRnuWr7OBO48msYVZA0gfMxHGNhqHLsH3y9u356zb4lk6qffLr8W9tbSu0T49fv/lVhwgZ9U+PT0+LUGevfytAnb5+X4D41lkIVyUgf2vLY0b+LESg/fr49W9v2z9y9IZGhZykOsfas5ZeGxxWt5nXlNwZAUscBSKNV20hQMhW9YD0CotTLr7XKtkMJhT95y1yFdTzFrqaxn/6yg7l/Ucjb4QRx36BMY2MvBXL0Bdcs8TPsMKdfISsPeJZ6JPhOxwNcPxTqH0SLX8Kl8vgpxELfWwt5TgO+AYpXHpMTa46+X8py538fxFDMd6oYP8BiX6drTo4wfcofEx780T/gN5XdyzcLQzDMvWueBGRB9kCxhBl3Fi1AOg8FC24WWHWW4XwQikP0NoMRSCkLbUz6pWXfrfNsVchrpegOHKvzB/X630r8IrRnA+h49NoZ9TamjwuT3UA7jgNQKKKVscuKEy5B3b7zWoloSD5q3eq3a8sElAvE6Fg1cOlLZCiecSZ5SyqYnx3m50odknsrxFl4qRmFhNRZMiZ7Ys765mA9dUW4/MwGEbgDom/DAABDzbB3Bl1Aequui8BaKeVyOo2XK3BMf3W3qv74+5x9815dROkfFfT/6i4iACKgi3BEespNn6CCyXiGyT3DxeotvHSVsQG3ZBNddUrhHgyILZQ+1UbUKJ13/bkyoKTLlBhGLhDa3iPSSxbuaRNSQWtoE+73BeVzUPKpei8Xq1Cea+Zm4K0Yg5IDNaELfFXPt2OX27rNJ/oEN3PTsToHwkfdO6MQJOZSEXXaCc0oOKm6IolE6lgYYSuHQX0BrP1YftVO4vXDzL7+KCWeBuje4wequxrOrSyoGqUkh010D8aosRCj1q9nOt6ZqVLF2kgH/vwk5LC511JHYnGUxgjj2hgP9F9fSSipuOf5LzAeKuErLpwgflzLbs7XBxVxB7cYxcf/FLBQksX645v3G9ND4A3HUzB4R3CIcLrBEarI9BTjbnqG0Y8f8dL9WFOYRqcGbfUMZIfIdD2dqk/X2bUmeoVpsAYikU/9f1t8MttN/0h+8TFr9VmtA66aFhvuWW9Vaa1amsBQ37ldJengtIIIBSIzNlM/6Rp42hpUqf/pG48sZG0rqJmbek6spPgUGf/ZRWnR5mOixrKXgaRkvAeBSVjDb/ISwz/Vhv5T0RTz4iadiOjwt+cjd2UBBjFJSkrW5YbaGmCeKrCfj0FAIYK6bPYvpAPFWXwLyk9pXLcu/RUSWG3iUe2XYm2CbM9jJZiK2ASwVDblqX+nN025AIVkW6mVSZtEJo2mJmf0vaJ6XJJEfvc682ZPyEPXY/MI/yVv9Fb7tRBbkelOvy1WdH03358fHw0xmMjCMD7973Npkdpd7lcttOG8BBSVrwHUXicNrMBExzvzL14U4ILoN0uSKBEvHzvYhdQG65zKE7H8QbRLYyAIVW/Zmg7CgqiKLSMV1z36BRYqLv5oVOUpPQKcJmqUVAnJUd995rgEPlrUnz4nW/bexQzjxh/0MyvqmsX/AkwwV8lNa2c855QJvoSe6DdQdF9L+1UifjDfEO0R9oSCGB9TaoA0yUoAGcPNQQVLOtz7u3uqB+t9l+rpqREoT/cFYVE/B9KInUSXCWK7F6K4LhqKXWup1skpzIMdHj9sQadZn890D7pnhzrrwpCLemCDmdnVkCuVf6nBqQJUJNIUYBS96by/pAulO+iKsYtt2jS+JZaptI9qh+db0WT86PLicj2FevKBQ84DAGLoTjozG8VVmdwadthoMp0+b1T1YxedyuzdcCztz+SCIGTE+7feZzVBeCPhCdJscq6RCtizsoDAg8wEp5vDe8RWKYXSUOywj5Pt2QPIiOtA4AimsQ8CoRM3DGt5h/L8r+4yyBOTR6QyK0z0ooLEgagP5iI1O8guwiWejWKmJSDFHp2lzGzKVV3VhXl/PKruF4rPmQv1oAHdJstSxdgFxYsxXUj8TGupZzoEuKQAqwoNE1C614QMZGhWKQFHv8lDjq7KcxJ/ryXTu//7kcl7dSpO3w9+1kSNxAzcbxYczTb2RbXOr3lYZYEUT7IPdnjIPcAiNJQvJGrrXSV2727ENM1D2sj5DN8j9kjX/Qapb9DSxIj8SHCYnukaEzMz0Yrrl3EiG5JRLkbUwf+N+jOUXUGYx7jvObT+VaY749XuS14tUYwZOs/26KF9R2k2J/BWNzSEr6eJMxFPjgr9TmVLplUcybCMFOeqGcPuy6DLKHiiLGAJgKZAipPPU+Pj6saKDS/b6cyl8lEQerFde62VRvTJO091P/dxQh+KTzVLiNVd3+UJnpceKuz+NVHsjX2YY1DbkjFBTdGGhSmxDrIaMhLozUTEUJcdDPgrqNYrLyWVblQVdj6oukU9OtarQIPWBYOanpgDsBwqfaMOPJ95rZ5WbCnui3VB2nY/roBK+AUlWCnNRXUtjWUbZEmGLAb+dZ88qGaYYm6b8qqnEj+LYgNxDvF/lk5OOBOrNfEXluGJUVnK1wbfYBbGXnIL1yo/0eZuTPKa8PiK5YoxkusfcOiMHjuBUtX8v4lfi+/1lfwD/LrB2ntQwMSr7ke/59D7XFa69E+cHGbx1K3PJj6nirsLddY9fZWfG7jqOg+btALecR1B+/CRxH64AjMkrsQ+8APSRJkwOn5e86urlN6AlilV2Iflu94pePzQE0b8iW4S4Qz40Fd9IJlBbnKNQOPKG9AEkMAszmIMQpGLde3pg+YGPpmzVAaPkGiC+cAqBpWqp0FlUyPJas1MhXuk9Kt+8DKkbq3XVChEH9BuWeuC8pf/aWoL7Wqml/3qf/sysumjS2llZfVn5xs7TB7TLfm8OknJlsj8j2mKhWjYk8VG4mlFougB6gbVg7ySRyY8o9Px5+P5J0Q/WWpa/ovWjO4DtblEVt6f3JJwPcCkoTOYgaziJq9aO10H2avZLz6kjNeIJM59mEUoTj780gUOb7xxLeD2+Av4NcslNEIfK+b2Y/Wj9b/BgAA//9QSwcISI5kI9scAACgbAAAUEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAAUAAAAd2luZG93cy9zZW5kbG9ncy5wczGsU09P204Qve+nmN+SQyL97NhBRIXWLTSlYJU/EYZKLeWwjSf2ivWutTt2WyG+e7U2IVBA6qF78sy8eTNvZvxmgwEAhNmXk9N5lmad5d9FrYzIHQhQpoDvjc4VAhmgEqE0jmBpLFgkK7EVClop4KBBR5+Pj0zhQtbTftjPZmfp/Dw9Pfm3zP6di2v0NLWwokJCC2YJAr6mc1hKhaBF1RE3XcH/4UcpFyVIBw41rSoeGkd7BWq6p/UFfWTcVl3gyBSAOq+N1BSyjbfsclblCum91LnUxXB0xboOhh3DpSMrdXHVGYO5oJKNGJNLGP43PEdHgXf1gdEIbjqYRWqsZreMDQ6MUBkJwj1bOEhgt0fwY6TS5DzhB0j8de+7sJInvCSqd8bjePoqnG6G8WQ7jKfjSixKqXH8bmGqOimMUM6TrjIPUeRoHU92b/jPoHJBi9ZJo3nCJ1E8CeI42Iz4Lbt90BAkMBimujXXGJyho74j2H3U8Si8Nxkb9Jt+Scm8+QslO5uTrcn0wSpWKan+KBXypJvkU1n323xG31YQbQdRfMe0Bi2URE3BwliLSpA0Wvo+X8L58+IJ3/uUzbL9uWoKqV+CrstHYRxGT2FGk5AarS+4Hnk4W/nXX2n+Z3JbCT8bZYogx1qZXxVq8kTDZ5nOjMJUOxJ6gUfS0SOHxy1l0dhO/p114v+jwNVKEvBvIR9dRv15+wN55iLWa/8dAAD//1BLBwiFX+NRIQIAAF4EAABQSwECFAAUAAgACAAAAAAASI5kI9scAACgbAAAHAAAAAAAAAAAAAAAAAAAAAAAd2luZG93cy93aW5kb3dzY3NlaGVscGVyLnBzMVBLAQIUABQACAAIAAAAAACFX+NRIQIAAF4EAAAUAAAAAAAAAAAAAAAAACUdAAB3aW5kb3dzL3NlbmRsb2dzLnBzMVBLBQYAAAAAAgACAIwAAACIHwAAAAA=" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+K8S116/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S116/CustomData index f44eb7ee18c..f85a889d87b 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S116/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S116/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+K8S117/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S117/CustomData index bb35b7fb83c..b37e251ef6c 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S117/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S117/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+K8S118/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S118/CustomData index 70ccb178f33..2ca2f935386 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S118/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S118/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CustomData index 38b0ae757bb..3d5f611364a 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S119+CSI/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CustomData index cac650ff3fe..51f32533739 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S119+FIPS/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("true") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+K8S119/CustomData b/pkg/agent/testdata/AKSWindows2019+K8S119/CustomData index ab6f71f13c3..da6bfc30ce4 100644 --- a/pkg/agent/testdata/AKSWindows2019+K8S119/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+K8S119/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CustomData b/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CustomData index b085f129e04..3d796955b86 100644 --- a/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+KubeletClientTLSBootstrapping/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+KubeletServingCertificateRotation/CustomData b/pkg/agent/testdata/AKSWindows2019+KubeletServingCertificateRotation/CustomData index 5d54a1ac5ec..7327c6391ca 100644 --- a/pkg/agent/testdata/AKSWindows2019+KubeletServingCertificateRotation/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+KubeletServingCertificateRotation/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CustomData b/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CustomData index 4d9e63f67e3..df21f63530d 100644 --- a/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+ManagedIdentity/CustomData @@ -190,7 +190,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -217,8 +217,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -287,6 +292,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -329,6 +340,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CustomData b/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CustomData index a9d154ecfc8..6a3daf27c7e 100644 --- a/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+SecurityProfile/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows2019+ootcredentialprovider/CustomData b/pkg/agent/testdata/AKSWindows2019+ootcredentialprovider/CustomData index 0cff8e5da6e..248f7bd887d 100644 --- a/pkg/agent/testdata/AKSWindows2019+ootcredentialprovider/CustomData +++ b/pkg/agent/testdata/AKSWindows2019+ootcredentialprovider/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworking/CustomData b/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworking/CustomData index bdb7b04c2fa..c64187eea64 100644 --- a/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworking/CustomData +++ b/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworking/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworkingDisabled/CustomData b/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworkingDisabled/CustomData index 703a36e22ec..a8cb27b9c7b 100644 --- a/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworkingDisabled/CustomData +++ b/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworkingDisabled/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL diff --git a/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworkingNoConfig/CustomData b/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworkingNoConfig/CustomData index c6451db3d31..3d8866c5257 100644 --- a/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworkingNoConfig/CustomData +++ b/pkg/agent/testdata/AKSWindows23H2Gen2+NextGenNetworkingNoConfig/CustomData @@ -188,7 +188,7 @@ $global:AKSAADServerAppID = "6dae42f8-4368-4678-94ff-3960e28e3630" $global:IsDisableWindowsOutboundNat = [System.Convert]::ToBoolean("false"); # Base64 representation of ZIP archive -$zippedFiles = "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" +$zippedFiles = "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" $global:KubeClusterConfigPath = "c:\k\kubeclusterconfig.json" $fipsEnabled = [System.Convert]::ToBoolean("false") @@ -215,8 +215,13 @@ $global:WindowsCiliumNetworkingPath = Join-Path -Path $global:cacheDir -ChildPat $global:WindowsCiliumInstallPath = Join-Path -Path $global:WindowsCiliumNetworkingPath -ChildPath 'install' # Network isolated cluster -$global:BOOTSTRAP_PROFILE_CONTAINER_REGISTRY_SERVER="" -$global:MCR_REPOSITORY_BASE="mcr.microsoft.com/" +$global:BootstrapProfileContainerRegistryServer="" +$global:MCRRepositoryBase="mcr.microsoft.com/" + +$global:OrasCacheDir="c:\\aks-tools\\oras\\" # refer to components.json +$global:OrasPath="c:\\aks-tools\\oras\\oras.exe" +$global:OrasOutput="c:\\aks-tools\\oras\\oras_verbose.out" +$global:OrasRegistryConfigFile="c:\\aks-tools\\oras\\config.yaml" # oras registry auth config file, not used, but have to define to avoid error "Error: failed to get user home directory: $HOME is not defined" # Extract cse helper script from ZIP [io.file]::WriteAllBytes("scripts.zip", [System.Convert]::FromBase64String($zippedFiles)) @@ -285,6 +290,12 @@ if (Test-Path -Path 'c:\AzureData\windows\windowsciliumnetworkingfunc.ps1') { Write-Log "Windows Cilium Networking function script not found, skipping dot-source" } +if (Test-Path -Path 'c:\AzureData\windows\networkisolatedclusterfunc.ps1') { + . c:\AzureData\windows\networkisolatedclusterfunc.ps1 +} else { + Write-Log "Network Isolated Cluster function script not found, skipping dot-source" +} + # ====== BASE PREP: BASE IMAGE PREPARATION ====== # All operations that prepare the base VHD image function BasePrep { @@ -327,6 +338,18 @@ function BasePrep { Write-KubeClusterConfig -MasterIP $MasterIP -KubeDnsServiceIp $KubeDnsServiceIp + # oras login must be in front of Install-CredentialProvider, Get-KubePackage and Install-Containerd-Based-On-Kubernetes-Version + if ((Test-Path variable:global:BootstrapProfileContainerRegistryServer) -and + -not [string]::IsNullOrWhiteSpace($global:BootstrapProfileContainerRegistryServer)) { + # variable exists and is not empty/whitespace + if (Get-Command -Name Ensure-Oras -ErrorAction SilentlyContinue) { + Logs-To-Event -TaskName "AKS.WindowsCSE.EnsureOras" -TaskMessage "Ensure oras is installed for network isolated cluster" + Ensure-Oras + } else { + Write-Log "Ensure-Oras is not a recognized function, will skip oras installation for network isolated cluster" + } + } + # to ensure we don't introduce any incompatibility between base CSE + CSE package versions if (Get-Command -Name Install-SecureTLSBootstrapClient -ErrorAction SilentlyContinue) { Install-SecureTLSBootstrapClient -KubeDir $global:KubeDir -CustomSecureTLSBootstrapClientDownloadUrl $global:CustomSecureTLSBootstrappingClientDownloadURL