@@ -21,20 +21,19 @@ import (
21
21
"os"
22
22
"strings"
23
23
24
- kv "github.com/Azure/azure-sdk-for-go/services/keyvault/2016-10-01/keyvault"
25
- "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
24
+ "github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
25
+ network "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6"
26
+ "github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets"
26
27
"github.com/Azure/azure-sdk-for-go/storage"
27
- "github.com/Azure/go-autorest/autorest"
28
28
azure2 "github.com/Azure/go-autorest/autorest/azure"
29
29
"golang.org/x/net/context"
30
30
"k8s.io/client-go/kubernetes"
31
31
"k8s.io/klog/v2"
32
32
"k8s.io/utils/ptr"
33
+ "sigs.k8s.io/cloud-provider-azure/pkg/azclient"
33
34
"sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader"
34
35
azcache "sigs.k8s.io/cloud-provider-azure/pkg/cache"
35
36
azure "sigs.k8s.io/cloud-provider-azure/pkg/provider"
36
- providerconfig "sigs.k8s.io/cloud-provider-azure/pkg/provider/config"
37
- "sigs.k8s.io/cloud-provider-azure/pkg/retry"
38
37
)
39
38
40
39
var (
@@ -147,46 +146,28 @@ func GetCloudProvider(ctx context.Context, kubeClient kubernetes.Interface, node
147
146
148
147
// getKeyVaultSecretContent get content of the keyvault secret
149
148
func (d * Driver ) getKeyVaultSecretContent (ctx context.Context , vaultURL string , secretName string , secretVersion string ) (content string , err error ) {
150
- kvClient , err := d .initializeKvClient ()
149
+ var authProvider * azclient.AuthProvider
150
+ authProvider , err = azclient .NewAuthProvider (& d .cloud .AzureAuthConfig .ARMClientConfig , & d .cloud .AzureAuthConfig .AzureAuthConfig )
151
+ if err != nil {
152
+ return "" , err
153
+ }
154
+ kvClient , err := azsecrets .NewClient (vaultURL , authProvider .GetAzIdentity (), nil )
151
155
if err != nil {
152
156
return "" , fmt .Errorf ("failed to get keyvaultClient: %w" , err )
153
157
}
154
158
155
159
klog .V (2 ).Infof ("get secret from vaultURL(%v), sercretName(%v), secretVersion(%v)" , vaultURL , secretName , secretVersion )
156
- secret , err := kvClient .GetSecret (ctx , vaultURL , secretName , secretVersion )
160
+ secret , err := kvClient .GetSecret (ctx , secretName , secretVersion , nil )
157
161
if err != nil {
158
162
return "" , fmt .Errorf ("get secret from vaultURL(%v), sercretName(%v), secretVersion(%v) failed with error: %w" , vaultURL , secretName , secretVersion , err )
159
163
}
160
164
return * secret .Value , nil
161
165
}
162
166
163
- func (d * Driver ) initializeKvClient () (* kv.BaseClient , error ) {
164
- kvClient := kv .New ()
165
- token , err := d .getKeyvaultToken ()
166
- if err != nil {
167
- return nil , err
168
- }
169
-
170
- kvClient .Authorizer = token
171
- return & kvClient , nil
172
- }
173
-
174
- // getKeyvaultToken retrieves a new service principal token to access keyvault
175
- func (d * Driver ) getKeyvaultToken () (authorizer autorest.Authorizer , err error ) {
176
- env := d .getCloudEnvironment ()
177
- kvEndPoint := strings .TrimSuffix (env .KeyVaultEndpoint , "/" )
178
- servicePrincipalToken , err := providerconfig .GetServicePrincipalToken (& d .cloud .AzureAuthConfig , & env , kvEndPoint )
179
- if err != nil {
180
- return nil , err
181
- }
182
- authorizer = autorest .NewBearerAuthorizer (servicePrincipalToken )
183
- return authorizer , nil
184
- }
185
-
186
167
func (d * Driver ) updateSubnetServiceEndpoints (ctx context.Context , vnetResourceGroup , vnetName , subnetName string ) ([]string , error ) {
187
168
var vnetResourceIDs []string
188
- if d .cloud . SubnetsClient == nil {
189
- return vnetResourceIDs , fmt .Errorf ("SubnetsClient is nil" )
169
+ if d .networkClientFactory == nil {
170
+ return vnetResourceIDs , fmt .Errorf ("networkClientFactory is nil" )
190
171
}
191
172
192
173
if vnetResourceGroup == "" {
@@ -220,21 +201,21 @@ func (d *Driver) updateSubnetServiceEndpoints(ctx context.Context, vnetResourceG
220
201
d .subnetLockMap .LockEntry (lockKey )
221
202
defer d .subnetLockMap .UnlockEntry (lockKey )
222
203
223
- var subnets []network.Subnet
204
+ var subnets []* network.Subnet
224
205
if subnetName != "" {
225
206
// list multiple subnets separated by comma
226
207
subnetNames := strings .Split (subnetName , "," )
227
208
for _ , sn := range subnetNames {
228
209
sn = strings .TrimSpace (sn )
229
- subnet , rerr := d .cloud . SubnetsClient .Get (ctx , vnetResourceGroup , vnetName , sn , "" )
210
+ subnet , rerr := d .networkClientFactory . GetSubnetClient () .Get (ctx , vnetResourceGroup , vnetName , sn , nil )
230
211
if rerr != nil {
231
212
return vnetResourceIDs , fmt .Errorf ("failed to get the subnet %s under rg %s vnet %s: %v" , subnetName , vnetResourceGroup , vnetName , rerr .Error ())
232
213
}
233
214
subnets = append (subnets , subnet )
234
215
}
235
216
} else {
236
- var rerr * retry. Error
237
- subnets , rerr = d .cloud . SubnetsClient .List (ctx , vnetResourceGroup , vnetName )
217
+ var rerr error
218
+ subnets , rerr = d .networkClientFactory . GetSubnetClient () .List (ctx , vnetResourceGroup , vnetName )
238
219
if rerr != nil {
239
220
return vnetResourceIDs , fmt .Errorf ("failed to list the subnets under rg %s vnet %s: %v" , vnetResourceGroup , vnetName , rerr .Error ())
240
221
}
@@ -249,19 +230,19 @@ func (d *Driver) updateSubnetServiceEndpoints(ctx context.Context, vnetResourceG
249
230
klog .V (2 ).Infof ("set vnetResourceID %s" , vnetResourceID )
250
231
vnetResourceIDs = append (vnetResourceIDs , vnetResourceID )
251
232
252
- endpointLocaions := []string {location }
253
- storageServiceEndpoint := network.ServiceEndpointPropertiesFormat {
233
+ endpointLocaions := []* string {to . Ptr ( location ) }
234
+ storageServiceEndpoint := & network.ServiceEndpointPropertiesFormat {
254
235
Service : & storageService ,
255
- Locations : & endpointLocaions ,
236
+ Locations : endpointLocaions ,
256
237
}
257
238
storageServiceExists := false
258
- if subnet .SubnetPropertiesFormat == nil {
259
- subnet .SubnetPropertiesFormat = & network.SubnetPropertiesFormat {}
239
+ if subnet .Properties == nil {
240
+ subnet .Properties = & network.SubnetPropertiesFormat {}
260
241
}
261
- if subnet .SubnetPropertiesFormat .ServiceEndpoints == nil {
262
- subnet .SubnetPropertiesFormat .ServiceEndpoints = & [] network.ServiceEndpointPropertiesFormat {}
242
+ if subnet .Properties .ServiceEndpoints == nil {
243
+ subnet .Properties .ServiceEndpoints = [] * network.ServiceEndpointPropertiesFormat {}
263
244
}
264
- serviceEndpoints := * subnet .SubnetPropertiesFormat .ServiceEndpoints
245
+ serviceEndpoints := subnet .Properties .ServiceEndpoints
265
246
for _ , v := range serviceEndpoints {
266
247
if strings .HasPrefix (ptr .Deref (v .Service , "" ), storageService ) {
267
248
storageServiceExists = true
@@ -272,10 +253,10 @@ func (d *Driver) updateSubnetServiceEndpoints(ctx context.Context, vnetResourceG
272
253
273
254
if ! storageServiceExists {
274
255
serviceEndpoints = append (serviceEndpoints , storageServiceEndpoint )
275
- subnet .SubnetPropertiesFormat .ServiceEndpoints = & serviceEndpoints
256
+ subnet .Properties .ServiceEndpoints = serviceEndpoints
276
257
277
258
klog .V (2 ).Infof ("begin to update the subnet %s under vnet %s in rg %s" , sn , vnetName , vnetResourceGroup )
278
- if err := d .cloud . SubnetsClient .CreateOrUpdate (ctx , vnetResourceGroup , vnetName , sn , subnet ); err != nil {
259
+ if _ , err := d .networkClientFactory . GetSubnetClient () .CreateOrUpdate (ctx , vnetResourceGroup , vnetName , sn , * subnet ); err != nil {
279
260
return vnetResourceIDs , fmt .Errorf ("failed to update the subnet %s under vnet %s: %v" , sn , vnetName , err )
280
261
}
281
262
}
0 commit comments