-
Notifications
You must be signed in to change notification settings - Fork 364
POC: bosh-azure-storage-cli based blobstore client #4397
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
base: main
Are you sure you want to change the base?
Conversation
module Blobstore | ||
# POC: This client uses the `azure-storage-cli` tool from bosh to interact with Azure Blob Storage. | ||
# It is a proof of concept and not intended for production use. | ||
# Goal of this POC is to find out if the bosh blobstore CLIs can be used as a replacement for the fog. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any idea if the bosh blobstore CLIs have consistent interfaces? Do you think that in the future we could have something like one client that takes the provider CLI as an injection?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The CLIs have in general consistent interfaces:
<cli> -c config.json put <path/to/file> <remote-blob>
<cli> -c config.json get <remote-blob> <path/to/file>
<cli> -c config.json delete <remote-blob>
<cli> -c config.json exists <remote-blob>
<cli> -c config.json sign <remote-blob> <get|put> <seconds-to-expiration>
There are few extra options for sign
for the GCS CLI but not sure yet if we need them.
In bosh they use dedicated clients which implement a common interface: https://github.com/cloudfoundry/bosh/tree/main/src/bosh-director/lib/bosh/director/blobstore
Something similar should work also work well in ccng.
The main difference between the different CLIs is within the config files as they look quite different, especially for s3.
The bosh storage CLIs covers:
❗ There is no CLI for openstack. Would this be a blocker or could we e.g. handle this with the s3 CLI? |
Results of the blobstore benchmark running with azure-storage-cli and fog-azure. The table shows the average over 3 runs:
Overall the performance looks promising - especially the buildpack download is much faster. |
TL;DR
This POC adds a new blobstore client which is based on the bosh-azure-storage-cli.
We consider this as a potential replacement for deprecated fog libraries like azure fog.
The POC proves that
cf push
of new and existing apps is working and that the client can be used as drop in replacement.Findings
✅ Push of new apps is working
✅ Push of existing apps is working
✅ Can be used a drop in replacement to fog
✅ app_bits cache upload/download is working correctly
✅ buildpack cache upload/download is working correctly
🚧 Findings need to be discussed with bosh team (maybe also consider renaming)
🚧 Copying files directly on the blobstore is missing in bosh-azure-storage-cli
🚧 Functionality not directly related to cf push is not yet implemented (like delete_all)
🚧 Further performance tests needed
How To Use
- Checkout POC branch in ccng
- Modify spec files and add
azure-storage-cli
package in capi-release- Add
azure-storage-cli-linux-amd64
to capi-release- Build CAPI Dev Release
- Set
blobstore_type: cli
in cf manifest file- Deploy