BR: support Azure blob storage sas token (#5720) #5724
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an automated cherry-pick of #5720
What problem does this PR solve?
Previously, tidb-operator only supports access key and AAD authentication for Azure blob storage. The SAS (Shared Access Signature) token is also commonly used, especially for cross Azure tenant scenario. The BR kernel already supports SAS token authentication. This PR adds SAS token support in tidb-operator.
On Azure, the storage account is a namespace for Azure storage. In this respect, it's similar to S3 and GCS bucket. Though Azure blob storage has another hierarchy
container
. So the storage account should also be in theBackup
CR spec. The BR kernel should also re-organize the storage account as normal argument.What is changed and how does it work?
I add two new fields (
StorageAccount
,SasToken
) inAzblobStorageProvider
and concatenate the br command arguments with these two new fields. Now the authentication for Azure is as follows:Backup.Spec.StorageProvider.Azblob.SasToken
is specified, then use SAS token authenticationBackup.Spec.StorageProvider.Azblob.StorageAccount
is specified, then use this to set backup-manager pod env. Otherwise get storage account from secret as before.Code changes
Tests
I've tested this PR manually in local kind environment with Azure blob storage SAS token. The backup job finished successfully. The storage account and sas token are all set in
Backup
CR spec without specifyingspec.azblob.secretName
I've also tested backup via access key with following two cases:
AZURE_STORAGE_KEY
and specifying the storage account in thespec.azblob.storageAccount
AZURE_STORAGE_KEY
andAZURE_STORAGE_ACCOUNT
in secret, but not specifyingspec.azblob.storageAccount
Both cases succeeded as expected.
Side effects
Related changes
Release Notes
Please refer to Release Notes Language Style Guide before writing the release note.