API to reload plugins
The feature would be a Reload API to be able to reload gRPC and Wasm plugins. I assume this can be done in two parts, because the problem domain is somehow different.
Wasm plugins can be reloaded by detecting binary changes on disk and then restarting the in-memory service. This would come with a new dependency like fsnotify.
gRPC plugins would have to re-establish the connection to the server, probably by dropping active client connections.
Thoughts?
The feature would be a
ReloadAPI to be able to reload gRPC and Wasm plugins. I assume this can be done in two parts, because the problem domain is somehow different.Wasm plugins can be reloaded by detecting binary changes on disk and then restarting the in-memory service. This would come with a new dependency like fsnotify.
gRPC plugins would have to re-establish the connection to the server, probably by dropping active client connections.
Thoughts?
I think (as long as the WASM runtime does not keep plugins mmapped, which it does not seem to be doing) this could be a way of doing updates of WASM plugins. For native binary plugins, I think an explicit unlink/remove is required before a new version can be installed. So if we choose this method of updating, maybe for uniformity we should require WASM binaries to be first removed, so we could extend this later to cover native binaries as well.
gRPC plugins would have to re-establish the connection to the server, probably by dropping active client connections.
Related: https://github.com/containerd/nri/issues/167