deprecated: go-plugin library as runtime plugin

We, containerd, suggest user to use binary plugins or RPC-based plugins.
Since go plugin has too many restrictions, I'm not sure that how many users
use the go plugin to extend the core function in the production.

Based on the fact that we put a lot of effort to make external plugins
better, suggest to deprecate go-plugin type plugin in v2.0 and remove it
in v2.1

REF: https://github.com/containerd/containerd/pull/556

Signed-off-by: Wei Fu <fuweid89@gmail.com>
This commit is contained in:
Wei Fu 2023-10-14 08:38:43 +08:00
parent 23573965ff
commit 4febb08528
3 changed files with 5 additions and 1 deletions

View File

@ -406,6 +406,7 @@ The deprecated features are shown in the following table:
| Pulling Schema 1 images (`application/vnd.docker.distribution.manifest.v1+json`) | containerd v1.7 | containerd v2.0 | Use Schema 2 or OCI images | | Pulling Schema 1 images (`application/vnd.docker.distribution.manifest.v1+json`) | containerd v1.7 | containerd v2.0 | Use Schema 2 or OCI images |
| CRI `v1alpha2` | containerd v1.7 | containerd v2.0 ✅ | Use CRI `v1` | | CRI `v1alpha2` | containerd v1.7 | containerd v2.0 ✅ | Use CRI `v1` |
| Legacy CRI implementation of podsandbox support | containerd v2.0 | containerd v2.0 ✅ | | | Legacy CRI implementation of podsandbox support | containerd v2.0 | containerd v2.0 ✅ | |
| Go-Plugin library (`*.so`) as containerd runtime plugin | containerd v2.0 | containerd v2.1 | Use external plugins (proxy or binary) |
### Deprecated config properties ### Deprecated config properties

View File

@ -63,6 +63,8 @@ type Config struct {
// TempDir is the path to a directory where to place containerd temporary files // TempDir is the path to a directory where to place containerd temporary files
TempDir string `toml:"temp"` TempDir string `toml:"temp"`
// PluginDir is the directory for dynamic plugins to be stored // PluginDir is the directory for dynamic plugins to be stored
//
// Deprecated: Please use proxy or binary external plugins.
PluginDir string `toml:"plugin_dir"` PluginDir string `toml:"plugin_dir"`
// GRPC configuration settings // GRPC configuration settings
GRPC GRPCConfig `toml:"grpc"` GRPC GRPCConfig `toml:"grpc"`

View File

@ -431,10 +431,11 @@ func (s *Server) Wait() {
// of all plugins. // of all plugins.
func LoadPlugins(ctx context.Context, config *srvconfig.Config) ([]plugin.Registration, error) { func LoadPlugins(ctx context.Context, config *srvconfig.Config) ([]plugin.Registration, error) {
// load all plugins into containerd // load all plugins into containerd
path := config.PluginDir path := config.PluginDir //nolint: staticcheck
if path == "" { if path == "" {
path = filepath.Join(config.Root, "plugins") path = filepath.Join(config.Root, "plugins")
} }
log.G(ctx).Warning("`go_plugin` is deprecated, please use `external plugins` instead")
if err := dynamic.Load(path); err != nil { if err := dynamic.Load(path); err != nil {
return nil, err return nil, err
} }