|
1 |
| -COSI repos and images: |
| 1 | + |
2 | 2 |
|
3 |
| -[Spec](https://github.com/kubernetes-sigs/container-object-storage-interface-spec) \ |
4 |
| -[API](https://github.com/kubernetes-sigs/container-object-storage-interface-api) \ |
5 |
| -[Controller](https://github.com/kubernetes-sigs/container-object-storage-interface-controller) <br/> |
6 |
| -  - [images: cosi-controller](https://quay.io/repository/containerobjectstorage/objectstorage-controller?tab=tags) \ |
7 |
| - [Provisioner Sidecar](https://github.com/kubernetes-sigs/container-object-storage-interface-provisioner-sidecar) <br /> |
8 |
| -   - images: cosi-provisioner \ |
9 |
| - [CSI Adapter](https://github.com/kubernetes-sigs/container-object-storage-interface-csi-adapter) <br /> |
10 |
| -   - images: cosi-node-adapter |
| 3 | +# Container Object Storage Interface Spec |
11 | 4 |
|
12 |
| -COSI deprecated repos: |
| 5 | +This repository hosts the gRPC API for the Container Object Storage Interface (COSI) standard. The interfaces defined in the [gRPC specification](cosi.proto) are meant to be the common interface for object storage provisioning and management across various object storage vendors. |
13 | 6 |
|
| 7 | +For more information about the COSI effort, visit our [documentation](https://github.com/kubernetes-sigs/container-object-storage-interface-api/tree/master/docs/index.md). |
14 | 8 |
|
| 9 | +## Why another standard? |
15 | 10 |
|
16 |
| -[Spec](https://github.com/container-object-storage-interface/spec) \ |
17 |
| -[API](https://github.com/container-object-storage-interface/api) \ |
18 |
| -[Manager (i.e. Controller)](https://github.com/container-object-storage-interface/cosi-controller-manager) \ |
19 |
| -[Provisioner Sidecar](https://github.com/container-object-storage-interface/cosi-provisioner-sidecar) \ |
20 |
| -[Ephemeral CSI Driver](https://github.com/container-object-storage-interface/ephemeral-csi-driver) |
| 11 | +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: |
21 | 12 |
|
| 13 | + - Unit of provisioned storage - Bucket instead of filesystem mount or block device. |
| 14 | + - Access is over the network instead of local POSIX calls. |
| 15 | + - No common protocol for consumption across various implementations of object storage. |
| 16 | + - Management policies and primitives - for instance, mounting and unmounting do not apply to object storage. |
22 | 17 |
|
| 18 | +The existing primitives in CSI do not apply to objectstorage. Thus the need for a new standard to automate the management of objectstorage. |
23 | 19 |
|
24 |
| -# Container Object Storage Specification |
| 20 | +## Developer Guide |
25 | 21 |
|
26 |
| -Kubernetes specific Container Object Storage Interface (COSI) components. |
| 22 | +All API definitions **_MUST_** satisfy the following requirements: |
27 | 23 |
|
28 |
| -## Community, discussion, contribution, and support |
| 24 | +<!-- - Must be backwards compatible --> |
| 25 | + - Must be in-sync with the API definitions in [sigs.k8s.io/container-object-storage-interface-api](https://github.com/kubernetes-sigs/container-object-storage-interface-api) |
| 26 | + |
| 27 | +### Build and Test |
| 28 | + |
| 29 | +1. `cosi.proto` is generated from the specification defined in `spec.md` |
| 30 | + |
| 31 | +2. In order to update the API, make changes to `spec.md`. Then, generate `cosi.proto` using: |
| 32 | + |
| 33 | +```sh |
| 34 | +# generates cosi.proto |
| 35 | +make generate |
| 36 | +``` |
29 | 37 |
|
30 |
| -If you are new to a SIG Storage project, check out this [contributing guide](https://github.com/kubernetes/community/blob/master/sig-storage/CONTRIBUTING.md) |
31 |
| -and the [community page](https://github.com/kubernetes/community/tree/master/sig-storage). |
| 38 | +3. Clean and Build |
32 | 39 |
|
33 |
| -If you are new to the SIG Storage COSI project, check out the [spec](https://github.com/kubernetes-sigs/container-object-storage-interface-spec/blob/master/spec.md), [KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1979-object-storage-support), and [project board](https://github.com/orgs/kubernetes-sigs/projects/). |
| 40 | +```sh |
| 41 | +# cleans up old build files |
| 42 | +make clobber |
| 43 | +# builds the go bindings |
| 44 | +make |
| 45 | +``` |
34 | 46 |
|
35 |
| -Learn how to engage with the Kubernetes community on the [community page](http://kubernetes.io/community/). |
| 47 | +4. Do it all in 1 step: |
| 48 | + |
| 49 | +``` |
| 50 | +# generates cosi.proto and builds the go bindings |
| 51 | +make all |
| 52 | +``` |
| 53 | + |
| 54 | +## References |
| 55 | + |
| 56 | + - [Documentation](https://github.com/kubernetes-sigs/container-object-storage-interface-api/tree/master/docs/index.md) |
| 57 | + - [Deployment Guide](https://github.com/kubernetes-sigs/container-object-storage-interface-api/tree/master/docs/deployment-guide.md) |
| 58 | + - [Weekly Meetings](https://github.com/kubernetes-sigs/container-object-storage-interface-api/tree/master/docs/meetings.md) |
| 59 | + - [Roadmap](https://github.com/orgs/kubernetes-sigs/projects/8) |
| 60 | + |
| 61 | +## Community, discussion, contribution, and support |
36 | 62 |
|
37 | 63 | You can reach the maintainers of this project at:
|
38 | 64 |
|
39 |
| -- [Slack](https://kubernetes.slack.com/messages/sig-storage-cosi) |
40 |
| -- [Mailing List](https://groups.google.com/g/container-object-storage-interface-wg?pli=1) |
| 65 | + - [#sig-storage-cosi](https://kubernetes.slack.com/messages/sig-storage-cosi) slack channel |
| 66 | + - [container-object-storage-interface](https://groups.google.com/g/container-object-storage-interface-wg?pli=1) mailing list |
41 | 67 |
|
42 | 68 | ### Code of conduct
|
43 | 69 |
|
|
0 commit comments