Skip to content

feat: migrate Windows ACR credential provider to use Dalec packages - #9275

Open
An Cheng (anndono) wants to merge 14 commits into
mainfrom
chengan/migrate-acr-credential-provider
Open

An Cheng (anndono) wants to merge 14 commits into
mainfrom
chengan/migrate-acr-credential-provider

Conversation

@anndono

@anndono An Cheng (anndono) commented Aug 21, 2026 •

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:
Windows nodes now install the out-of-tree ACR credential provider from the Dalec-built package resolved from components.json for k8s version ≥ 1.33. This aligns Windows with the Linux PMC migration (the Linux gate was lowered to 1.33 in #9205).

Manual validation

Used VHDs from build 186517398 to add Windows test node pools in westus3 through aksdev with custom-image headers. Inspected configfunc.ps1 and CustomDataSetupScript.log.

OS / Kubernetes Observed result
Windows 2022 / 1.32.11 New CSE logged the below-1.33 gate and used cached legacy provider 1.32.8.
Windows 2022 / 1.33 Selected cached Dalec provider 1.33.19-1.
Windows 2025 / 1.37.1 Selected cached Dalec provider 1.37.0-1.

No provider re-download or installation-failure fallback was shown.

Scope: Validated CSE/provider selection from logs.

Which issue(s) this PR fixes:

Fixes #

@github-actions

github-actions Bot commented Aug 21, 2026 •

Copy link
Copy Markdown
Contributor

Windows Unit Test Results

  3 files   18 suites   1m 32s ⏱️
662 tests 662 ✅ 0 💤 0 ❌
685 runs  685 ✅ 0 💤 0 ❌

Results for commit 4acf16d.

♻️ This comment has been updated with latest results.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Production package compatibility and provisioning across Windows VHD/CSE release combinations require integration confirmation.

2 open issues

Review effort: Balanced

Comment thread staging/cse/windows/configfunc.ps1 Outdated
return $null
}

$componentsJsonPath = "c:\k\components.json"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer the runtime scripts to look at what is in the cache rather than rely on component.json - that decouples our scripts from the structure in compoents.json and makes future changes easier.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change to check cached package first. Now only check component.json when it's not available.

Copilot AI balanced review requested due to automatic review settings October 19, 2026 16:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

An unresolved provider-version downgrade risk and independently released Windows CSE/VHD combinations require compatibility validation.

2 open issues
1 resolved since last review

Review effort: Balanced

Comment thread staging/cse/windows/configfunc.ps1 Outdated
Comment thread parts/common/components.json Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Health
github.com/Azure/agentbaker/aks-node-controller 73% ➖
github.com/Azure/agentbaker/aks-node-controller/common 100% ✔
github.com/Azure/agentbaker/aks-node-controller/helpers 68% ➖
github.com/Azure/agentbaker/aks-node-controller/parser 88% ✔
github.com/Azure/agentbaker/aks-node-controller/pkg/gpu 100% ✔
github.com/Azure/agentbaker/aks-node-controller/pkg/nodeconfigutils 89% ✔
github.com/Azure/agentbaker/aks-node-controller/utils 0% ❌
github.com/Azure/agentbaker/apiserver 24% ❌
github.com/Azure/agentbaker/cmd 0% ❌
github.com/Azure/agentbaker/cmd/starter 0% ❌
github.com/Azure/agentbaker/fuzz/api 0% ❌
github.com/Azure/agentbaker/hotfix/render-nodecustomdata 0% ❌
github.com/Azure/agentbaker/pkg/agent 78% ➖
github.com/Azure/agentbaker/pkg/agent/datamodel 77% ➖
github.com/Azure/agentbaker/pkg/agent/toggles 0% ❌
github.com/Azure/agentbaker/pkg/vhdbuilder/datamodel 87% ✔
Summary 75% (5738 / 7649) ➖

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Windows VHD/CSE compatibility needs provisioning validation, and custom-URL handling has an unresolved defect.

2 open issues
1 previously missed issue

In code that hasn't changed since last review

Medium severity Anchor stock URL pattern to prevent hotfix bypass

staging/​cse/​windows/​configfunc.ps1:769

🟡 Medium Risk — Script Logic: The unanchored pattern also treats /hotfix/cloud-provider-azure/v1.33.3/binaries/azure-acr-credential-provider-windows-amd64-v1.33.3.tar.gz on a stock host as a stock URL. On Kubernetes ≥1.33, a successful Dalec installation then bypasses the explicitly requested hotfix. Anchor the pattern with ^ so only the root stock path opts into Dalec, and add a regression case for a custom-prefixed path on a stock host.

Review effort: Balanced

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Production bootstrap and package changes need Windows compatibility confirmation, and custom hotfix URL handling still needs correction.

3 open issues

Review effort: Balanced

Comment thread staging/cse/windows/configfunc.ps1
@timmy-wright

Copy link
Copy Markdown
Contributor

Review: Windows Dalec credential provider migration

What is good

This is a thoughtful migration with a fast common path and explicit compatibility handling.

  • Cache-first operation: a matching cached ZIP avoids metadata parsing and network access. Extraction uses temporary storage without modifying the cached archive.
  • Correct version ordering: numeric patch and package-revision comparisons avoid lexical ordering mistakes. Strict matching excludes unrelated files, prereleases, backups, and unsupported architectures.
  • Controlled behavior changes: the Kubernetes 1.33 gate preserves older-version behavior. Custom URLs bypass automatic Dalec selection, and network-isolated provisioning retains its ORAS path.
  • Older-VHD compatibility: metadata resolution supports both the older PMC layout and the dedicated Windows Dalec component.
  • Safe template handling: URL tokens are substituted literally rather than evaluated as PowerShell. HTTPS, unresolved-token, and expected-filename checks reject malformed download URLs.
  • Useful diagnostics and tests: logs explain selection and fallback decisions. Tests exercise cache misses, numeric ordering, metadata compatibility, sovereign endpoints, custom URLs, retries, and extraction failures. All 67 focused credential-provider tests passed locally.

Scope and recommendation

Reviewed PR #9275, specifically staging/cse/windows/configfunc.ps1 and its directly relevant callers, helpers, metadata, and tests.

Reviewed head: d83c3c69dfdd28272af7b936140a882f5baa668d.

I would address comments 1 and 2 before merging. Comments 3 and 4 are non-blocking improvements; comment 5 is a nitpick. The overall design does not need a framework or broad refactor.

Review comments, highest importance first

1. Blocking: validate the extracted provider before treating Dalec as successful

Category: reliability / success contract.

Location: configfunc.ps1:792-800, with installation copies at lines 843-846.

Successful ZIP extraction does not establish that azure-acr-credential-provider.exe exists. A valid ZIP without that file leaves the Dalec try block successfully, so the legacy fallback is skipped. The later copies fail outside the fallback boundary.

I reproduced this using a real ZIP containing only a README and PowerShell Copy-Item semantics. With ErrorActionPreference=Continue, the function returned without throwing, without falling back, and without installing the provider. With Stop, it threw but still did not attempt fallback.

The copy statements are pre-existing; the issue in the new path is that its fallback-protected operation ends before establishing a usable provider. A bad package could leave a node unable to authenticate private ACR image pulls.

Requested change: check that the expected executable exists inside the Dalec try block, so a missing file triggers fallback. Make final installation-copy errors terminating. Add a regression test using a valid ZIP without the executable; the existing installation tests mock the copies.

Design basis: moderate evidence. Aligning the success boundary with the actual operation makes control flow easier to reason about; the failure itself was directly reproduced. The trade-off is a small amount of explicit validation, not a larger installer abstraction.

2. Blocking: bound the optional download before relying on fallback

Category: provisioning reliability / latency.

Location: configfunc.ps1:703-712.

On a Dalec cache miss, the new metadata download runs before the legacy helper checks for an available cached RP archive. No explicit request timeout is supplied. Five retries bound the attempt count, not the duration of an attempt, so a stalled request can prevent the cached fallback from being reached within the provisioning budget.

Even immediately failing attempts introduce 40 seconds of retry sleeps before fallback. The tests explicitly cover attempting the download before reusing an available legacy archive.

Requested change: give this optional download a finite timeout and a retry budget appropriate to provisioning. Preserve the preference for Dalec, but bound how long it can delay a usable legacy source. Test the configured budget and fallback behavior.

The absence of timeouts also exists in the shared legacy downloader. The newly introduced regression is placing an additional network dependency ahead of a legacy cache hit that previously needed no download.

3. Non-blocking: retain the shared downloader's operational safeguards

Category: performance / consistency.

Location: configfunc.ps1:703-712, compared with parts/windows/windowscsehelper.ps1:223-284.

The new helper repeats the HTTP retry operation but does not preserve the existing helper's progress suppression or download-duration telemetry. It also has no equivalent explicit TLS setup. This creates two download paths whose operational behavior can drift.

Suggestion: preserve progress suppression and useful timing diagnostics, and check whether the existing TLS setup is required on supported Windows images. Do not blindly call DownloadFileOverHttp: its exit-based failure handling would defeat the new fallback contract.

Design basis: weak evidence / practitioner guidance. One coherent download policy reduces maintenance drift. A shared throwing download core could eventually help, but changing the independently released helper boundary expands scope and compatibility risk. Matching necessary safeguards locally is reasonable for this PR. No Windows-specific performance regression was measured.

4. Non-blocking: consider sharing the package-version rule, not the whole resolver

Category: maintainability / knowledge duplication.

Location: configfunc.ps1:613-630 and 670-681.

The cache and metadata resolvers duplicate the package-version grammar, numeric comparison representation, and Kubernetes major/minor compatibility rule.

Suggestion: consider a small shared parser for that domain rule. Keep filename matching, cache enumeration, and metadata traversal specific to their sources.

Design basis: weak evidence / practitioner guidance. Sharing authoritative rules can prevent inconsistent future edits, but two similar blocks alone do not justify an abstraction. Retaining the duplication is acceptable if a helper would make the code harder to follow. A generic resolver framework would be unnecessary.

5. Nitpick: name the eligibility condition after its purpose

Category: naming.

Location: configfunc.ps1:765-773.

$isStockLegacyUrl is also true when the RP URL is empty. The name describes only one reason the condition permits Dalec selection.

Suggestion: rename it to $allowDalecSelection.

Design basis: moderate evidence. Names that describe actual behavior improve comprehension. This is a local clarity improvement with no intended behavior change; it should not hold up the PR.

Security assessment

No confirmed new exploitable vulnerability was found. Literal template substitution and protected metadata are positive controls.

The new path still relies on trusted cache contents and package distribution rather than adding hash or signature verification. That limitation also exists in the legacy path; it is not a newly demonstrated vulnerability. When the RP URL is empty, metadata determines the HTTPS download host without a hostname allowlist. A legacy fallback also means the migration does not guarantee that every node uses Dalec.

These are trust-model considerations, not additional blocking findings from this review.

Validation and limitations

  • All 67 focused credential-provider Pester tests passed locally.
  • A valid ZIP missing the expected executable reproduced comment 1 with both Continue and Stop error preferences.
  • Inspection confirmed five download attempts, four ten-second retry delays, no explicit request timeout, and inherited progress output.
  • Validation ran under PowerShell on Linux, not Windows PowerShell 5.1. No network-stall experiment, Windows timing benchmark, or live-node exploit validation was performed.
  • No production scripts were changed and no review comments were posted.

@timmy-wright Tim Wright (timmy-wright) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inline comments accompanying the configfunc.ps1 review report. Comments 1 and 2 are recommended merge blockers; comments 3 and 4 are non-blocking improvements; comment 5 is a nitpick. This is a comment-only review, not an approval or request-changes vote.

Comment thread staging/cse/windows/configfunc.ps1
Comment thread staging/cse/windows/configfunc.ps1 Outdated
$mappedUrl = Update-BaseUrl -InitialUrl $Url
Write-Log "Downloading dalec credential provider $Url -> $mappedUrl to $DestinationPath"
$arglist = @{ Uri = $mappedUrl; Method = "Get"; OutFile = $DestinationPath; ErrorAction = "Stop" }
Retry-Command -Command "Invoke-RestMethod" -Args $arglist -Retries 5 -RetryDelaySeconds 10

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2. Blocking: bound this optional download before relying on the legacy fallback.

On a Dalec cache miss, this runs before DownloadFileOverHttp can reuse an available legacy RP archive. There is no explicit request timeout: five retries bound the attempt count, not how long an attempt can stall. Even immediately failing attempts add 40 seconds of retry sleeps before fallback.

Please add a finite request timeout and a retry budget appropriate to provisioning, with a test covering the budget and fallback behavior. This can preserve the preference for Dalec without leaving the usable cached source behind an unbounded optional download.

The legacy downloader also lacks an explicit timeout. The new regression is adding a network dependency ahead of a legacy cache hit that previously needed no download. This finding is based on code and retry-policy inspection; no network-stall experiment or Windows timing benchmark was run.

Comment thread staging/cse/windows/configfunc.ps1 Outdated
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][string]$DestinationPath
)
$mappedUrl = Update-BaseUrl -InitialUrl $Url
Write-Log "Downloading dalec credential provider $Url -> $mappedUrl to $DestinationPath"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3. Non-blocking: retain the shared downloader's operational safeguards.

Unlike DownloadFileOverHttp, this path does not suppress progress output or record download-duration telemetry. It also has no equivalent explicit TLS setup. Consider preserving progress suppression and timing diagnostics, and checking whether the existing TLS setup is required on supported Windows images. No Windows-specific performance regression was measured.

The throwing contract here is useful: calling the existing exit-based helper directly would undermine fallback. Matching the necessary safeguards locally is reasonable for this PR; extracting a shared throwing download core can be assessed separately rather than expanding the independently released helper boundary now.

Comment thread staging/cse/windows/configfunc.ps1 Outdated
$candidateVersion = $null
if (-not $match.Success -or
-not [version]::TryParse("$($match.Groups['version'].Value).$($match.Groups['revision'].Value)", [ref]$candidateVersion) -or
$candidateVersion.Major -ne $KubeVersion.Major -or $candidateVersion.Minor -ne $KubeVersion.Minor) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4. Non-blocking: consider sharing the package-version rule, not the whole resolver.

This repeats the package-version grammar, four-part numeric comparison representation, and Kubernetes major/minor compatibility rule from the cache-selection loop above. A small shared parser could help prevent the two sources from drifting when the version format or matching rule changes.

This is a maintainability suggestion, not a correctness defect. Keep filename matching, cache enumeration, and metadata traversal source-specific. Two occurrences alone do not justify an abstraction, so retaining the duplication is acceptable if a helper would make the flow harder to follow; a generic resolver framework would be unnecessary.

'packages.aks.azure.com',
'packages.aks.azure.us',
'acs-mirror.azureedge.net'
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

5. Nitpick: name this condition after its purpose.

$isStockLegacyUrl is also true when the URL is empty. $allowDalecSelection would describe both cases and make the following conditional read directly as policy. This is only a local clarity improvement and should not hold up the PR.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

Changes cached containers or packages on windows VHDs

Please get a Windows SIG member to approve.

The following dif file shows any additions or deletions from what will be cached on windows VHDs organised by VHD type.

  • Additions are new things cached.
  • Deletions are things no longer cached.
diff --git a/vhd_files/2022-containerd-gen2.txt b/vhd_files/2022-containerd-gen2.txt
index dc3e7f9..04b78e3 100644
--- a/vhd_files/2022-containerd-gen2.txt
+++ b/vhd_files/2022-containerd-gen2.txt
@@ -5,0 +6 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.33.20/windows/amd64/azure-acr-credential-provider_1.33.20-1_amd64.zip
@@ -6,0 +8 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.34.16/windows/amd64/azure-acr-credential-provider_1.34.16-1_amd64.zip
@@ -7,0 +10,3 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.35.11/windows/amd64/azure-acr-credential-provider_1.35.11-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.36.8/windows/amd64/azure-acr-credential-provider_1.36.8-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.37.1/windows/amd64/azure-acr-credential-provider_1.37.1-1_amd64.zip
@@ -12 +16,0 @@ c:\akse-cache\containerd\: https://packages.aks.azure.com/containerd/windows/v2.
-c:\akse-cache\credential-provider\: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz
@@ -140,0 +145 @@ Windows 2022-containerd-gen2 package aks-secure-tls-bootstrap-client default: ht
+Windows 2022-containerd-gen2 package azure-acr-credential-provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.31.9/binaries/azure-acr-credential-provider-windows-amd64-v1.31.9.tar.gz
@@ -147 +151,0 @@ Windows 2022-containerd-gen2 package windows credential provider dalec default:
-Windows 2022-containerd-gen2 package windows credential provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz
diff --git a/vhd_files/2022-containerd.txt b/vhd_files/2022-containerd.txt
index 2a115bc..affb52c 100644
--- a/vhd_files/2022-containerd.txt
+++ b/vhd_files/2022-containerd.txt
@@ -5,0 +6 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.33.20/windows/amd64/azure-acr-credential-provider_1.33.20-1_amd64.zip
@@ -6,0 +8 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.34.16/windows/amd64/azure-acr-credential-provider_1.34.16-1_amd64.zip
@@ -7,0 +10,3 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.35.11/windows/amd64/azure-acr-credential-provider_1.35.11-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.36.8/windows/amd64/azure-acr-credential-provider_1.36.8-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.37.1/windows/amd64/azure-acr-credential-provider_1.37.1-1_amd64.zip
@@ -12 +16,0 @@ c:\akse-cache\containerd\: https://packages.aks.azure.com/containerd/windows/v2.
-c:\akse-cache\credential-provider\: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz
@@ -140,0 +145 @@ Windows 2022-containerd package aks-secure-tls-bootstrap-client default: https:/
+Windows 2022-containerd package azure-acr-credential-provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.31.9/binaries/azure-acr-credential-provider-windows-amd64-v1.31.9.tar.gz
@@ -147 +151,0 @@ Windows 2022-containerd package windows credential provider dalec default: https
-Windows 2022-containerd package windows credential provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz
diff --git a/vhd_files/2025-gen2-tl.txt b/vhd_files/2025-gen2-tl.txt
index ace02d5..4ee4ce7 100644
--- a/vhd_files/2025-gen2-tl.txt
+++ b/vhd_files/2025-gen2-tl.txt
@@ -5,0 +6 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.33.20/windows/amd64/azure-acr-credential-provider_1.33.20-1_amd64.zip
@@ -6,0 +8 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.34.16/windows/amd64/azure-acr-credential-provider_1.34.16-1_amd64.zip
@@ -7,0 +10,3 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.35.11/windows/amd64/azure-acr-credential-provider_1.35.11-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.36.8/windows/amd64/azure-acr-credential-provider_1.36.8-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.37.1/windows/amd64/azure-acr-credential-provider_1.37.1-1_amd64.zip
@@ -10 +14,0 @@ c:\akse-cache\containerd\: https://packages.aks.azure.com/containerd/windows/v2.
-c:\akse-cache\credential-provider\: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz
@@ -76,0 +81 @@ Windows 2025-gen2-tl package aks-secure-tls-bootstrap-client default: https://gi
+Windows 2025-gen2-tl package azure-acr-credential-provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.31.9/binaries/azure-acr-credential-provider-windows-amd64-v1.31.9.tar.gz
@@ -83 +87,0 @@ Windows 2025-gen2-tl package windows credential provider dalec default: https://
-Windows 2025-gen2-tl package windows credential provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz
diff --git a/vhd_files/2025-gen2.txt b/vhd_files/2025-gen2.txt
index 6db9c2b..e3c700c 100644
--- a/vhd_files/2025-gen2.txt
+++ b/vhd_files/2025-gen2.txt
@@ -5,0 +6 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.33.20/windows/amd64/azure-acr-credential-provider_1.33.20-1_amd64.zip
@@ -6,0 +8 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.34.16/windows/amd64/azure-acr-credential-provider_1.34.16-1_amd64.zip
@@ -7,0 +10,3 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.35.11/windows/amd64/azure-acr-credential-provider_1.35.11-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.36.8/windows/amd64/azure-acr-credential-provider_1.36.8-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.37.1/windows/amd64/azure-acr-credential-provider_1.37.1-1_amd64.zip
@@ -10 +14,0 @@ c:\akse-cache\containerd\: https://packages.aks.azure.com/containerd/windows/v2.
-c:\akse-cache\credential-provider\: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz
@@ -76,0 +81 @@ Windows 2025-gen2 package aks-secure-tls-bootstrap-client default: https://githu
+Windows 2025-gen2 package azure-acr-credential-provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.31.9/binaries/azure-acr-credential-provider-windows-amd64-v1.31.9.tar.gz
@@ -83 +87,0 @@ Windows 2025-gen2 package windows credential provider dalec default: https://pac
-Windows 2025-gen2 package windows credential provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz
diff --git a/vhd_files/2025.txt b/vhd_files/2025.txt
index fa47bf4..5c09e63 100644
--- a/vhd_files/2025.txt
+++ b/vhd_files/2025.txt
@@ -5,0 +6 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.33.20/windows/amd64/azure-acr-credential-provider_1.33.20-1_amd64.zip
@@ -6,0 +8 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.34.16/windows/amd64/azure-acr-credential-provider_1.34.16-1_amd64.zip
@@ -7,0 +10,3 @@ c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dal
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.35.11/windows/amd64/azure-acr-credential-provider_1.35.11-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.36.8/windows/amd64/azure-acr-credential-provider_1.36.8-1_amd64.zip
+c:\akse-cache\azure-acr-credential-provider\: https://packages.aks.azure.com/dalec-packages/azure-acr-credential-provider/1.37.1/windows/amd64/azure-acr-credential-provider_1.37.1-1_amd64.zip
@@ -10 +14,0 @@ c:\akse-cache\containerd\: https://packages.aks.azure.com/containerd/windows/v2.
-c:\akse-cache\credential-provider\: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz
@@ -76,0 +81 @@ Windows 2025 package aks-secure-tls-bootstrap-client default: https://github.com
+Windows 2025 package azure-acr-credential-provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.31.9/binaries/azure-acr-credential-provider-windows-amd64-v1.31.9.tar.gz
@@ -83 +87,0 @@ Windows 2025 package windows credential provider dalec default: https://packages
-Windows 2025 package windows credential provider default: https://packages.aks.azure.com/cloud-provider-azure/v1.30.15/binaries/azure-acr-credential-provider-windows-amd64-v1.30.15.tar.gz

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Health
test 0% ❌
windows 27% ❌
staging_cse_windows Package 1 68% ➖
debug 0% ❌
provisioningscripts 2% ❌
parts_windows Package 1 73% ➖
Summary 39% (1819 / 7001) ❌

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Health
shellspec spec 28% ❌
Summary 28% (4591 / 16082) ❌

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Independent Windows CSE/VHD release compatibility and registry authentication need human validation beyond the reported provider-selection logs.

1 open issue
2 resolved since last review

Review effort: Balanced

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

components This pull request updates cached components on Linux or Windows VHDs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants