Lens v4 to v5 Extension Migration Notes#
- Lens v5 inspects the version of the extension to ensure it is compatible.
The
package.json
for your extension must have an"engines"
field specifying the lens version that your extension is targeted for, e.g:Note that Lens v5 supports all the range semantics that semver provides."engines": { "lens": "^5.0.0-beta.7" },
- Types and components have been reorganized, many have been grouped by process (
Main
andRenderer
) plus those not specific to a process (Common
). For example theLensMainExtension
class is now referred to byMain.LensExtension
. See the API Reference for the new organization. - The
globalPageMenus
field of the Renderer extension class (nowRenderer.LensExtension
) is removed. Global pages can still be made accessible via the application menus and the status bar, as well as from the newly added Welcome menu. - The
clusterFeatures
field of the Renderer extension class (nowRenderer.LensExtension
) is removed. Cluster features can still be implemented but Lens no longer dictates how a feature's lifecycle (install/upgrade/uninstall) is managed.Renderer.K8sApi.ResourceStack
provides the functionality to input and apply kubernetes resources to a cluster. It is up to the extension developer to manage the lifecycle. It could be applied automatically to a cluster by the extension or the end-user could be expected to install it, etc. from the cluster Settings page. - Lens v5 now relies on mobx 6 for state management. Extensions that use mobx will need to be modified to work with mobx 6. See Migrating from Mobx 4/5 for specific details.
For an example of an existing extension that is compatible with Lens v5 see the Lens Resource Map Extension