From 769e1b458dbcc2d429ceee3602040baa542b3aa6 Mon Sep 17 00:00:00 2001 From: "Schiefelbein, Andrew" Date: Wed, 5 Aug 2020 11:01:35 -0500 Subject: [PATCH] Update documentation for proxies and improved diagrams Also removed some of the older no longer relevant docs Change-Id: Ic75e70c2ff008725971e6395a8286a11d1646ed2 --- docs/img/proxy.jpg | Bin 0 -> 26695 bytes docs/img/sequence.jpg | Bin 38237 -> 37575 bytes docs/source/developers.md | 44 ++++++-------------------------------- 3 files changed, 6 insertions(+), 38 deletions(-) create mode 100755 docs/img/proxy.jpg diff --git a/docs/img/proxy.jpg b/docs/img/proxy.jpg new file mode 100755 index 0000000000000000000000000000000000000000..bff94132fba39c9da1a4c03b704801ec82b30353 GIT binary patch literal 26695 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 WSBrxE@=ze;^qQCcX$r)%k^cvg^aO1H literal 0 HcmV?d00001 diff --git a/docs/img/sequence.jpg b/docs/img/sequence.jpg index 89eb2b7b930eaabcd29783782ec07aa71e8fd8a9..cc5960163babc232dbbc4b17b6cdf1819f238bdb 100755 GIT binary patch delta 26729 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 diff --git a/docs/source/developers.md b/docs/source/developers.md index 7d0bd1b..a83b4f9 100644 --- a/docs/source/developers.md +++ b/docs/source/developers.md @@ -10,37 +10,15 @@ Clone the Airship UI repository and build. git clone https://opendev.org/airship/airshipui cd airshipui make - make install-npm-modules # Note running behind a proxy can cause issues, notes on solving is in the Appendix make examples # (optional) - make install-octant-plugins # (if running with octant) **NOTE** Make will install node.js v12 into your tools directory and will use that as the node binary for the UI testing and launching. - Run the airshipui binary ./bin/airshipui -# Running on a separate client & server -For development purposes it could be advantageous to split the webservice and the UI across 2 machines. - -## To start the webservice on a remote system without starting the ui - - bin/airshipui --headless - -This will require you to tunnel the connection to the remote machine: - - ssh -L 8080:localhost:8080 @ - -## To start the UI to attach to a remote machine - - bin/airshipui --remote - -## Running the webservice on a remote machine with plugins -The plugins can run on the remote system but you will need to add additional SSH tunnels to the machine in order for it to work. -The plugins can also run locally but the remote server will still need the definition on the remote system to notify the UI that the plugins are available. - # Authentication ## Pluggable authentication methods The AirshipUI is not designed to create authentication credentials but to have them supplied to it either by a configuration or by an external entity. The expectation is that there will be an external URL that will handle authentication for the system which may need to be modified or created. The endpoint will need to be able to forward a [bearer token](https://oauth.net/2/bearer-tokens/), [basic auth](https://en.wikipedia.org/wiki/Basic_access_authentication) or cookie data to the Airship UI backend service. @@ -67,22 +45,6 @@ go run examples/authentication/main.go + The example auth server id is: airshipui + The example auth server password is: Open Sesame! -# Plugins -## Octant -[Octant](https://github.com/vmware-tanzu/octant) is a tool for developers to understand how applications run on a Kubernetes cluster. It aims to be part of the developer's toolkit for gaining insight and approaching complexity found in Kubernetes. Octant offers a combination of introspective tooling, cluster navigation, and object management along with a plugin system to further extend its capabilities. - -Octant needs to be pointed to a Kubernetes Cluster. For development it is recommended to use [Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/) - -### How to get and build Octant -If you are going to do serious Octant development you will need to adhere to [Octant's Hacking Guide](https://github.com/vmware-tanzu/octant/blob/master/HACKING.md) which includes information on how to build Octant and the steps to push changes to them. - -### Running the example -Build the octant plugin executable -``` -make install-octant-plugins -``` -Run the octant binary and the plugin should show "Hello World just some text on the page" under the http://127.0.0.1:7777/#/airshipui-example-plugin url. - ## Behind the scenes ### Communication with the backend @@ -93,6 +55,12 @@ The UI will initiate the websocket and request data. The backend uses a functio ### AirshipUI interaction ![AirshipUI Interactions](../img/sequence.jpg "AirshipUI Interactions") +### Communication with the dashboards +Dashboards may or may not be generally available for end users based on the cluster the AirshipUI is deployed to. If access to the endpoint is controlled in a way that is not easy to manipulate or if a Single Sign On approach is necessary the AirhshipUI provides the ability to proxy the targeted dashboard. + +### AirshipUI proxy interaction +![AirshipUI Interactions](../img/proxy.jpg "AirshipUI Interactions") + ## Appendix ### Minikube