- Adding a dynamic plug-in to the OKD web console
- About dynamic plug-ins
- Enable dynamic plug-ins in the web console
- Getting started with dynamic plug-ins
- Running your dynamic plug-in
- Adding a new extension to your plug-in
- Dynamic plug-in extension types
console.action/filter
console.action/group
console.action/provider
console.action/resource-provider
console.alert-action
console.catalog/item-filter
console.catalog/item-metadata
console.catalog/item-provider
console.catalog/item-type
console.catalog/item-type-metadata
console.cluster-overview/inventory-item
console.cluster-overview/multiline-utilization-item
console.cluster-overview/utilization-item
console.context-provider
console.dashboards/card
console.dashboards/overview/activity/resource
console.dashboards/overview/detail/item
console.dashboards/overview/health/operator
console.dashboards/overview/health/prometheus
console.dashboards/overview/health/resource
console.dashboards/overview/health/url
console.dashboards/overview/inventory/item
console.dashboards/overview/inventory/item/group
console.dashboards/overview/inventory/item/replacement
console.dashboards/overview/prometheus/activity/resource
console.dashboards/project/overview/item
console.dashboards/tab
console.file-upload
console.flag
console.flag/hookProvider
console.flag/model
console.global-config
console.model-metadata
console.navigation/href
console.navigation/resource-cluster
console.navigation/resource-ns
console.navigation/section
console.navigation/separator
console.page/resource/details
console.page/resource/list
console.page/route
console.page/route/standalone
console.perspective
console.project-overview/inventory-item
console.project-overview/utilization-item
console.pvc/alert
console.pvc/create-prop
console.pvc/delete
console.pvc/status
console.redux-reducer
console.resource/create
console.storage-provider
console.tab/horizontalNav
console.telemetry/listener
console.topology/adapter/build
console.topology/adapter/network
console.topology/adapter/pod
console.topology/component/factory
console.topology/create/connector
console.topology/data/factory
console.topology/decorator/provider
console.topology/details/resource-alert
console.topology/details/resource-link
console.topology/details/tab
console.topology/details/tab-section
console.topology/display/filters
console.topology/relationship/provider
console.user-preference/group
console.user-preference/item
console.yaml-template
dev-console.add/action
dev-console.add/action-group
dev-console.import/environment
console.page/resource/tab
- Adding a tab to the pods page
- Dynamic plug-in extension types
- Build an image with Docker
- Deploy your plug-in on a cluster
- Disabling your plug-in in the browser
Adding a dynamic plug-in to the OKD web console
You can create and deploy a dynamic plug-in on your cluster that is loaded at run-time.
Creating a dynamic plug-in is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information about the support scope of Red Hat Technology Preview features, see https://access.redhat.com/support/offerings/techpreview/. |
About dynamic plug-ins
A dynamic plug-in allows you to add custom pages and other extensions to your interface at runtime. The ConsolePlugin
custom resource registers plug-ins with the console, and a cluster administrator enables plug-ins in the console-operator
configuration.
Key features
A dynamic plug-in allows you to make the following customizations to the OKD experience:
Add custom pages.
Add perspectives and update navigation items.
Add tabs and actions to resource pages.
PatternFly 4 guidelines
When creating your plug-in, follow these guidelines for using PatternFly:
Use PatternFly4 components and PatternFly CSS variables. Core PatternFly components are available through the SDK. Using PatternFly components and variables will help your plug-in look consistent in future console versions.
Make your plug-in accessible by following PatternFly’s accessibility fundamentals.
Do not use other CSS libraries such as Bootstrap or Tailwind. They can conflict with PatternFly and will not match the console look and feel.
General guidelines
When creating your plug-in, follow these general guidelines:
Prefix your CSS class names with your plug-in name to avoid collisions. For example,
my-plugin__heading
andmy-plugin_\_icon
.Maintain a consistent look, feel, and behavior with other console pages.
Follow react-i18next localization guidelines when creating your plug-in. You can use the
useTranslation
hook like the one in the following example:conster Header: React.FC = () => {
const { t } = useTranslation('plugin__console-demo-plugin');
return <h1>{t('Hello, World!')}</h1>;
};
Do not use console CSS classes in your markup or override console CSS classes. These are not APIs and are subject to change. Using them might break your plug-in. Avoid selectors like element selectors that could affect markup outside of your plug-in’s components.
Enable dynamic plug-ins in the web console
Cluster administrators can enable plug-ins in the web console browser. Dynamic plug-ins are disabled by default. In order to enable, a cluster administrator will need to enable them in the console-operator
configuration.
Procedure
In the Administration → Cluster Settings page of the web console, click the Configuration tab.
Click the
Console
operator.openshift.io
configuration resource.From there, click the Console plugins tab to view the dynamic plug-ins running.
In the
Status
column, clickEnable console plugin
in the pop-over menu, which will launch theConsole plugin enablement
modal.Click
Enable
andSave
.
Verification
- Refresh the browser to view the enabled plug-in.
Getting started with dynamic plug-ins
To get started using the dynamic plug-in, you must set up your environment to write a new OpenShift Console dynamic plug-in.
Prerequisites
Procedure
Edit the plug-in metadata in the
consolePlugin
declaration ofpackage.json
."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 plug-in. 2 Update the version. 3 Update the display name for your plug-in. 4 Update the description with a synopsis about your plug-in.
Running your dynamic plug-in
You can run the plug-in using a local development environment. The OKD web console runs in a container connected to the cluster you have logged into.
Prerequisites
You must have the OpenShift CLI (
oc
) installed.You must have an OpenShift cluster running.
You must have Docker or at least v3.2.0 of Podman installed.
Procedure
Build a plug-in and generate the output to the
dist
directory by running$ yarn build
Start an HTTP server by running
$ yarn http-server
The HTTP server, which runs on port 9001, generates the following assets with
caching
disabled andCORS
enabled.Starting up http-server, serving ./dist
Available on:
http://127.0.0.1:9001
http://192.168.1.190:9001
http://10.40.192.80:9001
Hit CTRL-C to stop the server
Optional: Add additional server options to the script by running
$ yarn http-server -a <server name>
Direct
bridge
to proxy requests to your local plug-in asset server by running$ ./bin/bridge -plugins console-demo-plugin=http://localhost:9001/
Verification
- Visit local host to view the running plug-in. Inspect the value of
window.SERVER_FLAGS.consolePlugins
to see the list of plug-ins which load at runtime.
Adding a new extension to your plug-in
You can add extensions that allow you to customize your plug-in. Those extensions are then loaded to the console at run-time.
Edit the
console-extensions.json
file:[
{
"type": "console.flag", (1)
"properties": {
"handler": { "$codeRef": "barUtils.testHandler" } (2)
}
},
{
"type": "console.flag/model",
"properties": {
"flag": "EXAMPLE",
"model": {
"group": "kubevirt.io",
"version": "v1alpha3",
"kind": "ExampleModel"
}
}
}
]
1 Add the extension type(s) you want to include with this plug-in. You can include multiple extensions separated with a comma. 2 The $codeRef
value should be formatted as eithermoduleName.exportName
for a named export ormoduleName
for the default export. Only the plug-in’s exported modules can be used in code references.
Dynamic plug-in extension types
console.action/filter
Summary
ActionFilter can be used to filter an action
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The context ID helps to narrow the scope of contributed actions to a particular area of the application. Ex - topology, helm |
|
| no | A function which will filter actions based on some conditions.scope: The scope in which actions should be provided for.Note: hook may be required if we want to remove the ModifyCount action from a deployment with HPA |
console.action/group
Summary
ActionGroup contributes an action group that can also be a submenu
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | ID used to identify the action section. |
|
| yes | The label to display in the UI.Required for submenus. |
|
| yes | Whether this group should be displayed as submenu |
|
| yes | |
Insert this item before the item referenced here.For arrays, the first one found in order is used. |
|
|
console.action/provider
Summary
ActionProvider contributes a hook that returns list of actions for specific context
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The context ID helps to narrow the scope of contributed actions to a particular area of the application. Ex - topology, helm |
|
| no | A react hook which returns actions for the given scope.If contextId = |
console.action/resource-provider
Summary
ResourceActionProvider contributes a hook that returns list of actions for specific resource model
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model for which this provider provides actions for. |
|
| no | A react hook which returns actions for the given resource model |
console.alert-action
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | |
|
| no | |
|
| no |
console.catalog/item-filter
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | |
The unique identifier for the catalog this provider contributes to. |
|
| no |
Type ID for the catalog item type. |
|
| no |
console.catalog/item-metadata
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | |
The unique identifier for the catalog this provider contributes to. |
|
| no |
Type ID for the catalog item type. |
|
| no |
console.catalog/item-provider
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | |
The unique identifier for the catalog this provider contributes to. |
|
| no |
Type ID for the catalog item type. |
|
| no |
Title for the catalog item provider |
|
| no |
Fetch items and normalize it for the catalog. Value is a react effect hook. |
|
| yes |
console.catalog/item-type
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Type for the catalog item. |
|
| no | Title for the catalog item. |
|
| yes | |
Description for the type specific catalog. |
|
| yes |
Description for the catalog item type. |
|
| yes |
Custom filters specific to the catalog item. |
|
| yes |
console.catalog/item-type-metadata
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Type for the catalog item. |
|
| yes | Custom filters specific to the catalog item. |
|
| yes | Custom groupings specific to the catalog item. |
console.cluster-overview/inventory-item
Summary
Adds a new inventory item into cluster overview page.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The component to be rendered. |
console.cluster-overview/multiline-utilization-item
Summary
Adds a new cluster overview multiline utilization item.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The title of the utilization item. |
|
| no | Prometheus utilization query. |
|
| no | Convert prometheus data to human readable form. |
|
| yes | Shows Top consumer popover instead of plain value |
console.cluster-overview/utilization-item
Summary
Adds a new cluster overview utilization item.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The title of the utilization item. |
|
| no | Prometheus utilization query. |
|
| no | Convert prometheus data to human readable form. |
|
| yes | Prometheus total query. |
|
| yes | Prometheus request query. |
|
| yes | Prometheus limit query. |
|
| yes | Shows Top consumer popover instead of plain value |
console.context-provider
Summary
Adds new React context provider to Console application root.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Context Provider component. |
|
| no | Hook for the Context value. |
console.dashboards/card
Summary
Adds a new dashboard card.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The id of the dashboard tab to which the card will be added. |
| ’LEFT’ | ‘RIGHT’ | ‘MAIN’` |
no | The grid position of the card on the dashboard. |
|
|
no | Dashboard card component. |
|
|
console.dashboards/overview/activity/resource
Summary
Adds an activity to the Activity Card of Overview Dashboard where the triggering of activity is based on watching a K8s resource.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The utilization item to be replaced. |
|
| no | The action component. |
|
| yes | Function which determines if the given resource represents the action. If not defined, every resource represents activity. |
|
| yes | Timestamp for the given action, which will be used for ordering. |
console.dashboards/overview/detail/item
Summary
Adds an item to the Details card of Overview Dashboard
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The value, based on the DetailItem component |
console.dashboards/overview/health/operator
Summary
Adds a health subsystem to the status card of Overview dashboard where the source of status is a K8s REST API.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Title of operators section in the popup. |
|
| no | Kubernetes resources which will be fetched and passed to |
|
| yes | Resolves status for the operators. |
|
| yes | Loader for popup row component. |
|
| yes | Links to all resources page. If not provided then a list page of the first resource from resources prop is used. |
console.dashboards/overview/health/prometheus
Summary
Adds a health subsystem to the status card of Overview dashboard where the source of status is Prometheus.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The display name of the subsystem. |
|
| no | The Prometheus queries |
|
| no | Resolve the subsystem’s health. |
|
| yes | Additional resource which will be fetched and passed to |
|
| yes | Loader for popup content. If defined, a health item will be represented as a link which opens popup with given content. |
|
| yes | The title of the popover. |
|
| yes | Control plane topology for which the subsystem should be hidden. |
console.dashboards/overview/health/resource
Summary
Adds a health subsystem to the status card of Overview dashboard where the source of status is a K8s Resource.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The display name of the subsystem. |
|
| no | Kubernetes resources which will be fetched and passed to |
|
| no | Resolve the subsystem’s health. |
|
| yes | Loader for popup content. If defined, a health item will be represented as a link which opens popup with given content. |
|
| yes | The title of the popover. |
console.dashboards/overview/health/url
Summary
Adds a health subsystem to the status card of Overview dashboard where the source of status is a K8s REST API.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The display name of the subsystem. |
|
| no | The URL to fetch data from. It will be prefixed with base k8s URL. |
|
| no | |
Resolve the subsystem’s health. |
|
| yes |
Additional resource which will be fetched and passed to |
|
| yes |
Loader for popup content. If defined, a health item will be represented as a link which opens popup with given content. |
|
| yes |
console.dashboards/overview/inventory/item
Summary
Adds a resource tile to the overview inventory card.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model for |
|
| yes | Function which maps various statuses to groups. |
|
| yes | Additional resources which will be fetched and passed to the |
console.dashboards/overview/inventory/item/group
Summary
Adds an inventory status group.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The id of the status group. |
|
| no |
console.dashboards/overview/inventory/item/replacement
Summary
Replaces an overview inventory card.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model for |
|
| yes | Function which maps various statuses to groups. |
|
| yes | Additional resources which will be fetched and passed to the |
console.dashboards/overview/prometheus/activity/resource
Summary
Adds an activity to the Activity Card of Prometheus Overview Dashboard where the triggering of activity is based on watching a K8s resource.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Queries to watch |
|
| no | The action component. |
|
| yes | Function which determines if the given resource represents the action. If not defined, every resource represents activity. |
console.dashboards/project/overview/item
Summary
Adds a resource tile to the project overview inventory card.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model for |
|
| yes | Function which maps various statuses to groups. |
|
| yes | Additional resources which will be fetched and passed to the |
console.dashboards/tab
Summary
Adds a new dashboard tab, placed after the Overview tab.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | A unique tab identifier, used as tab link |
| ’home’ | ‘storage’` | no |
NavSection to which the tab belongs to |
|
| no |
console.file-upload
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Supported file extensions. |
|
| no | Function which handles the file drop action. |
console.flag
Summary
Gives full control over Console feature flags.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Used to set/unset arbitrary feature flags. |
console.flag/hookProvider
Summary
Gives full control over Console feature flags with hook handlers.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Used to set/unset arbitrary feature flags. |
console.flag/model
Summary
Adds new Console feature flag driven by the presence of a CRD on the cluster.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The name of the flag to set once the CRD is detected. |
|
| no | The model which refers to a |
console.global-config
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Unique identifier for the cluster config resource instance. |
|
| no | The name of the cluster config resource instance. |
|
| no | The model which refers to a cluster config resource. |
|
| no | The namespace of the cluster config resource instance. |
console.model-metadata
Summary
Customize the display of models by overriding values retrieved and generated through API discovery.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model to customize. May specify only a group, or optional version and kind. |
|
| yes | Whether to consider this model reference as tech preview or dev preview. |
|
| yes | The color to associate to this model. |
|
| yes | Override the label. Requires |
|
| yes | Override the plural label. Requires |
|
| yes | Customize the abbreviation. Defaults to All uppercase chars in the kind up to 4 characters long. Requires |
console.navigation/href
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | A unique identifier for this item. |
|
| no | The name of this item. |
|
| no | The link href value. |
|
| yes | The perspective ID to which this item belongs to. If not specified, contributes to the default perspective. |
|
| yes | Navigation section to which this item belongs to. If not specified, render this item as a top level link. |
|
| yes | Adds data attributes to the DOM. |
|
| yes | Mark this item as active when the URL starts with one of these paths. |
|
| yes | |
Insert this item before the item referenced here. For arrays, the first one found in order is used. |
|
| |
yes | Insert this item after the item referenced here. For arrays, the first one found in order is used. |
|
|
yes | if true, adds /ns/active-namespace to the end |
|
|
console.navigation/resource-cluster
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | A unique identifier for this item. |
|
| no | The model for which this nav item links to. |
|
| yes | The perspective ID to which this item belongs to. If not specified, contributes to the default perspective. |
|
| yes | Navigation section to which this item belongs to. If not specified, render this item as a top level link. |
|
| yes | Adds data attributes to the DOM. |
|
| yes | Mark this item as active when the URL starts with one of these paths. |
|
| yes | |
Insert this item before the item referenced here. For arrays, the first one found in order is used. |
|
| |
yes | Insert this item after the item referenced here. For arrays, the first one found in order is used. |
|
|
console.navigation/resource-ns
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | A unique identifier for this item. |
|
| no | The model for which this nav item links to. |
|
| yes | The perspective ID to which this item belongs to. If not specified, contributes to the default perspective. |
|
| yes | Navigation section to which this item belongs to. If not specified, render this item as a top level link. |
|
| yes | Adds data attributes to the DOM. |
|
| yes | Mark this item as active when the URL starts with one of these paths. |
|
| yes | |
Insert this item before the item referenced here. For arrays, the first one found in order is used. |
|
| |
yes | Insert this item after the item referenced here. For arrays, the first one found in order is used. |
|
|
console.navigation/section
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | A unique identifier for this item. |
|
| yes | The perspective ID to which this item belongs to. If not specified, contributes to the default perspective. |
|
| yes | Adds data attributes to the DOM. |
|
| yes | |
Insert this item before the item referenced here. For arrays, the first one found in order is used. |
|
| |
yes | Insert this item after the item referenced here. For arrays, the first one found in order is used. |
|
|
console.navigation/separator
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | A unique identifier for this item. |
|
| yes | The perspective ID to which this item belongs to. If not specified, contributes to the default perspective. |
|
| yes | Navigation section to which this item belongs to. If not specified, render this item as a top level link. |
|
| yes | Adds data attributes to the DOM. |
|
| yes | |
Insert this item before the item referenced here. For arrays, the first one found in order is used. |
|
|
console.page/resource/details
Summary
Adds new resource details page to Console router.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model for which this resource page links to. |
|
| no | The component to be rendered when the route matches. |
console.page/resource/list
Summary
Adds new resource list page to Console router.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model for which this resource page links to. |
|
| no | The component to be rendered when the route matches. |
console.page/route
Summary
Adds new page to Console router.Under the hood we use React Router.See https://v5.reactrouter.com/
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The component to be rendered when the route matches. |
|
| no | |
Valid URL path or array of paths that |
|
| yes |
The perspective to which this page belongs to. If not specified, contributes to all perspectives. |
|
| yes |
console.page/route/standalone
Summary
Adds new standalone page (rendered outside the common page layout) to Console router.Under the hood we use React Router.See https://v5.reactrouter.com/
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The component to be rendered when the route matches. |
|
| no | |
Valid URL path or array of paths that |
|
| yes |
console.perspective
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The perspective identifier. |
|
| no | The perspective display name. |
|
| no | The perspective display icon. |
|
| no | The function to get perspective landing page URL. |
|
| no | The function to get redirect URL for import flow. |
|
| yes | Whether the perspective is the default. There can only be one default. |
|
| yes | Default pinned resources on the nav |
|
| yes | The hook to detect default perspective |
console.project-overview/inventory-item
Summary
Adds a new inventory item into project overview page.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The component to be rendered. |
console.project-overview/utilization-item
Summary
Adds a new project overview utilization item.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The title of the utilization item. |
|
| no | Prometheus utilization query. |
|
| no | Convert prometheus data to human readable form. |
|
| yes | Prometheus total query. |
|
| yes | Prometheus request query. |
|
| yes | Prometheus limit query. |
|
| yes | Shows Top consumer popover instead of plain value |
console.pvc/alert
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The alert component. |
console.pvc/create-prop
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Label for the create prop action. |
|
| no | Path for the create prop action. |
console.pvc/delete
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Predicate that tells whether to use the extension or not. |
|
| no | Method for the PVC delete operation. |
|
| no | Alert component to show additional information. |
console.pvc/status
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Priority for the status component. Bigger value means higher priority. |
|
| no | The status component. |
|
| no | Predicate that tells whether to render the status component or not. |
console.redux-reducer
Summary
Adds new reducer to Console Redux store which operates on plugins.<scope>
substate.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The key to represent the reducer-managed substate within the Redux state object. |
|
| no | The reducer function, operating on the reducer-managed substate. |
console.resource/create
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model for which this create resource page will be rendered. |
|
| no | The component to be rendered when the model matches |
console.storage-provider
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | |
|
| no |
console.tab/horizontalNav
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model for which this provider show tab. |
|
| no | The page to be show in horizontal tab. It takes tab name as name and href of the tab |
|
| no | The component to be rendered when the route matches. |
console.telemetry/listener
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Listen for telemetry events |
console.topology/adapter/build
Summary
BuildAdapter contributes an adapter to adapt element to data that can be used by Build component
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no |
console.topology/adapter/network
Summary
NetworkAdpater contributes an adapter to adapt element to data that can be used by Networking component
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no |
console.topology/adapter/pod
Summary
PodAdapter contributes an adapter to adapt element to data that can be used by Pod component
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no |
console.topology/component/factory
Summary
Getter for a ViewComponentFactory
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Getter for a ViewComponentFactory |
console.topology/create/connector
Summary
Getter for the create connector function
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Getter for the create connector function |
console.topology/data/factory
Summary
Topology Data Model Factory Extension
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Unique ID for the factory. |
|
| no | Priority for the factory |
|
| yes | Resources to be fetched from useK8sWatchResources hook. |
|
| yes | Keys in resources containing workloads. |
|
| yes | Getter for the data model factory |
|
| yes | Getter for function to determine if a resource is depicted by this model factory |
|
| yes | Getter for function to reconcile data model after all extensions’ models have loaded |
console.topology/decorator/provider
Summary
Topology Decorator Provider Extension
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | |
|
| no | |
|
| no | |
|
| no |
console.topology/details/resource-alert
Summary
DetailsResourceAlert contributes an alert for specific topology context or graph element.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The ID of this alert. Used to save state if the alert shouldn’t be shown after dismissed. |
|
| no |
console.topology/details/resource-link
Summary
DetailsResourceLink contributes a link for specific topology context or graph element.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | |
Return the resource link if provided, otherwise undefined.Use ResourceIcon and ResourceLink for styles. |
|
| yes |
console.topology/details/tab
Summary
DetailsTab contributes a tab for the topology details panel.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | A unique identifier for this details tab. |
|
| no | The tab label to display in the UI. |
|
| yes | |
Insert this item before the item referenced here.For arrays, the first one found in order is used. |
|
|
console.topology/details/tab-section
Summary
DetailsTabSection contributes a section for a specific tab in topology details panel.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | A unique identifier for this details tab section. |
|
| no | The parent tab ID that this section should contribute to. |
|
| no | A hook that returns a component or null/undefined that will be renderedin the topology sidebar.SDK component: <Section title={}>… padded area |
|
| no | |
@deprecated Fallback if no provider is defined. renderNull is a no-op already. |
|
| |
yes | Insert this item before the item referenced here.For arrays, the first one found in order is used. |
| `string |
console.topology/display/filters
Summary
Topology Display Filters Extension
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | |
|
| no |
console.topology/relationship/provider
Summary
Topology relationship provider connector extension
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | |
|
| no | |
|
| no | |
|
| no |
console.user-preference/group
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | ID used to identify the user preference group. |
|
| no | The label of the user preference group |
|
| yes | ID of user preference group before which this group should be placed |
|
| yes | ID of user preference group after which this group should be placed |
console.user-preference/item
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | ID used to identify the user preference item and referenced in insertAfter and insertBefore to define the item order. |
|
| no | The label of the user preference |
|
| no | The description of the user preference. |
|
| no | The input field options used to render the values to set the user preference. |
|
| yes | IDs used to identify the user preference groups the item would belong to. |
|
| yes | ID of user preference item before which this item should be placed |
|
| yes | ID of user preference item after which this item should be placed |
console.yaml-template
Summary
YAML templates for editing resources via the yaml editor.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Model associated with the template. |
|
| no | The YAML template. |
|
| no | The name of the template. Use the name |
dev-console.add/action
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | ID used to identify the action. |
|
| no | The label of the action |
|
| no | The description of the action. |
|
| no | The href to navigate to. |
|
| yes | IDs used to identify the action groups the action would belong to. |
|
| yes | The perspective display icon. |
|
| yes | Optional access review to control visibility / enablement of the action. |
dev-console.add/action-group
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | ID used to identify the action group. |
|
| no | The title of the action group |
|
| yes | ID of action group before which this group should be placed |
|
| yes | ID of action group after which this group should be placed |
dev-console.import/environment
Summary
(not available)
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | Name of the image stream to provide custom environment variables for |
|
| no | List of supported image stream tags |
|
| no | List of environment variables |
console.page/resource/tab
Summary [DEPRECATED]
@deprecated - Use console.tab/horizontalNav
insteadAdds new resource tab page to Console router.
Properties
Name | Value Type | Optional | Description |
---|---|---|---|
|
| no | The model for which this resource page links to. |
|
| no | The component to be rendered when the route matches. |
|
| no | The name of the tab. |
|
| yes | The optional href for the tab link. If not provided, the first |
|
| yes | When true, will only match if the path matches the |
Adding a tab to the pods page
The following procedure adds a tab to the Pod Details page as an example extension to your plug-in.
Procedure
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 plug-in.</p>
);
}
Verification
- Visit a Pod page to view the added tab.
Build an image with Docker
To deploy your plug-in on a cluster, you need to build an image and push it to an image registry.
Procedure
Build the image with the following command:
$ docker build -t quay.io/my-repositroy/my-plugin:latest .
Optional: If you want to test your image, run the following command:
$ docker run -it --rm -d -p 9001:80 quay.io/my-repository/my-plugin:latest
Push the image by running the following command:
$ docker push quay.io/my-repository/my-plugin:latest
Deploy your plug-in on a cluster
After pushing an image with your changes to a registry, you can deploy the plug-in to a cluster.
Procedure
To deploy your plug-in to a cluster, instantiate your plug-in by running the following command:
$ oc process -f template.yaml \
-p PLUGIN_NAME=my-plugin \ (1)
-p NAMESPACE=my-plugin-namespace \ (2)
-p IMAGE=quay.io/my-repository/my-plugin:latest \ (3)
| oc create -f -
1 Update with the name of your plug-in. 2 Update with the namespace. 3 Update with the name of the image you created. This command runs a light-weight NGINX HTTP server to serve the assets for your plug-in.
|
Patch the Console Operator configuration to enable the plug-in by running the following command:
$ oc patch consoles.operator.openshift.io cluster --patch '{ "spec": { "plugins": ["my-plugin"] } }' --type=merge
Disabling your plug-in in the browser
Console users can use the disable-plugins
query parameter to disable specific or all dynamic plug-ins that would normally get loaded at run-time.
Procedure
To disable a specific plug-in(s), remove the plug-in you want to disable from the comma-separated list of plug-in names.
To disable all plug-ins, leave an an empty string in the
disable-plugins
query parameter.
Cluster administrators can disable plug-ins in the Cluster Settings page of the web console |