提交 63b8327f 编写于 作者: A Ajat Prabha 提交者: Kubernetes Prow Robot

Add docs for plugin development (#4276)

* add docs for plugin development

* fix typo

* Update README.md
上级 91fbf44a
......@@ -27,6 +27,7 @@
* [Code conventions](developer/code-conventions.md)
* [Text conventions](developer/text-conventions.md)
* [Internationalization](developer/internationalization.md)
* [Plugins](plugins/README.md)
----
_Copyright 2019 [The Kubernetes Dashboard Authors](https://github.com/kubernetes/dashboard/graphs/contributors)_
# Plugin Docs
* [Installation](#installation)
* [Compiling Plugins](#compiling-plugins)
* [Registering Plugin](#registering-plugin)
* [Creating ConfigMap](#creating-configmap)
### Installation
To enable plugin support in the dashboard you must register a custom [CRD](../../aio/test-resources/plugin-crd.yml) in your cluster.
```
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/test-resources/plugin-crd.yml
```
### Compiling Plugins
In order to take advantage of AOT compilation, sharing the code across plugins and not ship the core Angular packages with the plugin bundle, there is a custom build process to compile the plugins.
You can clone this repository and checkout to [`plugin/base`](https://github.com/kubernetes/dashboard/tree/plugin/base) branch. The build process is specified under [`builders`](https://github.com/kubernetes/dashboard/tree/plugin/base/builders) directory.
On this branch, you can compile the plugin with following command
```
ng build plugin && ng build --project custom-plugin --prod --modulePath=k8s-plugin#PluginModule --pluginName=k8s-plugin --outputPath=./dist/bundle
ng build --project custom-plugin --prod --modulePath=./plugin1/plugin1.module#Plugin1Module --pluginName=plugin1 --sharedLibs=k8s-plugin --outputPath=./dist/bundle
```
The key thing here is that we specify the `custom-plugin` project in the `angular.json` to use our custom builder. Make sure to keep the config similar when developing your own plugins.
### Registering Plugin
Once the custom CRD is registered we can now create [instances](../../aio/test-resources/plugin-test.yml) of the CRD which will hold the spec for plugin.
```
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/test-resources/plugin-test.yml
```
> Note: The backend reads the compiled plugin source from a ConfigMap and we need to create that also.
### Creating ConfigMap
We can now create config-maps to hold the compiled plugin source code.
```
kubectl create configmap k8s-plugin-src --from-file=./dist/bundle/k8s-plugin.js
kubectl create configmap plugin1-src --from-file=./dist/bundle/plugin1.js
```
After following all the above steps, your new plugin should be available in the dashboard.
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册