Dynamic plugin example
Before working through the example, verify that the plugin is working by following the steps in the Dynamic plugin development documentation.
Adding a tab to the pods page
There are different customizations you can make to the OpenShift Container Platform web console. The following procedure adds a tab to the Pod details page as an example extension to your plugin.
The OpenShift Container Platform web console runs in a container connected to the cluster you have logged into. See "Dynamic plugin development" for information to test the plugin before creating your own.
Procedure
- Visit the
console-plugin-templaterepository containing a template for creating plugins in a new tab.ImportantCustom plugin code is not supported by Red Hat. Only Cooperative community support is available for your plugin.
- Create a GitHub repository for the template by clicking Use this template → Create new repository.
- Rename the new repository with the name of your plugin.
- Clone the new repository to your local machine so you can edit the code.
- Edit the
package.jsonfile, adding your plugin’s metadata to theconsolePlugindeclaration. For example:json"consolePlugin": { "name": "my-plugin", "version": "0.0.1", "displayName": "My Plugin", "description": "Enjoy this shiny, new console plugin!", "exposedModules": { "ExamplePage": "./components/ExamplePage" }, "dependencies": { "@console/pluginAPI": "/*" } }where:
consolePlugin.name.my-pluginUpdate the name of your plugin.
consolePlugin.version.0.0.1Update the version.
consolePlugin.displayName.My PluginUpdate the display name for your plugin.
consolePlugin.description.Enjoy this shiny, new console plugin!Update the description with a synopsis about your plugin.
- Add the following to the
console-extensions.jsonfile:json{ "type": "console.tab/horizontalNav", "properties": { "page": { "name": "Example Tab", "href": "example" }, "model": { "group": "core", "version": "v1", "kind": "Pod" }, "component": { "$codeRef": "ExampleTab" } } } - Edit the
package.jsonfile to include the following changes:json"exposedModules": { "ExamplePage": "./components/ExamplePage", "ExampleTab": "./components/ExampleTab" } - Write a message to display on a new custom tab on the Pods page by creating a new file
src/components/ExampleTab.tsxand adding the following script:tsximport * as React from 'react'; export default function ExampleTab() { return ( <p>This is a custom tab added to a resource using a dynamic plugin.</p> ); } - Install a Helm chart with the name of the plugin as the Helm release name into a new namespace or an existing namespace as specified by the
-ncommand-line option to deploy your plugin on a cluster. Provide the location of the image within theplugin.imageparameter by using the following command:terminal$ helm upgrade -i my-plugin charts/openshift-console-plugin -n my-plugin-namespace --create-namespace --set plugin.image=my-plugin-image-locationNoteFor more information on deploying your plugin on a cluster, see "Deploy your plugin on a cluster".
Verification
- Visit a Pod page to view the added tab.