Giter VIP home page Giter VIP logo

container-object-storage-interface-spec's Introduction

version

Container Object Storage Interface Spec

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.

Why another standard?

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.

Developer Guide

All API definitions MUST satisfy the following requirements:

Build and Test

  1. cosi.proto is generated from the specification defined in spec.md

  2. In order to update the API, make changes to spec.md. Then, generate cosi.proto using:

# generates cosi.proto
make generate
  1. Clean and Build
# cleans up old build files
make clobber
# builds the go bindings
make
  1. Do it all in 1 step:
# generates cosi.proto and builds the go bindings
make all

References

Community, discussion, contribution, and support

You can reach the maintainers of this project at:

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

container-object-storage-interface-spec's People

Contributors

brahmaroutu avatar cyb70289 avatar k8s-ci-robot avatar krishchow avatar mukhoakash avatar nikhita avatar somersbmatthews avatar thotz avatar tparikh avatar wlan0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

container-object-storage-interface-spec's Issues

Requirement of Bucket Usage and Performance Promethues metrics

Requirement of Bucket Usage and Performance metrics

Is your feature request related to a problem?/Why is this needed
Kubernetes PVC support storage usage promethues metrics via Kubelet exporter metrics. Similar information should be available for Object Buckets as well. It can include the following:

  • Storage(Per Bucket):

    • usage
    • capacity ( Not sure if applicable )
  • Performance(Per bucket):

    • Latency
    • Throughput
    • IOPS

Use cases:

  • Showing consumption and aggregated information on monitoring tools( Grafana etc. )
  • Finding out top n storage consumers
  • Finding out the buckets with performance below or above certain thresholds
  • Creating Prometheus alerts when the bucket consumption cross certain thresholds to notify users.

Describe the solution you'd like in detail

Required metrics to be implemented as additional metrics in already existing Prometheus exporters in Kubernetes ( Most Probably Kubelet )

Describe alternatives you've considered
None

Additional context
None

KEP partity with code:

  • SPEC parity: container-object-storage-interface-spec and KEP definitions need to be in sync

Add Docs for gRPC specification

As the gRPC API is starting to become stable, the specification needs to be documented here so that plugin writers have a up-to-date reference

[April-2024] - Different outputs for the created secret

Enhancement

Is your feature request related to a problem?/Why is this needed
The created Secret is in a format my app can't process.

An Operator manages the application and I have no latitude to extract the JSON file and convert it into a format consumable by the application. In this case, this is the Kafka Operator by Confluent.

Describe the solution you'd like in detail
The enhancement request is to produce the bucket details (endpoint, credentials, region, etc.) as environment variables.

Environment variables are a common way to pass configuration to containers and will be supported in that particular case .

Describe alternatives you've considered
Another option would be to have the option to give the COSI driver a template file to craft the expected configuration file instead of using a hard-coded JSON.

Additional context
This ticket relates to the conversation here.

Future OF COSI

Enhancement

The objective of this Issue is to track and discuss the changes that are yet to be made or has already been made to the Protocol Field in Bucket Class. This is also to discuss and come up with ideas on how we should brand COSI. Few discussions have started within the COSI community to change the name "COSI" and the two candidates we came up with are OSI, KOSI.

I think both the names are really good and we should try to have both. It might sound strange at first but I will try to clarify my self.

OSI, can we have this name! My personal opinion will be that we are not quite mature enough for this name. As it will be "The Object Storage Interface" but we should definitely plan for it to be the future of COSI.

KOSI, I think this name suits the current position of COSI. We should plan for creating a standard for object storage in Kubernetes. Since anyway we are already doing it. Once we reach this goal then, we can plan for OSI.

For this to happen we will have to re-discuss the Protocol field in Bucket Class.

Parameters: Final Conclusion

BucketClass

provisioner: s3.amazonaws.com
protocol: 
  name: s3
  version: 2012-11-05
anonymousAccessMode: Public
releasePolicy: Retain
allowedNamespaces:
  - profiles
parameters: 
    region: us-east-1

COSI ---> KOSI ----> OSI

COSI gRPC Spec: DeleteBucket()

Define the send and return gRPC messages transmitted by DeleteBucket() call and policies around Greenfield and Brownfield cases.

Update README.md

The current readme.md is out of date, and does not give guidelines for new persons interested in the project to easily get started and contribute.

[19-December-2023] - COSI Bucket Names

Copy pasting request from rook/rook#13396

When creating buckets with a bucket claim like this:

apiVersion: objectstorage.k8s.io/v1alpha1
kind: BucketClaim
metadata:
  name: my-bucket
spec:
  bucketClassName: ceph-bucket-class
  protocols:
    - s3

The bucket created is ceph is not my-bucket but instead a random auto generated name. In our use case we need to be able to create buckets with specified names. Is that possible somehow?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.