|
| 1 | +# Kubernetes Dashboard Design Sprint (Łódź, Poland, 23 Mar 2016) |
| 2 | + |
| 3 | +## People |
| 4 | +@bryk, @cheld, @digitalfishpond, @floreks, @maciaszczykm, @olekzabl, @zreigz |
| 5 | + |
| 6 | +## Goals |
| 7 | +Sketch the directions of the development of the UI to achieve: |
| 8 | +* scalability for the variety of types of K8s objects we want to handle |
| 9 | +(currently: replication controllers & pods; |
| 10 | +desired: replica sets, daemon sets, container, nodes, volumes, secrets, deployments etc.) |
| 11 | +* scalability for the number of such objects |
| 12 | +(currently: cards are suitable for <20 objects; desired: show >100 pods in a nice way) |
| 13 | +* good UX for various use cases |
| 14 | +(monitor, debug, deploy, explore) |
| 15 | +* more aware about namespaces |
| 16 | + |
| 17 | +## Agenda |
| 18 | +* agree on the meeting’s goals |
| 19 | +* split into 3 groups - propose a general UX vision - discuss them together, unify |
| 20 | +* split again - sketch the system in more detail - discuss, unify |
| 21 | +* split once more - sketch a chosen page, in yet more detail - discuss |
| 22 | +* decide when and how to publish the results |
| 23 | + |
| 24 | +## Decisions |
| 25 | + |
| 26 | +### General navigation |
| 27 | +* constant, basic-purpose navigation menu on the left, containing: |
| 28 | + - items describing important _classes_ (coarser than _types_) of objects e.g. “apps”, “services”, “config” |
| 29 | + - under them, sub-items describing _types_ of objects |
| 30 | + - possibly, other special buttons, e.g. “resource explorer” |
| 31 | + - possibly, minimizable |
| 32 | + |
| 33 | +* context-dependent action bar on the top (below the main “K8s” bar) |
| 34 | + - buttons for basic actions, e.g. “create”, “edit”, “delete” |
| 35 | + |
| 36 | +* namespace switcher on the main “K8s” bar |
| 37 | + - single namespace / all namespaces / multi-choice / filter |
| 38 | + - shall it be visible also on the object details page? |
| 39 | + |
| 40 | +### Cards |
| 41 | +* will be generally replaced by table rows |
| 42 | +* possibly thicker to contain few more data items and/or some graphs |
| 43 | +* much more clear sorting; sort triggered by clicking on column name |
| 44 | +* easier pagination |
| 45 | + |
| 46 | +### Home page |
| 47 | +* does no more list all objects (or RCs) in the cluster |
| 48 | +* instead, it shows: |
| 49 | + - important messages (errors/warnings/suggestions) |
| 50 | + - a few selected objects (last visited/most visited/most important) |
| 51 | + |
| 52 | +### Details page of an object |
| 53 | +* general requirements: |
| 54 | + - has possibly (but reasonably) unique design across various object types |
| 55 | + - allows convenient navigation to all _directly related_ objects; |
| 56 | +by this we mean e.g. that a pod shows links to all volumes it uses, and conversely, a volume shows links to all pods using it |
| 57 | + - contains a number of sections (described below); |
| 58 | +some of them may be moved to other tabs if everything does not fit in one page |
| 59 | +(e.g. we will need several tabs for RCs, but not for secrets) |
| 60 | + |
| 61 | +* section (main tab): a brief description of the object status |
| 62 | + - for a simple object, this contains all its properties |
| 63 | + - for a more complex one, this contains most important properties, while all properties are gathered in another tab of the page |
| 64 | + |
| 65 | +* section (main tab): visual summaries for all directly related objects (aggregated by type) |
| 66 | + - example: for a RC, these could be activity graphs of all involved pods, volumes, services etc. |
| 67 | + |
| 68 | +* section (main tab, bottom): navigation links to directly related objects |
| 69 | + - grouped by type |
| 70 | + - each type is headed by a user-friendly description of type, and of the relation to the current object (e.g. '_volumes mounted to_ this pod', '_pods mounting_ this volume', etc.) |
| 71 | + - limited to e.g. 10 top items, to make them all fit in one page |
| 72 | +(this has the form of a table, so clicking column names allows adjusting the meaning of “top”) |
| 73 | + - if there are more related objects of some type, we provide a link to the list of all of them (see below) |
| 74 | + |
| 75 | +* other sections (main or additional tab): history, logs, (more?) |
| 76 | + |
| 77 | +### Summary page for objects of type X |
| 78 | +* can be: |
| 79 | + - global (with namespace restriction applied), reachable by left menu panel |
| 80 | + - scoped (all objects of type X related to object O), reachable from O details page |
| 81 | +* similar visual design to the object details page |
| 82 | +* upper section: general metrics of involved objects |
| 83 | +* lower section: list of all involved objects, tabularized |
| 84 | + |
| 85 | +### Supplementary ideas, questions etc. |
| 86 | +* resource explorer |
| 87 | + - goal: give a larger-scale insight into cluster structure (beyond “directly related” links) |
| 88 | + - shall easily support filtering |
| 89 | + - two considered views: |
| 90 | + - “filebrowser view”: very compact but difficult to model all relations in a cluster |
| 91 | + (a volume may have many pods mounting it as “parents”; network communication between pods is not at all a “parent-child-sibling” relation) |
| 92 | + - “graph visualization” |
| 93 | + - in any view, exploring may be enhanced by showing an additional details preview side-by-side |
| 94 | + |
| 95 | +* error messaging policy |
| 96 | +On the details page of a RC, do we want to show that 3 out of 100 its volumes are broken? |
| 97 | +Is this important enough? Generally, what is sufficiently important? How do we decide on this? |
| 98 | + |
| 99 | +## Images |
| 100 | + |
| 101 | + |
| 102 | + |
| 103 | + |
0 commit comments