Skip to content

Commit 7213843

Browse files
authored
Merge pull request #1253 from cloudfoundry/rfc-cc-storage-cli
[RFC] Cloud Controller Blobstore Type: storage-cli
2 parents 62b9025 + 81e5b9b commit 7213843

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Meta
2+
[meta]: #meta
3+
- Name: Cloud Controller Blobstore Type: storage-cli
4+
- Start Date: 2025-07-18
5+
- Author(s): @johha, @stephanme
6+
- Status: Draft <!-- Acceptable values: Draft, Approved, On Hold, Superseded -->
7+
- RFC Pull Request: [community #1253](https://github.com/cloudfoundry/community/pull/1253)
8+
9+
10+
## Summary
11+
12+
Add a new blobstore type `storage-cli` to the Cloud controller that is based on the Bosh storage CLIs. Long-term, the `storage-cli` blobstore type shall replace the blobstore type `fog`.
13+
The RFC also proposes to create a new "Storage CLI" area in the Foundational Infrastructure WG to allow cooperation of Bosh and CAPI teams and to consolidate the Bosh storage CLIs in one repository for easier code reuse.
14+
15+
## Problem
16+
17+
Cloud Controller uses the fog gem family to interface with the blobstores of different IaaS providers like Azure, AWS, GCP, and Alibaba Cloud.
18+
These Ruby gems are largely unmaintained, introducing risks such as:
19+
* Dependency on deprecated SDKs (e.g. Azure SDK for Ruby has reached EOL)
20+
* Blocking Ruby version upgrades
21+
* Potential for unpatched CVEs
22+
23+
## Proposal
24+
25+
Bosh faced similar issues, as it is also written in Ruby and interacts with blobstores. To address this, Bosh introduced standalone CLI tools which shell out from Ruby to handle all blobstore operations:
26+
- https://github.com/cloudfoundry/bosh-azure-storage-cli
27+
- https://github.com/cloudfoundry/bosh-s3cli
28+
- https://github.com/cloudfoundry/bosh-gcscli
29+
- https://github.com/cloudfoundry/bosh-ali-storage-cli
30+
31+
These storage CLIs are implemented in Go and use the respective provider golang SDKs that are well supported for the foreseeable future.
32+
33+
Cloud Controller shall implement a new blobstore type `storage-cli` that uses the mentioned storage CLIs for blobstore operations. Missing functionality needed by the Cloud Controller shall be added to the storage CLIs in a compatible way:
34+
- missing commands such as `copy`, `list`, `properties`, `ensure-bucket-exists`
35+
- missing configuration parameters such as GCP Uniform Bucket Access and timeout parameters
36+
37+
It shall be possible to switch from blobstore type `fog` to type `storage-cli` in a productive Cloud Foundry installation. Once blobstore type `storage-cli` supports all four mentioned IaaS providers, the blobstore type `fog` can be removed from Cloud Controller.
38+
39+
### Storage CLI
40+
41+
A new area "Storage CLI" shall be added to the Foundational Infrastructure WG in order to allow cooperation of Bosh and CAPI teams:
42+
43+
- create a new "Storage CLI" area
44+
- add existing approvers of areas "VM deployment lifecycle (BOSH)" (FI) and "CAPI" (ARI) as initial approvers to this new area
45+
- move the existing 4 bosh storage CLI repos from area "VM deployment lifecycle (BOSH)" into the new area
46+
- create a new repository `storage-cli` in this area with the goal to consolidate all existing bosh storage CLIs here
47+
- setup CI, consolidate CLIs into the new `storage-cli` repo, implement missing commands and configuration parameters for each IaaS
48+
49+
### Bosh
50+
51+
- eventually switch from (old) bosh storage CLIs to consolidated `storage-cli`
52+
- finally archive the old bosh storage CLI repos
53+
54+
### Cloud Controller
55+
56+
- add a new blobstore type `storage-cli` that shells out to `storage-cli` for blobstore operations
57+
- validate functionality with CATS
58+
- benchmark blobstore operation performance and compare with blobstore type `fog`, enhance performance tests where necessary
59+
- eventually deprecate and remove the blobstore type `fog` once all IaaS providers are covered
60+
61+
### cf-deployment
62+
63+
- add experimental ops files per IaaS provider for using the `storage-cli` blobstore type
64+
- eventually promote those ops files and replace the existing fog-based blobstore ops files
65+
66+
## Additional Information
67+
68+
- [cloud_controller_ng #4443](https://github.com/cloudfoundry/cloud_controller_ng/pull/4443) - ADR: Use Bosh Storage CLIs for Blobstore Operations

0 commit comments

Comments
 (0)