3.3. Installing via Kubernetes using helm

Kubernetes installation via helm uses a declarative approach to configuring the Dashboard. To get started, you need to adjust the values.yaml or your custom yaml file to define settings before you run the installation script.

Declare the clusters:

Find the following line in the values.yaml file:

clusters: []

Replace the line with a configuration that matches your clusters. For example:

clusters: 
  - host: "db1.example.com"
    namespace: "dev"
    api-user: "sample-user"
    api-password: "<clear-text-password>"
    tcp-port: 11999
    api-port: 8090
    api-ssl: true
    ssl: true
    cert: "<base64-encoded-certificate>"
    api-cert: "<base64-encoded-certificate>"
    hostname-validation: true

You can add as many clusters as you'd like using the "- <cluster>" syntax.

Note

While in this file the passwords are clear text, they are encrypted using the DASHBOARD_SECRET either defined manually, or generated automatically during installation. Values within the deployed installation will be encrypted.

Declare the Application Configuration:

Next, adjust the application configuration as necessary. See Section A.3, “The values.yaml file” for more details on each setting. Note that the configs here are in camelCase while in the final JSON they're snake_case

config: 
  env: "production"
  version: "8.0.0"
  configPath: "/app/persistent/"
  logType: "console-edn"
  helm: true
  domain: ""  
  path: "" 
  port: 4090 
  ssl: false
  sslPort: 4091
  browserPort: 4090
  clustersConnectOnStart: false
  topologyStartupDiscover: false
  topologyCleanOnExit: false
  defaultRestPort: 8090 
  defaultTcpPort: 11999
  hostnameValidation: true
  restTimeout: 15000

In the configuration take note of the following 5 values: domain, port, browserPort, path and restTimeout.

  • If you leave the domain and path empty, you'll be prompted for them in the install.

  • port is the application's port that the webserver responds to, while browserPort is used in the base url for the browser.

  • Normally you don't need to change the application port but you might need to change the browserPort to match your Ingress settings.

  • For restTimeout consider increasing it for big clusters or clusters under heavy loads for a more reliable connection in the start-up phase. The indicated value is in milliseconds.

User Credentials:

Adjust the default user credentials or be prompted for a default user during installation. The install.pl script itself creates only one user, if you want multiple users define them here.

users: 
  - role: admin # currently only admin role is supported.
    username: jane-doe
    password: <clear-text-password>

Passwords in yaml file are provided as clear text, during installation they're encrypted and final users.json will have hashed passwords on the server.

Configure Ingress (if required):

Important

Dashboard does not install Ingress-Controllers by default! You must install the ingress controller yourself before installing the Dashboard. Dashboard only deploys an ingress resource to the cluster under it's own namespace. Without a controller this resource does nothing.

To enable Dashboard-specific ingress locate the following entries and adjust accordingly:

ingress:
  enabled: false # When true, creates dashboard ingress resource

  # You must create the IngressClass and then add it here.
  # Example of a controller: nginx see https://github.com/kubernetes/ingress-nginx for more information
  className: "" # ingressClassName ie. nginx

  # use config field's domain, path and port for ingress.
  # to fully control your setup set this to false and specify extraHosts.
  hostFromConfig: true

  # TLS config for ingress.
  # To use this create a secret with any name and add it here.
  # The secret must contain both base64 encoded certificate and the key as base64 encoded values.
  # See https://kubernetes.io/docs/concepts/services-networking/ingress/#tls for more
  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local
  • Change ingress.enabled to true if you want to create ingress resource

  • Add the className of your index controller, i.e. nginx

  • Update tls section with your tls secret and the Hosts field should match config.domain

Being Installation

To begin the installation for kubernetes execute the following:

shell> cd /opt/continuent/software/tungsten-dashboard-8.0.0-10
shell> ./install.pl -m kubernetes

The following example shows the output from running the installation and the prompts that will require answering:

shell> ./install.pl -m kubernetes

Please enter custom values YAML file [values.yaml]:

Please enter preferred admin user name: admin-user

Please enter a password for admin user: admin-password

Please enter the domain for your application without schema or port.
Domain for your application [127.0.0.1]: example.com

Please enter the dashboard server port [4090]:

The path is the part of the URL that comes after the domain.
For example, if your application is hosted at http://example.com/dashboard, the path is dashboard.
Please enter the path for your application [empty]:

WARNING: Ingress is currently not enabled!
Dashboard will not be accessible without port-forwarding from outside the cluster.
Do you want to proceed with the current configuration? [y/N]: y

WARNING: TLS is not configured in your ingress settings!
Running the dashboard without TLS encryption is not recommended for production use.
To enable TLS, modify values.yaml to include your TLS secret and domain configuration:

ingress:
  tls:
  - secretName: your-tls-secret
    hosts:
      - your.domain.com

Do you want to proceed with insecure configuration? [y/N]: y

With current settings your base url will be: http://example.com:4090
This is the url the browser will load the resources for the dashboard from.

Please input the container registry URL where Tungsten Dashboard image is stored (without a tag) [tungsten-dashboard]:

Please enter Tungsten Dashboard version tag [8.0.0]:

Current Kubernetes context is set to: arn:aws:eks:us-east-1:00000000000:example-cluster
Do you want to proceed with the currently selected Kubernetes context? [y/N]: y

Installing Tungsten Dashboard Helm chart...
NAME: tungsten-dashboard
LAST DEPLOYED: Mon Apr 14 16:43:52 2025
NAMESPACE: tungsten-dashboard
STATUS: deployed
REVISION: 1
Waiting for deployment to become ready...
deployment.apps/tungsten-dashboard condition met

Installation completed!

To uninstall current deployment, simply run 'helm uninstall tungsten-dashboard --namespace tungsten-dashboard'

Note

During this installation, the script will post yaml files to the cluster using the kubernetes syntax you provided via the helm installation logic. These yaml files are generated using the helm templating syntax fed by the values.yaml file.

Helm moves the values you give into the proper yaml file while kubernetes declares what yaml syntaxes and values in those syntaxes are available.

If you encounter issues during the installation start by inspecting the yaml posted to kubernetes and validating it against kubernetes documentation.

3.3.1. Uninstall

To uninstall Tungsten Dashboard, simply execute the following:

shell> helm uninstall tungsten-ui --namespace tungsten-ui

Additionally if you do not wish to keep the data from the dashboard run:

shell> kubectl -n tungsten-dashboard delete secret tungsten-dashboard-secret;
# check if tungsten-dashboard-vol exists.
shell> kubectl -n tungsten-dashboard get pvc;
# if it does, remove it with:
shell> kubectl -n tungsten-dashboard delete pvc tungsten-dashboard-vol;

Warning

Deleting or changing the secret without deleting the data will prevent users from logging in and the dashboard from making any connections, effectively locking you out of the system. If this happens to you remove the users.json file and restart the dashboard application. This will recreate the default user for you.