@@ -65,6 +65,15 @@ type Config struct {
65
65
// It can override the default public ARM endpoint for VMs pool scale operations.
66
66
ARMBaseURLForAPClient string `json:"armBaseURLForAPClient" yaml:"armBaseURLForAPClient"`
67
67
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
+
68
77
// AuthMethod determines how to authorize requests for the Azure
69
78
// cloud. Valid options are "principal" (= the traditional
70
79
// service principle approach) and "cli" (= load az command line
@@ -223,6 +232,15 @@ func BuildAzureConfig(configReader io.Reader) (*Config, error) {
223
232
if _ , err = assignFromEnvIfExists (& cfg .SubscriptionID , "ARM_SUBSCRIPTION_ID" ); err != nil {
224
233
return nil , err
225
234
}
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
+ }
226
244
if _ , err = assignBoolFromEnvIfExists (& cfg .UseManagedIdentityExtension , "ARM_USE_MANAGED_IDENTITY_EXTENSION" ); err != nil {
227
245
return nil , err
228
246
}
@@ -380,6 +398,17 @@ func (cfg *Config) getAzureClientConfig(authorizer autorest.Authorizer, env *azu
380
398
}
381
399
}
382
400
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
+
383
412
if cfg .HasExtendedLocation () {
384
413
azClientConfig .ExtendedLocation = & azclients.ExtendedLocation {
385
414
Name : cfg .ExtendedLocationName ,
0 commit comments