airshipit / airshipui Goto Github PK
View Code? Open in Web Editor NEWA Web UI for interacting with Airship-managed clusters
License: Apache License 2.0
A Web UI for interacting with Airship-managed clusters
License: Apache License 2.0
● Design and justification - airshipui running as a long running container
● Design and justification - Should it support multiple concurrent users
Related to #57
As a operator I need to ensure that any user is authenticated before he can access the Airshipui to access a particular Cluster and is restricted to do operations restricted to his role.
So a typical use case would be a tenant user authenticates to the airshipui and depending on his roles he is able to select only specific context (in the airshipui as dropdown list) and deploy or read artifacts restricted to those specific Cluster and nodes.
This also means there should be a mechanism to integrate the airshipui with the backend via some mechanism like Oath/Dex.
Need the ability to navigate through graphical representation of the topology expressed in the YAML files. This UI should represent the relationships that exist between the various components of the topology, and should offer some way of visualizing the customization and layers that are present therein.
Depends on #9
Description
As a consumer of the AirshipUI, I want it to be launchable as a single executable called airshipui
that starts up the Octant UI with all of the Airship specific plugins enabled. This should be done in such a way that subcommands could be added in the future airshipui <foo>
or airshipui help
. The default behavior for airshipui
should be to launch the Octant UI with the airship content loaded
Acceptance Criteria
airshipui
binary should support subcommands (such as help
or version
as a PoC)airshipui
run without and sub-command should launch the Octant UI. The Airship content may exist in separate plugins (which are separate) that may reside in a separate locationThis issue was migrated from AIR-172
Airshipui should have a mechanism to initiate co-located dashboards. I.E. Initiate dashboard process if, identified in the list of plugins, and proper information is found.
AirshipUI needs to integrate with airshipctl and its config structure.
A Kubernetes Etcd plugin on the UI that shall enable Operations to debug the environment by enabling user to get the value of a key in the cluster. This Plugin provide equivalency to what can be done via teh etcdctl command line tool.
Plugin logging seems to be swallowed by octant or otherwise not making it out of the plugins for console logging. We need to figure out:
We should have the ability to explore baremetal host definitions, add, and edit them directly in the Airship UI - namely BareMetalHost and Machine definitions (and possibly others). This should keep close to our philosophy that the YAML maintains our declared state so this simply operates on local YAML for the current site context with potentially some ability to incorporate some live state from the site by optionally reading existing CRDs in the site to enhance the editing process. It would require pushing/submitting that YAML to the site to effect any changes (through the standard flow).
See https://github.com/openshift-metal3/facet
This might be construed as a generic way of delivering CR’s to a site? Perhaps this is about integrating with airshipctl workflow?
We already have the normal CR visibility out of the box behavior from Octant
This issue was migrated from AIR-18
Develop a base Octant , tekton like interactive CR plugin , that will serve as the basis for all other Airship interactive CR capabilities.
Leverage Electron's ability to integrate with existing product dashboards to provide support for Logging, Monitoring & Alerting. Users will be able to launch these dashboards from AirshipUI. This would include such elements as Grafana, ElasticSearch, FluentD, etc. (each may get its own issue).
As a operator I should have the ability to execute the performance test against a deployed Target Cluster and compare the results.
The following benchmark test can be considered as scope with ability to add more as required :
Reference Links :
https://github.com/xridge/kubestone
https://github.com/kubernetes/perf-tests/tree/master/perfdash
https://github.com/vmware/weathervane
As database components become more align with operator framework, teh notion of expressing its configuration and intentions via CRD / CR will become the norm.
A Plugin or enhancements to this database CR, to introduce Database health management operationalizing is what this epic introduces.
Ability to interact with the database to :
Specifically common databases in the infrastructure such as :
The ability of a plugin to do this, might of course be impacted by the external exposure of the database.
As a prerequisite for developing the YAML explorer, we have to understand what that set of topology yaml documents looks like and how they will be inter-related. This task is really not specific to airshipui, and arguably should be a task for the airshipctl project.
It would be preferable to use GraphViz or some similar tool that permits the source for the diagram to be checked into the airshipui repo
It might be necessary to also consult the airship configuration in order to determine the parent directory in which the individual files are stored
Some useful links:
This was migrated from AIR-212 story and tasks.
As a user of airshipUI, I should be able to invoke the airshipui command using a superset of the command line options that are currently available on the underlying octant command. Currently the airshipui command exposes 6 command line options, two of which (--airshipconf and --kubeconfig) are implemented to integrate maximally with airshipctl. But there are about a dozen other octant options including --context, --namespace, that are not exposed.
The full list of these can be obtained by using 'octant --help'
Note that some options are described as "[DEV]" and others are not. All should be implemented, but the priority should lie with those that are not marked "[DEV]"
This was migrated from AIR-208
Users should be able to see the status of their sites, including the basics like workflow summaries, document revisions, and machine provisioning status, as well as the basic health of a site (remains to be seen whether this requires logging, monitoring, and alerting integration to report back or whether it is simpler than that).
This issue was migrated from AIR-59
Recommend we pull liberally from https://github.com/openshift-metal3/facet to build an interface to create, manage, and view baremetal machines in an environment.
This issue was migrated from AIR-56
As an operator I need to have the capability to view/modify site-level manifest so that I have a user-friendly view of rendered site documents and am able to customize site documents directly via the UI.
The operator will be able to view rendered manifests directly in the UI by phase. The rendered view would show the rendered documents with all kustomizations/replacements processed.
The operator would be allowed to make site-level changes to the rendered phase that would be written back to a new or existing site-level document for use in kustomization and/or replacement changes to rendering.
As a user I want to be able to use the UI to bootstrap a new cluster. This will use the airshipctl functionality to perform the various airshipctl bootstrap subcommands including
This issue was migrated from AIR-224
Clearly most of the functionality or configuration of the CNI is achieved via CRD's.
Which implies we have the ability to identify NEtwork Policies etc via the standard ui functionality.
Tigera has introduced a UI component and an API Server component
This issue is the desired to either :
Expose CNI operation management from the UI.
In example do we want to observer and interact with NetworkAttached Definitions , separate from treating them like a normal CRD?.
Are there operations or audit-able functzonlality we can achieve via this UI.
Of clear interest will be troubleshooting abilities such as :
https://www.tigera.io/tigera-products/visibility-and-troubleshooting/
Argo UI is currently an iframe plugin. This has significant hurdles to being able to properly render an iframe across real or virtual network segments. It should be reworked to allow for a more portable utilization of the web standards.
Identify Openstack GO library that can be used to build Openstack Plugin
Related to #22
How do we manage configuration amongst plugin?
Need to define and design the relationship between these different configuration aspects :
Using the interactive CR framework developed in #41, provide visibility into deployment activities via AirshipUI. These may include the following:
Similar to the argo-ui plugin we would like to create a Nagios plugin to integrate its dashboard into airshipui
UI for Openstack will enable Operations to trigger a well defined command set for Compute, Network, Identity, Image, Block Storage, Queueing service APIs together from within the UI .
Some examples of things we might want to allow them to do :
In general the ask is for a plugin that integrates AirshipUI with Openstack API's, so we can then rationalize what explicit . functionality we want to expose via it.
Stories for this Epic:
Improve the README to explain the purpose of Airship UI.
Provide an authentication mechanism that allows users to sign on once & have access to the various integrated dashboards which can be launched from AirshipUI (e.g. LMA dashboards).
AirshipUI should be able to support one or more authentication mechanisms. These may include OAuth, basic authentication & cookie based authentication (may need to further break each one out into its own issue).
There should also be an option to not have authentication enabled.
Similar to the argo-ui plugin we would like to create a Kibana plugin to integrate its dashboard into airshipui
Milestone: alphav1
Besides the Kubernetes storage artifacts themselves which the Overview plugin addresses for the most part. Some gaps need to be addressed.
Specifically this issue is about going beyond.
For something like CEPH how can we allow for this functionality :
Sunny day operational activities such as :
Octant allows for the starting of the binary without popping the browser:
$ octant --disable-open-browser
2020-01-29T21:14:16.172Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "deployment/configuration", "module-name": "overview"}
2020-01-29T21:14:16.172Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/containerEditor", "module-name": "overview"}
2020-01-29T21:14:16.172Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/serviceEditor", "module-name": "overview"}
2020-01-29T21:14:16.172Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/startPortForward", "module-name": "overview"}
2020-01-29T21:14:16.172Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/stopPortForward", "module-name": "overview"}
2020-01-29T21:14:16.172Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/commandExec", "module-name": "overview"}
2020-01-29T21:14:16.172Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/deleteTerminal", "module-name": "overview"}
2020-01-29T21:14:16.172Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "octant/deleteObject", "module-name": "configuration"}
2020-01-29T21:14:16.198Z INFO plugin/manager.go:397 registered plugin "argo-ui" {"plugin-name": "argoui", "cmd": "/root/.config/octant/plugins/argoui", "metadata": {"Name":"argo-ui","Description":"Argo UI version e93fe60","Capabilities":{"IsModule":true}}}
2020-01-29T21:14:16.198Z INFO plugin/manager.go:405 plugin supports navigation {"plugin-name": "argoui"}
2020-01-29T21:14:16.198Z INFO dash/dash.go:391 Using embedded Octant frontend
2020-01-29T21:14:16.204Z INFO dash/dash.go:370 Dashboard is available at http://127.0.0.1:7777
Airship UI does not which results in an error showing when you have to tunnel the connection over ssh for the airshipui:
$ bin/airshipui
2020-01-29T21:15:44.246Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/deleteTerminal", "module-name": "overview"}
2020-01-29T21:15:44.246Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "deployment/configuration", "module-name": "overview"}
2020-01-29T21:15:44.246Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/containerEditor", "module-name": "overview"}
2020-01-29T21:15:44.246Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/serviceEditor", "module-name": "overview"}
2020-01-29T21:15:44.247Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/startPortForward", "module-name": "overview"}
2020-01-29T21:15:44.247Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/stopPortForward", "module-name": "overview"}
2020-01-29T21:15:44.247Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "overview/commandExec", "module-name": "overview"}
2020-01-29T21:15:44.247Z INFO module/manager.go:79 registering action {"component": "module-manager", "actionPath": "octant/deleteObject", "module-name": "configuration"}
2020-01-29T21:15:44.275Z INFO plugin/manager.go:397 registered plugin "argo-ui" {"plugin-name": "argoui", "cmd": "/root/.config/octant/plugins/argoui", "metadata": {"Name":"argo-ui","Description":"Argo UI version e93fe60","Capabilities":{"IsModule":true}}}
2020-01-29T21:15:44.275Z INFO plugin/manager.go:405 plugin supports navigation {"plugin-name": "argoui"}
2020-01-29T21:15:44.276Z INFO dash/dash.go:391 Using embedded Octant frontend
2020-01-29T21:15:44.284Z INFO dash/dash.go:370 Dashboard is available at http://127.0.0.1:7777
2020-01-29T21:15:44.284Z WARN dash/dash.go:374 unable to open browser: exec: "xdg-open": executable file not found in $PATH
github.com/vmware-tanzu/octant/pkg/dash.(*dash).Run
/go/src/github.com/vmware-tanzu/octant/pkg/dash/dash.go:374
github.com/vmware-tanzu/octant/pkg/dash.Run.func1
/go/src/github.com/vmware-tanzu/octant/pkg/dash/dash.go:203
Using the interactive CR framework developed in #41, provide visibility into deployment status via AirshipUI. These may include the following:
Users should have the ability to execute the various phase commands via AirshipUI.
The current command set includes: phase apply & phase render.
Similar to the argo-ui plugin we would like to create a Grafana plugin to integrate its dashboard into airshipui
As a user of airshipUI, I need a way to obtain the binary. This epic will have stories to ensure the multiple mechanisms to deliver airshipui as a binary are in place.
A Developer that takes on these stories can create the individual stories and their details.
curl -LO https://.../airship/airshipui/release/release/v2.0/bin/linux/amd64/airshipui
sudo apt-get install airshipui
This is the airshipUI equivalent of AIR-202
The original though of taking kustomize render documents, and producing a topology is not feasible without extending some of the core kustomize notions.
These Epic proposes an alternative Topology Manager notion .
There will be 2 Topology that will live side by side.
Topology 1 - _Airshipctl Phase Bundle Kubernetes View _
will represent the document set associated with an airshipctl phase, and represent them as a Kubernetes artifact topology.
Cluster --> HAs Namespaces --> Have Kind --> Have Groups--> have an Artifact
Topology 2 - Airshipctl Phase Bundle Source Yaml View _
represent the document structure obtained by navigating through the resources defined by the airshipctl phase entry point kustomization.yaml.
As an AirshipUI developer, I want a basic airship branding style to be part of the airship plugin that I can override in my own corporate packaging if desired. This should include putting the airship logo and title in the UI and at least a prototype of a different color scheme (the default can be the baseline Octant branding)
Acceptance Criteria
This issue was migrated from AIR-175
I75d55dc9842ca03453be28d0b6bab9b7dfc63549 made a change to use Client.List to retrieve the argo-ui endpoint to avoid a grpc server error. With the closing of vmware-archive/octant#540 due to vmware-archive/octant#643 we can make that change back and simplify that code.
attempting to run the default build on windows does not work correctly:
C:\aic\airshipui>bin\airshipui help
'bin\airshipui' is not recognized as an internal or external command,
operable program or batch file.
If I use cygwin I can execute the airshipui binary but it does not find the kube config even when specified on the command line:
$ bin/airshipui --kubeconfig /cygdrive/c/Users/as3525/kube/config
2020-02-11T09:01:08.634-0600 ERROR commands/dash.go:109 dashboard failed {"err": "failed to init cluster client: invalid configuration: no configuration has been provided"}
github.com/vmware-tanzu/octant/internal/commands.newOctantCmd.func1.2
C:/aic/octant/internal/commands/dash.go:109
Ideally this would be cross compiled so that it is nativly executable on windows much in the same way that octant is.
This plugin shall allow access to services running on each compute node. Operator personnel should be able to get the appropriate data from a host by specifying the node and respective service command within the local cluster.
This plugin shall allow access to following service utilities on the hosts , but potentially this framework or plugin should be extendable to add other functionality.
Operators using these plugin should be able to :
Support Sunny day scenario such as :
Support Rainy day scenario
As a tenant-admin (and other tenant users) I should have the ability to manage the tenant resources :
As an operator using the Airship UI, I would like a view that shows a tree of YAML documents associated to a phase so that I can get a complete view of the YAML document types, composites, and functions, etc. associated to the phase. This view would be an entry point into doing a direct edit to the YAML files.
This view would provide visibility into the kustomize configuration for a specified phase by traversing the kustomize structure. The tree traversal should probably be provided by the airshipctl module.
This view could also provide viewing into the image builder configuration for the site depending upon how that is implemented in the image builder.
Document files can be edited directly on the file system and then pushed to a repo by the user.
With the merging of vmware-archive/octant#645 there is now a possibility of testing the argoui plugin route handler function which was removed in e384d17.
A sample plugin with tests was created as a part of the issue above which can be drawn from.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.