Appendix A. Dashboard Internals

Tungsten Dashboard uses a client/server architecture. A browser-based React client frontend connects via a websocket to a backend driven by a Jetty server. The backend application then connects to a Tungsten Cluster using a TCP session. To support these operations, the Tungsten 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 the 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 - A user login stores metadata for that token including the timestamp here. Using logout will purge this information and all previously issued tokens will be rejected 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 endpoint /api/v8/manager/cluster/topology. This information is used by the backend application to select a host for each 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! If you do, your changes may be lost. In case of invalid values in the file, validate the results returned by the API topology endpoint for the affected cluster.

Note

The clusters.json and users.json files contain encrypted values, and the Dashboard application expects these values to 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 values.yaml file.