Dynamic plugin example
Before working through the example, verify that the plugin is working by following the steps in Dynamic plugin development
Adding a tab to the pods page
There are different customizations you can make to the OKD web console. The following procedure adds a tab to the Pod details page as an example extension to your plugin.
The OKD 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-template repository containing a template for creating plugins in a new tab.
Custom 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.json
file, adding your plugin’s metadata to theconsolePlugin
declaration. For example:"consolePlugin": {
"name": "my-plugin", (1)
"version": "0.0.1", (2)
"displayName": "My Plugin", (3)
"description": "Enjoy this shiny, new console plugin!", (4)
"exposedModules": {
"ExamplePage": "./components/ExamplePage"
},
"dependencies": {
"@console/pluginAPI": "/*"
}
}
1 Update the name of your plugin. 2 Update the version. 3 Update the display name for your plugin. 4 Update the description with a synopsis about your plugin. Add the following to the
console-extensions.json
file:{
"type": "console.tab/horizontalNav",
"properties": {
"page": {
"name": "Example Tab",
"href": "example"
},
"model": {
"group": "core",
"version": "v1",
"kind": "Pod"
},
"component": { "$codeRef": "ExampleTab" }
}
}
Edit the
package.json
file to include the following changes:"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.tsx
and adding the following script:import * 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
-n
command-line option to deploy your plugin on a cluster. Provide the location of the image within theplugin.image
parameter by using the following command:$ helm upgrade -i my-plugin charts openshift-console-plugin -n my-plugin-namespace --create-namespace --set plugin image=my-plugin-image-location
For 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.