Repository navigation
feat(aks-node-controller): support optional containerd image-pull settings - #9888
Conversation
|
The latest Buf updates on your PR. Results from workflow Buf CI / buf (pull_request).
|
Windows Unit Test Results 3 files 18 suites 55s ⏱️ Results for commit 7efa96c. ♻️ This comment has been updated with latest results. |
There was a problem hiding this comment.
🟡 Changes recommended
Explicit image-pull overrides are silently ignored on Ubuntu 24.04 NVIDIA_GB nodes that preserve their baked containerd configuration.
1 open issue
1 file not reviewed
aks-node-controller/pkg/gen/aksnodeconfig/v1/containerd_config.pb.go: Generated file
What changed in this PR
Adds optional containerd image-pull settings to aks-node-controller, preserving field presence so explicit false and zero-timeout values can be distinguished from omitted settings.
Changes:
- Extends the protobuf API and generated Go bindings with synchronization and progress-timeout options.
- Validates timeout values and renders supplied settings across containerd 1.x/2.x GPU and non-GPU templates.
- Adds validation, serialization, template, and command-generation tests.
| File | Description |
|---|---|
| aks-node-controller/proto/aksnodeconfig/v1/containerd_config.proto | Defines optional image-pull settings. |
| aks-node-controller/pkg/nodeconfigutils/validation.go | Validates timeout format and rejects negative durations. |
| aks-node-controller/pkg/nodeconfigutils/validation_test.go | Tests valid, invalid, and omitted timeouts. |
| aks-node-controller/pkg/nodeconfigutils/utils_test.go | Tests field presence through JSON and protobuf round trips. |
| aks-node-controller/pkg/gen/aksnodeconfig/v1/containerd_config.pb.go | Adds generated fields, getters, and descriptors. |
| aks-node-controller/parser/templates/containerd.toml.gtpl | Renders optional settings for containerd 1.x. |
| aks-node-controller/parser/templates/containerd_v2.toml.gtpl | Renders optional settings for containerd 2.x. |
| aks-node-controller/parser/templates/containerd_v2_no_GPU.toml.gtpl | Adds settings to the non-GPU containerd 2.x template. |
| aks-node-controller/parser/templates/containerd_no_GPU.toml.gtpl | Adds settings to the non-GPU containerd 1.x template. |
| aks-node-controller/parser/parser_test.go | Tests settings in generated provisioning payloads. |
| aks-node-controller/parser/helper_test.go | Tests presence-aware rendering across template variants. |
Review effort: Balanced
|
There was a problem hiding this comment.
🔵 Needs a closer look
Supported-runtime compatibility and filesystem synchronization’s pull-mode and performance effects require human validation beyond the rendering and serialization tests.
No open issues 🎉
1 resolved since last review
1 file not reviewed
aks-node-controller/pkg/gen/aksnodeconfig/v1/containerd_config.pb.go: Generated file
Review effort: Balanced
|
LGTM too |

What this PR does / why we need it:
Adds ANC contract and rendering support for two customer-provided containerd
settings in the BootStrapUserData :
imagePullWithSyncFsimagePullProgressTimeoutAKS RP can map validated customer input into
Configuration.ContainerdConfigand send it to ANC through the existing bootstrap configuration flow.
regenerate the Go bindings.
the timeout; explicitly empty or malformed values are rejected.
(1.x/2.x, GPU/non-GPU).
template placement, and delivery through existing configuration variables.
When the new fields are omitted, existing rendered configuration is unchanged.
Explicit
falseis preserved.No changes to provisioning scripts, service lifecycle, parser flow, or dependencies.
This applies only when existing provisioning generates containerd configuration.PIS-cached nodes that skip
basePrepand preserved NVIDIA configurations are excluded. Containerd configuration is generated during basePrep, not nodePrep. For PIS, settings applied during preparation can be baked into the image, but settings supplied only during subsequent VM provisioning are not applied. The current legacy PIS delivery path is also outside this ANC-only change.Enabling
imagePullWithSyncFscan select local image-pull mode on containerdreleases using Transfer Service pulls, potentially affecting performance.
Which issue(s) this PR fixes:
Fixes #