This repository hosts the gRPC API for the Container Object Storage Interface (COSI) standard. The interfaces defined in the gRPC specification are meant to be the common interface for object storage provisioning and management across various object storage vendors.
For more information about the COSI effort, visit our documentation.
Kubernetes abstracts file/block storage via the CSI standard. The primitives for file/block storage do not extend well to object storage. Here is the extremely concise and incomplete list of reasons why:
- Unit of provisioned storage - Bucket instead of filesystem mount or block device.
- Access is over the network instead of local POSIX calls.
- No common protocol for consumption across various implementations of object storage.
- Management policies and primitives - for instance, mounting and unmounting do not apply to object storage.
The existing primitives in CSI do not apply to objectstorage. Thus the need for a new standard to automate the management of objectstorage.
All API definitions MUST satisfy the following requirements:
- Must be in-sync with the API definitions in sigs.k8s.io/container-object-storage-interface-api
-
cosi.proto
is generated from the specification defined inspec.md
-
In order to update the API, make changes to
spec.md
. Then, generatecosi.proto
using:
# generates cosi.proto
make generate
- Clean and Build
# cleans up old build files
make clobber
# builds the go bindings
make
- Do it all in 1 step:
# generates cosi.proto and builds the go bindings
make all
You can reach the maintainers of this project at:
- #sig-storage-cosi slack channel
- container-object-storage-interface mailing list
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.