Provides an extendable describer for kubernetes resources. Includes an angular directive for rendering an instance of a describer.
This is an early implementation and is subject to change.
The kubernetes describer is provided in the kubernetes-object-describer bower package.
To use the kubernetes-object-describer bower component in another project, run:
bower install kubernetes-object-describer --save
To use the describer service and directive include the dist/object-describer.js
. Make sure your angular app / module includes kubernetesUI
as a module dependency.
angular.module('exampleApp', ['kubernetesUI'])
To see a simple running example git clone this repo and run
npm install
bower install
grunt serve
This will install any required dependencies and then make the index.html
example available on http://localhost:9000
Using the existing describers:
<!-- Default generic describer -->
<kubernetes-object-describer resource="k8s-API-JSON-Object" more-details-link="optional/path/to/more/details.html"></kubernetes-object-describer>
<!-- Pod describer -->
<kubernetes-object-describer resource="k8s-API-JSON-Object" more-details-link="optional/path/to/more/details.html" kind="Pod"></kubernetes-object-describer>
<!-- Service describer -->
<kubernetes-object-describer resource="k8s-API-JSON-Object" more-details-link="optional/path/to/more/details.html" kind="Service"></kubernetes-object-describer>
<!-- ReplicationController describer -->
<kubernetes-object-describer resource="k8s-API-JSON-Object" more-details-link="optional/path/to/more/details.html" kind="ReplicationController"></kubernetes-object-describer>
Registering additional describers:
// Use the KubernetesObjectDescriber service to register additional kinds or custom templates for existing kinds
// kind - the kind of API object, ex: 'Pod'. You can specify custom kind names here like "MyCustomPod".
// templateURLForKind - URL for the template to use when this Kind is passed to the <kubernetes-object-describer> directive
// overwrite - by default registerKind will not let you re-register an already registered kind, to overwrite the existing
// template for a kind, pass overwrite=true
KubernetesObjectDescriber.registerKind(kind, templateURLForKind, overwrite)
A number of smaller directives have been made available to help with writing custom templates.
- kubernetes-object-describe-header - renders a simple header, currently just renders the Kind according to the resource object
- kubernetes-object-describe-footer - renders a simple footer, currently renders the optional more-details-link
- kubernetes-object-describe-labels - renders any labels found on the resource
- kubernetes-object-describe-annotations - renders any annotations found on the resource
- kubernetes-object-describe-metadata - renders basic metadata (name, namespace, creationTimestamp) as well as labels and annotations
- kubernetes-object-describe-containers - renders details about the array of containers passed to it
- kubernetes-object-describe-volumes - renders details about the array of volumes passed to it
The example theme used in index.html
is based on bootstrap, however bootstrap is not required as a bower dependency and you can change the theme however you want.
jQuery is not required as a dependency, but when it is available additional features will be turned on:
- collapsing long annotation values - when annotations have very long values they will be truncated and then can be clicked to expand
There are several enhancements being considered for future implementation.
- verbosity modes - terse/normal/verbose modes intended to work on different levels of screen real estate. Normal might fit into a right sidebar, whereas verbose would be a full page of detail.
- more describers - there are plenty of kubernetes Kinds that we don't have describers for yet
- sample theme improvements
Git clone this repo and run grunt serve
. While the server is running, any time changes are made to the JS or HTML files the build will run automatically. Before committing any changes run the grunt build
task to make sure dist/object-describer.js has been updated and include the updated file in your commit.