Pass configured BSL credential to plugin via config (#3442)

* Load credentials and pass to ObjectStorage plugins

Update NewObjectBackupStore to take a CredentialsGetter which can be
used to get the credentials for a BackupStorageLocation if it has been
configured with a Credential. If the BSL has a credential, use that
SecretKeySelector to fetch the secret, write the contents to a temp file
and then pass that file through to the plugin via the config map using
the key `credentialsFile`. This relies on the plugin being able to use
this new config field.

This does not yet handle VolumeSnapshotLocations or ResticRepositories.

Signed-off-by: Bridget McErlean <bmcerlean@vmware.com>

* Address code reviews

Add godocs and comments.
Improve formatting and test names.

Signed-off-by: Bridget McErlean <bmcerlean@vmware.com>

* Address code reviews

Signed-off-by: Bridget McErlean <bmcerlean@vmware.com>
This commit is contained in:
Bridget McErlean
2021-03-04 16:43:15 -05:00
committed by GitHub
parent c46fe71b12
commit b9a8c0b254
19 changed files with 433 additions and 64 deletions

View File

@@ -21,8 +21,6 @@ import (
"testing"
"time"
"github.com/vmware-tanzu/velero/pkg/persistence"
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -573,7 +571,7 @@ func TestDeleteOrphanedBackups(t *testing.T) {
nil, // kubeClient
"",
nil, // new plugin manager func
persistence.NewObjectBackupStoreGetter(),
nil, // backupStoreGetter
velerotest.NewLogger(),
).(*backupSyncController)
@@ -667,7 +665,7 @@ func TestStorageLabelsInDeleteOrphanedBackups(t *testing.T) {
nil, // kubeClient
"",
nil, // new plugin manager func
persistence.NewObjectBackupStoreGetter(),
nil, // backupStoreGetter
velerotest.NewLogger(),
).(*backupSyncController)