Hello team,
Lots of great progress being made re the CSI specification.
On today's call Andrew Kutz of {code} by Dell EMC provided a first working example of the CSI specification written in Go. At this current time there is a single pull request that includes the different components that make all sides (server/client) of it work. This PR and future submitted code will mutate based on discussions, but for now it is a partially working example with AWS EBS!
There were specific goals in generating this:
- Generate a simple and pure CSI server side plugin endpoint in Go
- Pragmatically work through specification to identify gaps
- Create tools and tests that can assist with CI against the specification
- Discover if there are things that can be done to make it easier for plugin implementers
- Collect feedback about project desires as compared to examples and tools
He was able to show a few really cool things today.
1) a standalone AWS EBS plugin process (csp) that serves the CSI endpoints. This implementation has absolute minimal code and is intended to be a pure CSI implementation.
2) the client (csc) that is a tool that can be used to speak with the CSI endpoints. It provides functionality similar to what a CO would implement and thus makes it practical to truly test the specification and understand limitations.
3) the daemon (csd) that could possibly make it easier for plugin developers. We have identified input validation, logging, etc as common features that can possibly be shared across plugins. This was implemented by using Go plugins, where the csd is able to dynamically load the standalone csp's (same exact package as mentioned in #1). The csd actually exposes gRPC upward, and uses gRPC to speak in-memory via Go io.pipe package to any of the pure CSI plugin packages.
Both 1 & 3 are able to provide a mechanism to further test and actually have discussions around packaging and build process for the plugins since it is a real process now that serves as endpoints.
Looking forward to feedback on how the project might see these examples and tools fitting moving forward.