Giter VIP home page Giter VIP logo

spec's People

Contributors

dependabot[bot] avatar elenager avatar iamniting avatar madhu-1 avatar matancarmeli7 avatar nixpanic avatar rakshith-r avatar shyamsundarr avatar yati1998 avatar yuggupta27 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spec's Issues

Add optional target volume id parameter

for all RPCs:
in addition to the existing volume_id, which represents the source volume, add a target_volume_id parameter, which represents an existing (but new) target volume.

LUKS passphrase rotation for encrypted storage

Ceph-CSI supports encryped storage (currently only for RBD images with LUKS/cryptsetup). There should be a way to rotate the encryption passphrases by adding a new one to the LUKS header and removing the older one.

This might be very Ceph-CSI specific, at the moment. But an advanced procedure like this does not fit in the CSI Spec, so maybe kube-storage is a better location?

Add state field to ResyncVolumeResponse

Add state file to the ResyncVolumeResponse to provide more clarity about the current state of the volume

message ResyncVolumeResponse{
  // Indicates that the volume is ready to use.
  // The default value is false.
  // This field is REQUIRED.
  bool ready = 1;
  // Represents the current state of the volume which is helpful to provide the state of the volume to the user. 
  // with this user can identify that the image is still resyncing, completed, stated to resync, or failed to resync.
  string state =2;
}

Add New message to check volume replication health

Sometimes the volume might not be in a good state and the user needs to know what is the health of the replication is in an error state, need manual work like resync, etc.

This will help some automation where you will demote the volume (make it secondary) check the volume state and if any resync (if supported) is required resync the volume.

Support replication at Volume Groups level

Kubernetes and the CSI Spec does not have Volume Groups support yet. Once that feature is available, csi-addons project probably want to extend the volume replication to support it too.

This issue is opened for tracking

Accommodate Volume Healer

With ceph/ceph-csi#2108 we are adding a VolumeHealer in ceph-csi. The VolumeHealer currently aims to restore the rbd-nbd processes back to life after a node plugin restart. For now, the VolumeHealer is triggered as part of the NodePlugin bootup sequence (triggers on every restart)

We hope the healing will be moved to a csi-addons sidecar in the future.

Add ability to run fstrim/blkdiscard/... operations

It would be a nice addition if a volume can be sparsified by running fstrim, blkdiscard or tools like rbd sparsify.

Owners of a PVC should be able to run these commands at a time of their choosing, e.g. out of business hours. Normal users on a cluster do not have the permission to run privileged Pods that are required for this, so this needs to be initiated through a controller that is managed by the (storage) admin.

I imagine an interface similar to Job from the batch/v1 API, with some potential to add scheduled jobs like CronJob.

Add API to detect available controllers and functionalities

Similar to the CSI Controllers, I imagine it would benefit consumers to have a detection mechanism of what Controllers are available, and what functionalities it provides.

An Identity Service kind of API could provide access to details like:

  • ReplicationController
    • API version, other information about provider
    • capabilities: ENABLE_DISABLE, PROMOTE_DEMOTE, RESYNC
  • FencingController
    • API version, other information about provider
    • capabilities: BLOCK_NODE, UNBLOCK_NODE, NODE_RECOVERY
  • DataEncryptionController
    • API version, other information about provider
    • capabilities: KEY_ROTATION, SHRED

Adding the Identify Service from the beginning shows the intent to do more than replication alone. The README mentions fencing in a diagram, but it is omitted everywhere else.

Quiesce I/O in application containers before creating a Snapshot/Clone

It would be amazing if CSI-Addons can provide a way to temporary quiesce I/O while a volume snapshot is made.

The process could look a little like this:

  1. a user initiates Quiesce
  2. csi-addons execs a command in the application container (flush I/O, pause VM, ...)
  3. csi-addons calls fsfreeze or similar the NodePlugin where the volume is mounted
  4. the user creates a snapshot/clone
  5. csi-addons calls unfreeze or similar the NodePlugin where the volume is mounted
  6. csi-addons execs a command in the application container (resume VM, ...)

Add update time to the ResyncVolumeResponse

add update_time/last_sync_time to the ResyncVolumeResponse to update the actual resync that happened to time in the backend and this field is optional.

// ResyncVolumeResponse holds the information to send when
// volume is successfully resynced.
message ResyncVolumeResponse{
  // Indicates that the volume is ready to use.
  // The default value is false.
  // This field is REQUIRED.
  bool ready = 1;
   // Timestamp of last resync update on the volume
  // This field is optional.
  .google.protobuf.Timestamp updated_time = 4;
}

open for suggestion on the field name updated_time or last_resync_update anything else?

CC @ShyamsundarR @raghavendra-talur @oriyarde

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.