Skip to content

CI using sample driver #187

@BlaineEXE

Description

@BlaineEXE

Enhancement

Why is this needed?:

COSI must have CI.

COSI should have a sample driver that shows vendors how to implement drivers in some reasonably realistic way.

It will be efficient if COSI is able to use its sample driver for CI tests.

For comparison, CSI's hostpath sample driver is used for CI as well.

The current COSI sample driver does not have a storage backend. It merely implements gRPC server calls with no implementation. This is okay but not ideal for actually exemplifying how a driver can interact with a backend.

Describe the solution you'd like in detail:

Ideally, the sample driver will interact with a real storage backend. However, there are challenges. All 3 object protocols currently supported (S3, Azure blob, GCS) are proprietary protocols.

We must have CNCF approval to implement a driver using these protocols.

The ideal sample driver would use S3, since it is the most widely used protocol and since it has the most open source implementations.

In addition, the ideal sample driver would not rely on vendor-specific features and instead rely only on the most minimal S3 APIs shared by any S3 server implementation so that COSI is not acting as a vendor driver maintainer.

If we are using the sample driver to help us with CI, The sample driver would require a backend that is functional and provides basic S3 APIs and features. It must be able to manage buckets, users, and assign permissions to users for bucket access.

There are a number of open source software projects that provide S3 backends/servers, but attention to licensing is important. COSI maintainers have identified these "open source" S3 server providers:

Of these, only SeaweedFS uses a CNCF-approved license.

In full, the proposal is for 3 layers:

  • COSI core: Controller+Sidecar (Apache 2.0)
  • COSI sample driver: user-consumable driver (Apache 2.0, using the proprietary S3 protocol)
  • S3 provider: used in CI only

Based on the above discussion, the pre-approved S3 provider we could use is SeaweedFS (Apache 2.0). The S3 provider could be swapped out in the future or swapped out for downstream vendors. If SeaweedFS becomes deprecated, swapping might be necessary.

Describe alternatives you've considered:

The current sample driver connects to no backend. If licensing is an issue, especially regarding usage of S3, this is the non-preferred fallback option.

Additional context:

Metadata

Metadata

Assignees

No one assigned

    Labels

    api/v1alpha2Issue reported against or feature request for v1alpha2 APIkind/featureCategorizes issue or PR as related to a new feature.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions