Appendix A. Dashboard Internals

Tungsten Dashboard uses a Jetty server that connects to a browser React frontend via a websocket. On the backend side, the application connects to clusters via a TCP connection. To support these operations Dashboard has three configuration files: config.json, users.json and clusters.json. These files are expected to be mounted to a path /app/persistent/ when production mode is active or in the resources/ directory if application is in any other mode

To explain the contents of the resources / persistent directory:

  • config.json - this file houses the main application configuration such as domain, port, ssl settings, startup actions and more. All fields in the file can be overridden with environment variables.

  • clusters.json - houses a json array that contains the details of the first connection you make to any given cluster you add to the Dashboard. It includes port, ssl settings, base64 encoded certificates and encrypted username and password for the rest api.

  • users.json - Contains username, email and password hash for all the dashboard users.

  • dynamic/tokens.edn - using the user credentials stores some data about the last login for a token here. Using logout will alter this information and allow the logout to reject all previously issued tokens afterwards. Please DO NOT alter this file by hand!

  • dynamic/clusters.edn - The map in this file is the result of the rest api call to clusters's /api/v8/manager/cluster/topology end-point. This information is used by the backend application to select a host for every cluster service. The strings placed under each cluster in the array are expected to all be valid fully qualified domain names that the Dashboard can connect to. Please DO NOT alter this file by hand! as your changes may be lost. In case of invalid values in the file, check the return results of the topology end point for the affected cluster.

Note

clusters.json and users.json file contain encrypted values, the Dashboard runtime expects these values to always be encrypted. Inputting plain values into the encrypted fields will cause errors in the application. If you want to add clusters or users to a running Dashboard, please do so through the user interface. Or through helm installation's values.yaml file.