@@ -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
}
@@ -387,6 +405,17 @@ func (cfg *Config) getAzureClientConfig(authorizer autorest.Authorizer, env *azu
387
405
}
388
406
}
389
407
408
+ // A proxy service is required to access resources for the managed system pool within automatic clusters.
409
+ if cfg .HostedResourceProxyURL != "" {
410
+ azClientConfig .ResourceManagerEndpoint = cfg .HostedResourceProxyURL
411
+ }
412
+
413
+ // Managed system pool resources are hosted under AKS internal tenant and subscription.
414
+ // it is different from the customer subscription where the cluster is created.
415
+ if cfg .HostedSubscriptionID != "" {
416
+ azClientConfig .SubscriptionID = cfg .HostedSubscriptionID
417
+ }
418
+
390
419
return azClientConfig
391
420
}
392
421
0 commit comments