diff --git a/pkg/azureclients/azure_client_config.go b/pkg/azureclients/azure_client_config.go index 3ed1209b74..cfead263a3 100644 --- a/pkg/azureclients/azure_client_config.go +++ b/pkg/azureclients/azure_client_config.go @@ -33,6 +33,7 @@ type ClientConfig struct { RateLimitConfig *RateLimitConfig Backoff *retry.Backoff UserAgent string + DisableAzureStackCloud bool } // WithRateLimiter returns a new ClientConfig with rateLimitConfig set. diff --git a/pkg/azureclients/diskclient/azure_diskclient.go b/pkg/azureclients/diskclient/azure_diskclient.go index 7e2e02479d..87d9462897 100644 --- a/pkg/azureclients/diskclient/azure_diskclient.go +++ b/pkg/azureclients/diskclient/azure_diskclient.go @@ -59,7 +59,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/interfaceclient/azure_interfaceclient.go b/pkg/azureclients/interfaceclient/azure_interfaceclient.go index 727bedd268..b656253fe9 100644 --- a/pkg/azureclients/interfaceclient/azure_interfaceclient.go +++ b/pkg/azureclients/interfaceclient/azure_interfaceclient.go @@ -41,9 +41,10 @@ var _ Interface = &Client{} // Client implements network interface client. type Client struct { - armClient armclient.Interface - subscriptionID string - cloudName string + armClient armclient.Interface + subscriptionID string + cloudName string + disableAzureStackCloud bool // Rate limiting configures. rateLimiterReader flowcontrol.RateLimiter @@ -59,7 +60,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) @@ -73,11 +74,12 @@ func New(config *azclients.ClientConfig) *Client { config.RateLimitConfig.CloudProviderRateLimitBucketWrite) client := &Client{ - armClient: armClient, - rateLimiterReader: rateLimiterReader, - rateLimiterWriter: rateLimiterWriter, - subscriptionID: config.SubscriptionID, - cloudName: config.CloudName, + armClient: armClient, + rateLimiterReader: rateLimiterReader, + rateLimiterWriter: rateLimiterWriter, + subscriptionID: config.SubscriptionID, + cloudName: config.CloudName, + disableAzureStackCloud: config.DisableAzureStackCloud, } return client @@ -187,7 +189,7 @@ func (c *Client) getVMSSNetworkInterface(ctx context.Context, resourceGroupName result := network.Interface{} computeAPIVersion := ComputeAPIVersion - if strings.EqualFold(c.cloudName, AzureStackCloudName) { + if strings.EqualFold(c.cloudName, AzureStackCloudName) && !c.disableAzureStackCloud { computeAPIVersion = AzureStackComputeAPIVersion } queryParameters := map[string]interface{}{ diff --git a/pkg/azureclients/loadbalancerclient/azure_loadbalancerclient.go b/pkg/azureclients/loadbalancerclient/azure_loadbalancerclient.go index 3e21ac10ff..239a24f51a 100644 --- a/pkg/azureclients/loadbalancerclient/azure_loadbalancerclient.go +++ b/pkg/azureclients/loadbalancerclient/azure_loadbalancerclient.go @@ -59,7 +59,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/publicipclient/azure_publicipclient.go b/pkg/azureclients/publicipclient/azure_publicipclient.go index ef0ba99bde..9b63bf7b97 100644 --- a/pkg/azureclients/publicipclient/azure_publicipclient.go +++ b/pkg/azureclients/publicipclient/azure_publicipclient.go @@ -41,9 +41,10 @@ var _ Interface = &Client{} // Client implements PublicIPAddress client Interface. type Client struct { - armClient armclient.Interface - subscriptionID string - cloudName string + armClient armclient.Interface + subscriptionID string + cloudName string + disableAzureStackCloud bool // Rate limiting configures. rateLimiterReader flowcontrol.RateLimiter @@ -59,7 +60,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) @@ -73,11 +74,12 @@ func New(config *azclients.ClientConfig) *Client { config.RateLimitConfig.CloudProviderRateLimitBucketWrite) client := &Client{ - armClient: armClient, - rateLimiterReader: rateLimiterReader, - rateLimiterWriter: rateLimiterWriter, - subscriptionID: config.SubscriptionID, - cloudName: config.CloudName, + armClient: armClient, + rateLimiterReader: rateLimiterReader, + rateLimiterWriter: rateLimiterWriter, + subscriptionID: config.SubscriptionID, + cloudName: config.CloudName, + disableAzureStackCloud: config.DisableAzureStackCloud, } return client @@ -189,7 +191,7 @@ func (c *Client) getVMSSPublicIPAddress(ctx context.Context, resourceGroupName s result := network.PublicIPAddress{} computeAPIVersion := ComputeAPIVersion - if strings.EqualFold(c.cloudName, AzureStackCloudName) { + if strings.EqualFold(c.cloudName, AzureStackCloudName) && !c.disableAzureStackCloud { computeAPIVersion = AzureStackComputeAPIVersion } queryParameters := map[string]interface{}{ diff --git a/pkg/azureclients/routeclient/azure_routeclient.go b/pkg/azureclients/routeclient/azure_routeclient.go index 6e327fec1e..7b095a4e96 100644 --- a/pkg/azureclients/routeclient/azure_routeclient.go +++ b/pkg/azureclients/routeclient/azure_routeclient.go @@ -57,7 +57,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/routetableclient/azure_routetableclient.go b/pkg/azureclients/routetableclient/azure_routetableclient.go index f295e7581d..6662f35f25 100644 --- a/pkg/azureclients/routetableclient/azure_routetableclient.go +++ b/pkg/azureclients/routetableclient/azure_routetableclient.go @@ -57,7 +57,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/securitygroupclient/azure_securitygroupclient.go b/pkg/azureclients/securitygroupclient/azure_securitygroupclient.go index d230f319d9..1cf11b7bfb 100644 --- a/pkg/azureclients/securitygroupclient/azure_securitygroupclient.go +++ b/pkg/azureclients/securitygroupclient/azure_securitygroupclient.go @@ -59,7 +59,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/snapshotclient/azure_snapshotclient.go b/pkg/azureclients/snapshotclient/azure_snapshotclient.go index 95c55d45e4..8d0fc9eae1 100644 --- a/pkg/azureclients/snapshotclient/azure_snapshotclient.go +++ b/pkg/azureclients/snapshotclient/azure_snapshotclient.go @@ -59,7 +59,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/storageaccountclient/azure_storageaccountclient.go b/pkg/azureclients/storageaccountclient/azure_storageaccountclient.go index 549ba0d3a0..73ab5988db 100644 --- a/pkg/azureclients/storageaccountclient/azure_storageaccountclient.go +++ b/pkg/azureclients/storageaccountclient/azure_storageaccountclient.go @@ -59,7 +59,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/subnetclient/azure_subnetclient.go b/pkg/azureclients/subnetclient/azure_subnetclient.go index 518c9df7fa..3e746fcec7 100644 --- a/pkg/azureclients/subnetclient/azure_subnetclient.go +++ b/pkg/azureclients/subnetclient/azure_subnetclient.go @@ -58,7 +58,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/vmclient/azure_vmclient.go b/pkg/azureclients/vmclient/azure_vmclient.go index b92fa502ed..afc4bc7fdd 100644 --- a/pkg/azureclients/vmclient/azure_vmclient.go +++ b/pkg/azureclients/vmclient/azure_vmclient.go @@ -59,7 +59,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/vmsizeclient/azure_vmsizeclient.go b/pkg/azureclients/vmsizeclient/azure_vmsizeclient.go index 7507569f22..9ab3c2c4dd 100644 --- a/pkg/azureclients/vmsizeclient/azure_vmsizeclient.go +++ b/pkg/azureclients/vmsizeclient/azure_vmsizeclient.go @@ -58,7 +58,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/vmssclient/azure_vmssclient.go b/pkg/azureclients/vmssclient/azure_vmssclient.go index e2150f8b16..3a05705499 100644 --- a/pkg/azureclients/vmssclient/azure_vmssclient.go +++ b/pkg/azureclients/vmssclient/azure_vmssclient.go @@ -59,7 +59,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/azureclients/vmssvmclient/azure_vmssvmclient.go b/pkg/azureclients/vmssvmclient/azure_vmssvmclient.go index a761148d70..2078fd0047 100644 --- a/pkg/azureclients/vmssvmclient/azure_vmssvmclient.go +++ b/pkg/azureclients/vmssvmclient/azure_vmssvmclient.go @@ -60,7 +60,7 @@ func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer apiVersion := APIVersion - if strings.EqualFold(config.CloudName, AzureStackCloudName) { + if strings.EqualFold(config.CloudName, AzureStackCloudName) && !config.DisableAzureStackCloud { apiVersion = AzureStackCloudAPIVersion } armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) diff --git a/pkg/provider/azure.go b/pkg/provider/azure.go index 4b3bd278da..11725a7c30 100644 --- a/pkg/provider/azure.go +++ b/pkg/provider/azure.go @@ -239,6 +239,11 @@ type Config struct { // DisableAvailabilitySetNodes disables VMAS nodes support when "VMType" is set to "vmss". DisableAvailabilitySetNodes bool `json:"disableAvailabilitySetNodes,omitempty" yaml:"disableAvailabilitySetNodes,omitempty"` + // DisableAzureStackCloud disables AzureStackCloud support. It should be used + // when setting AzureAuthConfig.Cloud with "AZURESTACKCLOUD" to customize ARM endpoints + // while the cluster is not running on AzureStack. + DisableAzureStackCloud bool `json:"disableAzureStackCloud,omitempty" yaml:"disableAzureStackCloud,omitempty"` + // Tags determines what tags shall be applied to the shared resources managed by controller manager, which // includes load balancer, security group and route table. The supported format is `a=b,c=d,...`. After updated // this config, the old tags would be replaced by the new ones. @@ -643,6 +648,7 @@ func (az *Cloud) getAzureClientConfig(servicePrincipalToken *adal.ServicePrincip ResourceManagerEndpoint: az.Environment.ResourceManagerEndpoint, Authorizer: autorest.NewBearerAuthorizer(servicePrincipalToken), Backoff: &retry.Backoff{Steps: 1}, + DisableAzureStackCloud: az.Config.DisableAzureStackCloud, } if az.Config.CloudProviderBackoff { diff --git a/pkg/provider/azure_controller_standard.go b/pkg/provider/azure_controller_standard.go index ce3a9555f9..6e2cee2e3e 100644 --- a/pkg/provider/azure_controller_standard.go +++ b/pkg/provider/azure_controller_standard.go @@ -157,7 +157,7 @@ func (as *availabilitySet) DetachDisk(nodeName types.NodeName, diskMap map[strin (disk.ManagedDisk != nil && diskURI != "" && strings.EqualFold(*disk.ManagedDisk.ID, diskURI)) { // found the disk klog.V(2).Infof("azureDisk - detach disk: name %q uri %q", diskName, diskURI) - if strings.EqualFold(as.cloud.Environment.Name, AzureStackCloudName) { + if strings.EqualFold(as.cloud.Environment.Name, AzureStackCloudName) && !as.Config.DisableAzureStackCloud { disks = append(disks[:i], disks[i+1:]...) } else { disks[i].ToBeDetached = to.BoolPtr(true) diff --git a/pkg/provider/azure_controller_vmss.go b/pkg/provider/azure_controller_vmss.go index 2609198f8d..449f7dafe4 100644 --- a/pkg/provider/azure_controller_vmss.go +++ b/pkg/provider/azure_controller_vmss.go @@ -161,7 +161,7 @@ func (ss *scaleSet) DetachDisk(nodeName types.NodeName, diskMap map[string]strin (disk.ManagedDisk != nil && diskURI != "" && strings.EqualFold(*disk.ManagedDisk.ID, diskURI)) { // found the disk klog.V(2).Infof("azureDisk - detach disk: name %q uri %q", diskName, diskURI) - if strings.EqualFold(ss.cloud.Environment.Name, AzureStackCloudName) { + if strings.EqualFold(ss.cloud.Environment.Name, AzureStackCloudName) && !ss.Config.DisableAzureStackCloud { disks = append(disks[:i], disks[i+1:]...) } else { disks[i].ToBeDetached = to.BoolPtr(true)