Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Oracle Cloud Object Storage as a Backend #4517

Open
theabmitra opened this issue Oct 17, 2023 · 6 comments
Open

Oracle Cloud Object Storage as a Backend #4517

theabmitra opened this issue Oct 17, 2023 · 6 comments
Labels
category: backend type: discussion undecided topics needing supplementary input type: feature suggestion suggesting a new feature

Comments

@theabmitra
Copy link

theabmitra commented Oct 17, 2023

Output of restic version

restic 0.16.0 compiled with go1.20.6 on darwin/amd64

What should restic do differently? Which functionality do you think we should add?

Add OCI (Oracle Cloud Infrastructure) as a backend.

What are you trying to do? What problem would this solve?

This will allow end users of Oracle Cloud to use restic for backing up data to OCI Object Storage , using various OCI auth mechanisms like:

  • user principal
  • instance principal
  • workload identity
@MichaelEischer
Copy link
Member

MichaelEischer commented Oct 19, 2023

From what I can tell, OCI Object Storage also offers an S3 API. We're not particularly eager to add new backends as these come with a significant maintenance burden. (We'd also need a way to continuously run tests for the backend).

I'll leave the issue open for now to see how much interest there is for this feature, however, I think that using the S3 compatible API is the way to go.

@MichaelEischer MichaelEischer added category: backend type: discussion undecided topics needing supplementary input type: feature suggestion suggesting a new feature labels Oct 19, 2023
@theabmitra
Copy link
Author

I would love to contribute to this and noticed backends like azure were running tests by setting env variables. i feel this would be a great addition for OCI customers mainly due to auth mechanisms like instance principals and workload identity.

@anders-swanson
Copy link

OCI Object Storage does support S3 compatibility, but to get a full feature set (like auth mechanisms, among other things), native OCI APIs should be used.

@konidev20
Copy link
Contributor

konidev20 commented Oct 23, 2023

Hey @theabmitra,

I see that rclone supports Oracle Object Storage. If you have an immediate use case, you can use rclone as a backend with Oracle Object Storage configured.

However, there would be some performance hits, due to the overheads of rclone REST. We had done some tests when we proposed SMB as a backend for restic sometime back #4185, the differences between rclone+restic and direct SMB connections were significant.

We will draw more interest if we can create a draft PR to test and compare the performance between using Oracle Object Storage SDK in Golang and the rclone method.

I am happy to help with a draft PR.

[Edit]
PS: The performance benefits must be significant enough to add to the maintenance overheads.
[/Edit]

@theabmitra
Copy link
Author

@konidev20 we also want to support Velero as well, and since velero internally defaults to restic , we would prefer restic than rclone.

@konidev20
Copy link
Contributor

Looks like under the hood rclone also uses the S3-Compatible API Configure rclone for Object Storage

To configure rclone for Oracle Cloud Infrastructure Object Storage, you must use the Amazon S3 Compatibility API. First, you need to obtain proper credentials and the API endpoint and then set the correct environment variables.

I agree with:

OCI Object Storage does support S3 compatibility, but to get a full feature set (like auth mechanisms, among other things), native OCI APIs should be used.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category: backend type: discussion undecided topics needing supplementary input type: feature suggestion suggesting a new feature
Projects
None yet
Development

No branches or pull requests

4 participants