feat: add ImagePullIdentityProfile for identity binding-based image pull #7596
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.
What type of PR is this?
/kind feature
What this PR does / why we need it:
This PR adds support for identity binding-based image pull authentication from Azure Container Registry (ACR), implementing KEP-4412 projected service account tokens for kubelet image credential providers.
Changes
Data Model
Added
ImagePullIdentityProfiletoSecurityProfilewith fields:Enabled: Enable/disable identity bindingDefaultClientID: Default managed identity client IDDefaultTenantID: Default managed identity tenant IDLocalAuthoritySNI: SNI endpoint for Identity Bindings Local AuthorityAdded getter methods to
SecurityProfilefor null-safe access.Implementation Paths
1. Legacy CSE (Template-based)
pkg/agent/variables.go: Template variables for CSE scriptsparts/linux/cloud-init/artifacts/cse_cmd.sh: Environment variable declarationsparts/linux/cloud-init/artifacts/cse_config.sh: Credential provider config generation2. AKSNodeConfig (Proto-based)
aks-node-controller/proto/aksnodeconfig/v1/security_profile.proto: Proto definitionsaks-node-controller/parser/parser.go: Environment variable generationaks-node-controller/parser/helper.go: Null-safe helper functionsBoth paths converge at
cse_config.shto generate/var/lib/kubelet/credential-provider-config.yamlwith identity binding arguments (--ib-default-client-id,--ib-default-tenant-id,--ib-sni-name) and token attributes.Testing
All tests validate credential provider config file contains correct identity binding configuration.
Cluster Support
Which issue(s) this PR fixes:
Fixes #
Requirements:
Special notes for your reviewer:
Dual implementation approach (legacy CSE + modern AKSNodeConfig) for backward compatibility. Both paths fully tested and generate identical credential provider configuration.
Release note: