@@ -65,6 +65,15 @@ type Config struct {
6565 // It can override the default public ARM endpoint for VMs pool scale operations.
6666 ARMBaseURLForAPClient string `json:"armBaseURLForAPClient" yaml:"armBaseURLForAPClient"`
6767
68+ // Hosted (on-behalf-of) system pool configuration for automatic cluster.
69+ // HostedSubscriptionID is the subscription ID of the hosted resources under AKS internal tenant.
70+ HostedSubscriptionID string `json:"hostedSubscriptionID" yaml:"hostedSubscriptionID"`
71+ // HostedResourceGroup is the resource group of the hosted resources under AKS internal tenant.
72+ HostedResourceGroup string `json:"hostedResourceGroup" yaml:"hostedResourceGroup"`
73+ // HostedResourceProxyURL is the URL to use for retrieving hosted resources under AKS internal tenant.
74+ // It can override the default public ARM endpoint for operations like VM/SKU GET.
75+ HostedResourceProxyURL string `json:"hostedResourceProxyURL" yaml:"hostedResourceProxyURL"`
76+
6877 // AuthMethod determines how to authorize requests for the Azure
6978 // cloud. Valid options are "principal" (= the traditional
7079 // service principle approach) and "cli" (= load az command line
@@ -223,6 +232,15 @@ func BuildAzureConfig(configReader io.Reader) (*Config, error) {
223232 if _ , err = assignFromEnvIfExists (& cfg .SubscriptionID , "ARM_SUBSCRIPTION_ID" ); err != nil {
224233 return nil , err
225234 }
235+ if _ , err = assignFromEnvIfExists (& cfg .HostedResourceProxyURL , "HOSTED_RESOURCE_PROXY_URL" ); err != nil {
236+ return nil , err
237+ }
238+ if _ , err = assignFromEnvIfExists (& cfg .HostedSubscriptionID , "HOSTED_SUBSCRIPTION_ID" ); err != nil {
239+ return nil , err
240+ }
241+ if _ , err = assignFromEnvIfExists (& cfg .HostedResourceGroup , "HOSTED_RESOURCE_GROUP" ); err != nil {
242+ return nil , err
243+ }
226244 if _ , err = assignBoolFromEnvIfExists (& cfg .UseManagedIdentityExtension , "ARM_USE_MANAGED_IDENTITY_EXTENSION" ); err != nil {
227245 return nil , err
228246 }
@@ -380,6 +398,17 @@ func (cfg *Config) getAzureClientConfig(authorizer autorest.Authorizer, env *azu
380398 }
381399 }
382400
401+ // A proxy service is required to access resources for the Hosted (on-behalf-of) system pool within automatic clusters.
402+ if cfg .HostedResourceProxyURL != "" {
403+ azClientConfig .ResourceManagerEndpoint = cfg .HostedResourceProxyURL
404+ }
405+
406+ // Hosted (on-behalf-of) system pool resources are hosted under AKS internal tenant and subscription.
407+ // it is different from the customer subscription where the cluster is created.
408+ if cfg .HostedSubscriptionID != "" {
409+ azClientConfig .SubscriptionID = cfg .HostedSubscriptionID
410+ }
411+
383412 if cfg .HasExtendedLocation () {
384413 azClientConfig .ExtendedLocation = & azclients.ExtendedLocation {
385414 Name : cfg .ExtendedLocationName ,
0 commit comments