feat(anc): gate check-hotfix on enable_provisioning_hotfix contract field#8717
Open
Devinwong wants to merge 1 commit into
Open
feat(anc): gate check-hotfix on enable_provisioning_hotfix contract field#8717Devinwong wants to merge 1 commit into
Devinwong wants to merge 1 commit into
Conversation
Contributor
|
The latest Buf updates on your PR. Results from workflow Buf CI / buf (pull_request).
|
2d4b37d to
59b7cef
Compare
59b7cef to
d80ae7d
Compare
Collaborator
Author
|
Acknowledged - no action needed. This is the automated Buf CI status, and it reports Build, Format, Lint, and Breaking all passing for the additive optional field |
This was referenced Jun 16, 2026
d80ae7d to
6854cfa
Compare
f842590 to
3ebabf0
Compare
…ield Replaces the env-delivery approach (systemd drop-in + cse_cmd.sh) with a single contract field. check-hotfix self-gates on the new AKSNodeConfig field enable_provisioning_hotfix (proto tag 45, optional bool); when it is not true the command no-ops with telemetry outcome=disabled and makes no apiserver call. Default-off, fail-open. Relaxes the ENABLE_PROVISIONING_HOTFIX env gate introduced in 2.1c so the wrapper calls check-hotfix unconditionally; gating now lives in the Go binary via the contract field as the single source of truth. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
6854cfa to
297282e
Compare
Contributor
Changes cached containers or packages on windows VHDsPlease 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.
diff --git a/vhd_files/2022-containerd-gen2.txt b/vhd_files/2022-containerd-gen2.txt
index 7039bac..c51a47f 100644
--- a/vhd_files/2022-containerd-gen2.txt
+++ b/vhd_files/2022-containerd-gen2.txt
@@ -122,0 +123 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.34.6-windows-hp
+mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.2-windows-hp
@@ -124 +124,0 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.3-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.4-windows-hp
diff --git a/vhd_files/2022-containerd.txt b/vhd_files/2022-containerd.txt
index 5915cf1..7312c49 100644
--- a/vhd_files/2022-containerd.txt
+++ b/vhd_files/2022-containerd.txt
@@ -122,0 +123 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.34.6-windows-hp
+mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.2-windows-hp
@@ -124 +124,0 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.3-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.4-windows-hp
diff --git a/vhd_files/2025-gen2.txt b/vhd_files/2025-gen2.txt
index 37d9326..36e3641 100644
--- a/vhd_files/2025-gen2.txt
+++ b/vhd_files/2025-gen2.txt
@@ -52,0 +53 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.34.6-windows-hp
+mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.2-windows-hp
@@ -54 +54,0 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.3-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.4-windows-hp
diff --git a/vhd_files/2025.txt b/vhd_files/2025.txt
index 5b08280..b8873d5 100644
--- a/vhd_files/2025.txt
+++ b/vhd_files/2025.txt
@@ -52,0 +53 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.34.6-windows-hp
+mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.2-windows-hp
@@ -54 +54,0 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.3-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes-csi/azurefile-csi:v1.35.4-windows-hp |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
2.1d - gate check-hotfix on the enable_provisioning_hotfix contract field
POC / M1 draft. AgentBaker / Node SIG side only.
This is the final layer of the provisioning-hotfix stack. It makes the AKSNodeConfig
contract field the single source of truth for whether
aks-node-controller check-hotfixdoes any work, and relaxes the env gate added in 2.1c.
What changed
bool enable_provisioning_hotfix = 45;toaksnodeconfig/v1/config.proto(next free tag aftercse_timeout = 44) and regeneratethe Go bindings.
check-hotfixreads the field at the very top ofcheckHotfix()viaApp.provisioningHotfixEnabled()(reads the node-config JSON that is already on disk andcalls
GetEnableProvisioningHotfix()). When the field is not true (false, unset, or theconfig cannot be read/parsed) it returns the new telemetry outcome
disabledand exits 0WITHOUT contacting the apiserver. Fail-open everywhere.
aks-node-controller-wrapper.shnow callscheck-hotfixUNCONDITIONALLY (still wrapped defensively so it can never block provisioning). The
Go binary self-gates on the contract field.
Supersedes the env-delivery approach
An earlier revision of this PR delivered the toggle as an env var via a
cse_cmd.shtemplate var plus a systemd drop-in (
Environment="ENABLE_PROVISIONING_HOTFIX=...") onaks-node-controller.service, mirroring the IMDS-restriction pattern. That approach wasdropped because:
check-hotfixalready parses the AKSNodeConfig (it reads the apiserver FQDN and bootstraptoken from it), so a real contract field is available to the binary with zero new plumbing -
no template var, no drop-in, no env var.
env/drop-in written during provisioning would only take effect on the NEXT boot. Reading the
contract field directly avoids that activation-timing problem - it works on the same boot
because the config JSON is on disk before the service starts.
This also means absvc sets ONE field (the contract bool), not an env var plus a field.
Relaxes the 2.1c env gate
This PR relaxes the
ENABLE_PROVISIONING_HOTFIXenv gate introduced in #8715 (2.1c); gatingnow lives in the Go binary via the
enable_provisioning_hotfixcontract field - single sourceof truth, so absvc sets ONE field, not an env var plus a field. The 2.1c env gate is
intentionally added-then-relaxed across the stack so each PR stays reviewable on its own.
Default-off and fail-open
When
enable_provisioning_hotfixis false or unset, behavior is byte-identical to before thisstack:
check-hotfixmakes no apiserver call and provisioning proceeds unchanged. Any read orparse error is treated as off. This preserves the 6-month VHD support window in both directions
(older VHD + newer config, and newer VHD + older binary are both safe).
Before / after
check-hotfixreturns outcome=disabled, no apiserver call, exit 0check-hotfixreads the kube-system hotfix-version ConfigMap and stages thepointer (existing 2.1b behavior)
Stack
The aks-rp region toggle that sets the field is in a different repo and is the only remaining
out-of-repo piece. With the field settable on a node, the on-node PoC e2e tests (fail-open and
multi-base) become runnable.
Tests
go test ./...inaks-node-controller: all check-hotfix tests pass, including new gatetests (disabled -> outcome=disabled and the injected fetcher is never called; enabled ->
fetch path runs). Pre-existing Windows-only failures (CRLF goldens, file locks, os-release
message text) are unrelated and also fail on the base branch.