@@ -120,6 +120,7 @@ Supported options are:
120
120
121
121
- [Generic](#generic)
122
122
- [AWS](#aws)
123
+ - [Azure](#azure)
123
124
- [GCP](#gcp)
124
125
125
126
If you do not specify `.spec.provider`, it defaults to `generic`.
@@ -260,6 +261,171 @@ data:
260
261
secretkey: <BASE64>
261
262
` ` `
262
263
264
+ # ### Azure
265
+
266
+ When a Bucket's `.spec.provider` is set to `azure`, the source-controller will
267
+ attempt to communicate with the specified [Endpoint](#endpoint) using the
268
+ [Azure Blob Storage SDK for Go](https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/storage/azblob).
269
+
270
+ Without a [Secret reference](#secret-reference), authentication using a chain
271
+ with :
272
+
273
+ - [Environment credentials](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#EnvironmentCredential)
274
+ - [Managed Identity](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ManagedIdentityCredential)
275
+ with the `AZURE_CLIENT_ID`
276
+ - Managed Identity with a system-assigned identity
277
+
278
+ is attempted by default. If no chain can be established, the bucket
279
+ is assumed to be publicly reachable.
280
+
281
+ When a reference is specified, it expects a Secret with one of the following
282
+ sets of `.data` fields :
283
+
284
+ - ` tenantId` , `clientId` and `clientSecret` for authenticating a Service
285
+ Principal with a secret.
286
+ - ` tenantId` , `clientId` and `clientCertificate` (plus optionally
287
+ ` clientCertificatePassword` and/or `clientCertificateSendChain`) for
288
+ authenticating a Service Principal with a certificate.
289
+ - ` clientId` for authenticating using a Managed Identity.
290
+ - ` accountKey` for authenticating using a
291
+ [Shared Key](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob#SharedKeyCredential).
292
+
293
+ For any Managed Identity and/or Azure Active Directory authentication method,
294
+ the base URL can be configured using `.data.authorityHost`. If not supplied,
295
+ [`AzurePublicCloud` is assumed](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#AuthorityHost).
296
+
297
+ # #### Azure example
298
+
299
+ ` ` ` yaml
300
+ ---
301
+ apiVersion: source.toolkit.fluxcd.io/v1beta2
302
+ kind: Bucket
303
+ metadata:
304
+ name: azure-public
305
+ namespace: default
306
+ spec:
307
+ interval: 5m0s
308
+ provider: azure
309
+ bucketName: podinfo
310
+ endpoint: https://podinfoaccount.blob.core.windows.net
311
+ timeout: 30s
312
+ ` ` `
313
+
314
+ # #### Azure Service Principal Secret example
315
+
316
+ ` ` ` yaml
317
+ ---
318
+ apiVersion: source.toolkit.fluxcd.io/v1beta2
319
+ kind: Bucket
320
+ metadata:
321
+ name: azure-service-principal-secret
322
+ namespace: default
323
+ spec:
324
+ interval: 5m0s
325
+ provider: azure
326
+ bucketName: <bucket-name>
327
+ endpoint: https://<account-name>.blob.core.windows.net
328
+ secretRef:
329
+ name: azure-sp-auth
330
+ ---
331
+ apiVersion: v1
332
+ kind: Secret
333
+ metadata:
334
+ name: azure-sp-auth
335
+ namespace: default
336
+ type: Opaque
337
+ data:
338
+ tenantId: <BASE64>
339
+ clientId: <BASE64>
340
+ clientSecret: <BASE64>
341
+ ` ` `
342
+
343
+ # #### Azure Service Principal Certificate example
344
+
345
+ ` ` ` yaml
346
+ ---
347
+ apiVersion: source.toolkit.fluxcd.io/v1beta2
348
+ kind: Bucket
349
+ metadata:
350
+ name: azure-service-principal-cert
351
+ namespace: default
352
+ spec:
353
+ interval: 5m0s
354
+ provider: azure
355
+ bucketName: <bucket-name>
356
+ endpoint: https://<account-name>.blob.core.windows.net
357
+ secretRef:
358
+ name: azure-sp-auth
359
+ ---
360
+ apiVersion: v1
361
+ kind: Secret
362
+ metadata:
363
+ name: azure-sp-auth
364
+ namespace: default
365
+ type: Opaque
366
+ data:
367
+ tenantId: <BASE64>
368
+ clientId: <BASE64>
369
+ clientCertificate: <BASE64>
370
+ # Plus optionally
371
+ clientCertificatePassword: <BASE64>
372
+ clientCertificateSendChain: <BASE64> # either "1" or "true"
373
+ ` ` `
374
+
375
+ # #### Azure Managed Identity with Client ID example
376
+
377
+ ` ` ` yaml
378
+ ---
379
+ apiVersion: source.toolkit.fluxcd.io/v1beta2
380
+ kind: Bucket
381
+ metadata:
382
+ name: azure-managed-identity
383
+ namespace: default
384
+ spec:
385
+ interval: 5m0s
386
+ provider: azure
387
+ bucketName: <bucket-name>
388
+ endpoint: https://<account-name>.blob.core.windows.net
389
+ secretRef:
390
+ name: azure-smi-auth
391
+ ---
392
+ apiVersion: v1
393
+ kind: Secret
394
+ metadata:
395
+ name: azure-smi-auth
396
+ namespace: default
397
+ type: Opaque
398
+ data:
399
+ clientId: <BASE64>
400
+ ` ` `
401
+
402
+ # #### Azure Blob Shared Key example
403
+
404
+ ` ` ` yaml
405
+ ---
406
+ apiVersion: source.toolkit.fluxcd.io/v1beta2
407
+ kind: Bucket
408
+ metadata:
409
+ name: azure-shared-key
410
+ namespace: default
411
+ spec:
412
+ interval: 5m0s
413
+ provider: azure
414
+ bucketName: <bucket-name>
415
+ endpoint: https://<account-name>.blob.core.windows.net
416
+ secretRef:
417
+ name: azure-key
418
+ ---
419
+ apiVersion: v1
420
+ kind: Secret
421
+ metadata:
422
+ name: azure-key
423
+ namespace: default
424
+ type: Opaque
425
+ data:
426
+ accountKey: <BASE64>
427
+ ` ` `
428
+
263
429
# ### GCP
264
430
265
431
When a Bucket's `.spec.provider` is set to `gcp`, the source-controller will
@@ -281,7 +447,7 @@ The Provider allows for specifying the
281
447
282
448
` ` ` yaml
283
449
---
284
- apiVersion: source.toolkit.fluccd .io/v1beta2
450
+ apiVersion: source.toolkit.fluxcd .io/v1beta2
285
451
kind: Bucket
286
452
metadata:
287
453
name: gcp-workload-identity
@@ -299,7 +465,7 @@ spec:
299
465
300
466
` ` ` yaml
301
467
---
302
- apiVersion: source.toolkit.fluccd .io/v1beta1
468
+ apiVersion: source.toolkit.fluxcd .io/v1beta2
303
469
kind: Bucket
304
470
metadata:
305
471
name: gcp-secret
0 commit comments