-
Notifications
You must be signed in to change notification settings - Fork 378
Remove all SP Implementation Info #192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove all SP Implementation Info #192
Conversation
This patch removes all of the SP implementation information previously detailed in the specification. With respect to issue container-storage-interface#171 and comments made by @saad-ali, @childsb, @jdef, and others, it has become apparent that the specification should not supply any suggestions or restrictions on matters related to an SP's packaging, deployment, or runtime configuration. Removed information includes, but not limited to: * `CSI_ENDPOINT` - SPs are now responsible for defining the manner by which they grok the gRPC endpoint on which they serve the CSI services. CO admins are now responsible for deploying and configuring SPs using that SP's documentation. * Env var names - The spec no longer claims ownership of the `CSI_` prefix for environment variables. * Permissions - The spec no longer asserts any recommendations with respect to container permissions that an SP might require. * Logging - All logging details are the responsibility of the SP and may vary SP to SP. The removed information may very well be suitable to live in a separate document that provides guidelines for SP creation and configuration, such as common environment variable names, logging and packaging details, etc. cc @codenrhoden
I really wish we could make this change. Decoupling the spec completely from packaging and deployment would make it cleaner and more flexible. But as mentioned in #171 (comment), Mesos has a dependency on |
Hi @saad-ali, If the API specification includes SP implementation details for even one CO then it's clear that the API specification should define certain implementation details. For example, When the specification defines a single SP environment variable the specification now owns a prefix that is for what? For nothing else? If the spec defines anything to do with implementation details then it should define the rest of the common ones too, such as |
Defining endpoint as an env var is an exception not the rule.
AFAIK endpoint is critical for CSI to work with Mesos. But a single exception should not be justification to open the flood gates and abandon the principle altogether. Separating packaging and deployment from the interface is important and we should strive to do so as we continue to expand and revise the spec. |
Hi @saad-ali, If However, I would also argue that if a single CO already defines deployment/configuration details for an SP then it's not unlikely others will as well. My point is this -- how come Mesos or any CO requires |
That seems reasonable to me. @jieyu? |
IMO as long as the spec mandates the use of a CSI_xxx envvar then we should
keep the namespace reserved.
…On Thu, Feb 15, 2018 at 9:11 PM, Saad Ali ***@***.***> wrote:
If CSI_ENDPOINT is an exception then at least remove the language from the
spec that declares CSI_ off-limits. Otherwise a very useful and obvious
namespace is completely unused except for a single environment variable.
That seems reasonable to me. @jieyu <https://github.com/jieyu>?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#192 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ACPVLP8ote4cS6nLKOkcqPlNPlhCOZQ_ks5tVOPCgaJpZM4SHlnC>
.
|
This is having your cake and eating it too. If |
We'd like to keep the envvar surface area small. Just because I think the spec should continue to reserve the CSI_ envvar namespace doesn't imply that the spec needs to define any additional envvars other than what's already in the spec. The bar for introducing any additional environment requirements should be very high .. and CSI_MODE doesn't clear that bar for me. |
* Only UNIX Domain Sockets may be used as endpoints. | ||
This will likely change in a future version of this specification to support non-UNIX platforms. | ||
* All supported RPC services MUST be available at the listen address of the Plugin. | ||
* All Plugins MUST support UNIX Domain Sockets as a gRPC endpoint. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this statement.
##### Logging | ||
|
||
* Plugins SHOULD generate log messages to ONLY standard output and/or standard error. | ||
* In this case the Plugin Supervisor SHALL assume responsibility for all log lifecycle management. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
instead of removing this block, we could change SHALL to SHOULD
|
||
##### Linux Capabilities | ||
|
||
* Plugin Supervisor SHALL guarantee that plugins will have `CAP_SYS_ADMIN` capability on Linux when running on Nodes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we need this so that plugins can execute mount operations. i don't think it's wise to remove from the spec.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FUSE based plugins don't require CAP_SYS_ADMIN. NFS plugins probably want CAP_NET_BIND_SERVICE. We have a plugin in CloudFoundry that needs CAP_SETUID. So to me, this seems like it is only true part of the time, and not really complete. I'd be ok with removing it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree it's ok to remove, this is a packaging concern and not related to how the CO and the SP can interact.
Per https://github.com/container-storage-interface/community/blob/master/governance.md#pull-request-rot closing PR marked as rotten. |
This patch removes all of the SP implementation information previously detailed in the specification. With respect to issue #171 and comments made by @saad-ali, @childsb, @jdef, and others, it has become apparent that the specification should not supply any suggestions or restrictions on matters related to an SP's packaging, deployment, or runtime configuration.
Removed information includes, but is not limited to the following:
CSI_ENDPOINT
CSI_
prefix for environment variables.As a reminder, the above list is not exhaustive or complete. Please see the patch for the full picture.
Guide to Developing CSI Storage Plug-ins
The removed information may very well be suitable to live in a separate document that provides guidelines for SP creation and configuration, such as common environment variable names, logging and packaging details, etc.
cc @codenrhoden