Plugins¶
A plugin is an HTTP server that runs alongside the controller container in the manager pod.
Handler dispatch¶
Access strategies map operations to plugin handlers using a plugin:action format:
spec:
podEventsHandler: "aws:ssm-remote-access"
createConnectionHandlerMap:
vscode-remote: "aws:createSession"
The controller parses the handler reference, resolves the plugin name to its HTTP endpoint, and dispatches the request.
Multi-plugin support¶
Jupyter K8s supports multiple plugins via PluginEndpoints configuration — a map from plugin name to localhost endpoint. Different access strategies can route to different plugins.
Writing a plugin¶
A plugin is a Go binary that:
Imports
github.com/jupyter-infra/jupyter-k8s-plugin/pluginserverfor the HTTP server framework.Implements the relevant handler interfaces.
Runs as a sidecar container in the controller pod, listening on localhost.
The jupyter-k8s-plugin repository provides the shared interfaces, HTTP client, and server framework.