This project emulates a standalone repository hosting a sample dynamic plugin for OpenShift Console.
It is meant to serve as a reference for Console plugin developers and for testing dynamic plugin capabilities via end-to-end tests.
yarn build
to build the plugin, generating output todist
directoryyarn http-server
to start an HTTP server hosting the generated assets
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
The server runs on port 9001 with caching disabled and CORS enabled. Additional server options can be passed to the script, for example:
yarn http-server -a 127.0.0.1
See the plugin development section in Console Dynamic Plugins README for details on how to run Bridge using local plugins.
Just import what you need from @openshift-console/dynamic-plugin-sdk
ie
import { useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk';
Console dynamic plugins are supposed to be deployed via OLM operators. In case of demo plugin, we just apply a minimal OpenShift manifest which adds the necessary resources.
oc apply -f oc-manifest.yaml
Note that the Service
exposing the HTTP server is annotated to have a signed
service serving certificate
generated and mounted into the image. This allows us to run the server with HTTP/TLS enabled, using
a trusted CA certificate.
Once deployed on the cluster, demo plugin must be enabled before it can be loaded by Console.
To enable the plugin manually, edit Console operator
config and make sure the plugin's name is listed in the spec.plugins
sequence (add one if missing):
oc edit console.operator.openshift.io cluster
# ...
spec:
plugins:
- console-dynamic-foo
# ...
Following commands should be executed in Console repository root.
- Build the image:
docker build -f Dockerfile.plugins.demo -t quay.io/$USER/console-dynamic-foo .
- Run the image:
docker run -it -p 9001:9001 quay.io/$USER/console-dynamic-foo
- Push the image to image registry:
docker push quay.io/$USER/console-dynamic-foo
Update and apply oc-manifest.yaml
to use a custom plugin image.