Install
Install the Solo UI alongside your service mesh in one cluster or across a multicluster service mesh.
The Solo UI is an alpha feature in version 1.30. Alpha features are likely to change, are not fully tested, and are not supported for production. For more information, see Solo feature maturity.
This feature requires a Premium- or Enterprise-level license for Solo Enterprise for Istio. Contact your account representative to obtain a valid license.
The Solo UI deploys alongside your Istio environment in single or multicluster environments, and can discover existing Istio installations across clusters and infrastructure providers. The UI works with both ambient and sidecar service meshes, whether you use community Istio images or Solo distributions of Istio.
Single cluster
Deploy the Solo UI alongisde your service mesh in one cluster.
If you have not already, install an ambient mesh in your cluster and deploy apps to the mesh.
Save the following details in environment variables.
SOLO_UI_VERSION: The Solo UI version. This example uses the latest version. You can find other versions in the version reference.cluster1: The name of the Kubernetes or OpenShift cluster where you deployed an ambient mesh.SOLO_ISTIO_LICENSE_KEY: Your Premium- or Enterprise-level license key for Solo Enterprise for Istio. If you do not have one, contact an account representative. If you prefer to specify license keys in a secret instead, see Licensing.
export SOLO_UI_VERSION=0.4.2 export cluster1=<cluster_name> export SOLO_ISTIO_LICENSE_KEY=<license_key>Create the
solo-enterprisenamespace and label it for inclusion in the ambient mesh.kubectl create namespace solo-enterprise kubectl label namespace solo-enterprise istio.io/dataplane-mode=ambientInstall the UI. The following options enable all settings that are required for a single-cluster installation. To see all possible fields for the Helm chart, review the Helm values reference.
helm upgrade -i solo-management \ oci://us-docker.pkg.dev/solo-public/solo-enterprise-helm/charts/management \ -n solo-enterprise \ --version ${SOLO_UI_VERSION} \ --set cluster=${cluster1} \ --set licensing.licenseKey=${SOLO_ISTIO_LICENSE_KEY} \ --set oidc.issuer="" \ --set products.mesh.enabled=trueVerify that the UI component pods have a status of
Running.kubectl get po -n solo-enterprise- The
telemetry-collectorpod runs the OpenTelemetry (OTel) collector that scrapes Istio metrics, collects traces and events, and writes all telemetry data to ClickHouse. - The
uipod runs five containers: the UI backend and frontend, the tunnel server for multicluster connectivity, a dedicated OTel collector for Kubernetes object snapshots, and a built-in identity provider. For a description of each container, see Architecture. - The
clickhousepod runs a ClickHouse database for local data storage.
NAME READY STATUS RESTARTS AGE solo-enterprise-telemetry-collector-0 1/1 Running 0 4s solo-enterprise-ui-76c85c7d6b-xftcj 5/5 Running 0 4s solo-management-clickhouse-shard0-0 1/1 Running 0 4s- The
Launch the Solo UI to evaluate the health of your service mesh.
- Get the IP address or hostname for the
solo-enterprise-uiservice.export UI_ADDRESS=http://$(kubectl get svc -n solo-enterprise solo-enterprise-ui -o jsonpath="{.status.loadBalancer.ingress[0]['hostname','ip']}") echo ${UI_ADDRESS} - Open the UI on the IP address or hostname in your browser.
open ${UI_ADDRESS}
- Get the IP address or hostname for the
Multicluster
Deploy the UI management components into one cluster, and the UI relay components into one or more connected clusters in the multicluster mesh.
If you have not already, you must first install a multicluster ambient mesh, deploy apps to the mesh, and optionally make the app services available across your clusters.
Save the names and kubeconfig contexts of each cluster. This guide uses two clusters as an example. You install the UI management components into
cluster1and the relay components intocluster2.export cluster1=<cluster1_name> export context1=<cluster1_context> export cluster2=<cluster2_name> export context2=<cluster2_context>Save the following details in environment variables.
SOLO_UI_VERSION: The Solo UI version. This example uses the latest version. You can find other versions in the version reference.SOLO_ISTIO_LICENSE_KEY: Your Premium- or Enterprise-level license key for Solo Enterprise for Istio. If you do not have one, contact an account representative. If you prefer to specify license keys in a secret instead, see Licensing.
export SOLO_UI_VERSION=0.4.2 export SOLO_ISTIO_LICENSE_KEY=<license_key>Install the UI
managementchart in one cluster. The following options enable all settings that are required for a minimum management component installation. To see all possible fields for the Helm chart, review the Helm values reference.helm upgrade -i solo-management \ oci://us-docker.pkg.dev/solo-public/solo-enterprise-helm/charts/management \ -n solo-enterprise --create-namespace \ --kube-context ${context1} \ --version ${SOLO_UI_VERSION} \ --set cluster=${cluster1} \ --set licensing.licenseKey=${SOLO_ISTIO_LICENSE_KEY} \ --set oidc.issuer="" \ --set products.mesh.enabled=trueVerify that the UI component pods have a status of
Running.kubectl get po -n solo-enterprise --context ${context1}- The
telemetry-collectorpod runs the OpenTelemetry (OTel) collector that scrapes Istio metrics, collects traces and events, and writes all telemetry data to ClickHouse. - The
uipod runs five containers: the UI backend and frontend, the tunnel server for multicluster connectivity, a dedicated OTel collector for Kubernetes object snapshots, and a built-in identity provider. For a description of each container, see Architecture. - The
clickhousepod runs a ClickHouse database for local data storage.
NAME READY STATUS RESTARTS AGE solo-enterprise-telemetry-collector-0 1/1 Running 0 4s solo-enterprise-ui-76c85c7d6b-xftcj 5/5 Running 0 4s solo-management-clickhouse-shard0-0 1/1 Running 0 4s- The
Install the UI
relaychart incluster2. The following options enable all settings that are required for a minimum relay component installation. Note that the global hostnames of the tunnel server and telemetry gateway services, which are created for you by default, are included so that relay components in other clusters of the multicluster mesh can connect to the management components. To see all possible fields for the Helm chart, review the Helm values reference.helm upgrade -i solo-relay \ oci://us-docker.pkg.dev/solo-public/solo-enterprise-helm/charts/relay \ -n solo-enterprise --create-namespace \ --kube-context ${context2} \ --version ${SOLO_UI_VERSION} \ --set cluster=${cluster2} \ --set tunnel.fqdn=solo-enterprise-ui.solo-enterprise.mesh.internal \ --set tunnel.port=9000 \ --set telemetry.fqdn=solo-enterprise-telemetry-gateway.solo-enterprise.mesh.internalVerify that the relay and telemetry collector pods have a status of
Running.kubectl get po -n solo-enterprise --context ${context2}- The
relaypod runs the tunnel client that connects to the tunnel server in the management cluster. - The
telemetry-collectorpod collects data in the cluster to send to the OTel gateway in the management cluster.
NAME READY STATUS RESTARTS AGE solo-enterprise-relay-5d7f668848-h456h 2/2 Running 0 13s solo-enterprise-telemetry-collector-0 1/1 Running 0 13s- The
Launch the Solo UI to evaluate the health of your service mesh.
Get the external IP address or hostname for the
solo-enterprise-uiservice.export UI_ADDRESS=http://$(kubectl get svc -n solo-enterprise solo-enterprise-ui --context ${context1} -o jsonpath="{.status.loadBalancer.ingress[0]['hostname','ip']}") echo ${UI_ADDRESS}Open the UI on the IP address or hostname in your browser.
open ${UI_ADDRESS}
Next
Explore the UI further to review your Istio workloads, traffic flows, resources, and more.
For help and support, check out the following resoures.
- Talk to an expert to get advice or build out a proof of concept.
- Join the Solo.io community slack.
- Try out one of the Solo labs.
- Check out the Solo open source community commitments and projects.