Architecture
Review how the Solo UI components extend observability for your Istio environment, and review requirements and other recommendations for your Solo Enterprise for Istio setup.
About
The Solo UI deploys alongside your Istio ambient mesh environment in single or multicluster environments, and can discover existing ambient mesh installations across clusters and infrastructure providers. The UI works with ambient service meshes, whether you use community Istio images or Solo distributions of Istio.
The Solo UI includes components that Solo develops alongside several integrated open source projects that extend its capabilities, such as the OpenTelemetry pipeline and ClickHouse. Although Solo does not develop these projects, they are supported as part of regular usage with Solo Enterprise for Istio.
Key features that you have access to when using the Solo UI include:
- Visual service graph: Review what services can communicate with other services, the policies that are applied before traffic is sent to a service, and how traffic between services is secured.
- Live metrics: With the built-in ClickHouse integration, the Solo UI has access to workload-specific metrics, such as the number of requests that were received for a workload. This data is visualized in the Solo UI graph. For more information about the ClickHouse integration, see ClickHouse.
- Global services: In multicluster setups, you can review all services that are exposed globally across the multicluster mesh, including their health statuses.
- Resource overview: With the Solo UI, you can view all Istio and Kubernetes resources in one place for all the clusters that you registered with the management server.
Number of clusters
Single cluster
Solo Enterprise for Istio is fully functional when you run both the Solo UI components and an Istio service mesh within the same cluster. The Solo UI deploys alongside your workloads and provides observability into your mesh environment.
When a single-cluster guide in this documentation set requires your cluster name and context, you can save the name of your cluster in the ${cluster1} environment variable, and the context of your cluster in the ${context1} environment variable.
Multicluster
A multicluster Solo Enterprise for Istio setup consists of one cluster that you deploy the UI management components to, and one or more connected clusters in the multicluster mesh that you deploy the UI relay components to. The cluster that you install the management components in often also runs service mesh workloads, and does not need to serve as a dedicated management cluster.
Note that before you install the Solo UI into a multicluster environment, you must first install a multicluster ambient mesh. The multicluster ambient mesh provides the capability to expose the UI services in the management cluster globally, so that relay components in other clusters in the multicluster mesh can access the telemetry gateway and tunnel server addresses.
When a multicluster guide requires example names, the examples use cluster1 and cluster2. Otherwise, you can save the names of your clusters in the ${cluster1} and ${cluster2} environment variables, and the contexts of your clusters in the ${context1} and ${context2} environment variables.
Dedicated management cluster (no Istio required)
You can optionally deploy the Solo UI management components on a dedicated cluster where Istio is not installed. This topology separates observability infrastructure from your workload clusters.
In this topology, the management cluster hosts the UI server, OTel gateway, and ClickHouse. Each workload cluster runs the relay chart, which connects to the management cluster over load balancer addresses that are accessible from the workload clusters, rather than over an ambient mesh global service. To install in this topology, set istio.ambient.enabled=false in the management chart, expose the tunnel server and OTel gateway as load balancer services, and set tunnel.fqdn and telemetry.fqdn in the relay chart to those external addresses. For more information, see the installation guide.
Components
The Solo UI management chart deploys the following pods.
| Pod | Containers | Description |
|---|---|---|
solo-enterprise-ui | ui-backend, ui-frontend, tunnel-server, k8sobjects-collector, idp | The main UI pod. Contains the backend API server, frontend React app, tunnel server for multicluster connectivity, a dedicated OTel collector for Kubernetes object snapshots, and a built-in identity provider for auto-authentication. |
solo-enterprise-telemetry-collector | telemetry-collector | Runs the OTel collector that scrapes Istio metrics, collects traces and events, and (in multicluster setups) receives telemetry from workload clusters. Writes all data to ClickHouse. |
solo-management-clickhouse-shard0 | clickhouse | Runs the ClickHouse database that stores all telemetry data. The Solo UI reads directly from ClickHouse to power the service graph, metrics views, and resource overviews. |
The solo-enterprise-ui pod runs the following five containers.
| Container | Image | Port(s) | Description |
|---|---|---|---|
ui-backend | solo-enterprise-ui-backend | 8090, 8091, 9090 | The backend API server and single entry point to the Solo UI.
|
ui-frontend | solo-enterprise-ui-frontend | 4000 | Serves the React application and static assets to the browser. |
tunnel-server | solo-enterprise-tunnel-server | 9000, 9990, 9991, 8080 | Manages cross-cluster connectivity.
|
k8sobjects-collector | opentelemetry-collector-contrib | 13133, 8888 | A dedicated OTel collector that watches Kubernetes object changes and streams them to ClickHouse, powering the resource overview in the Solo UI. Uses a separate configmap (solo-enterprise-k8sobjects-config) from the main telemetry collector. |
idp | solo-enterprise-autoauth | 5556 | A built-in OIDC identity provider used for auto-authentication when no external OIDC provider is configured. |
The Solo UI relay chart deploys the following pods in each workload cluster.
| Pod | Containers | Description |
|---|---|---|
solo-enterprise-relay | k8sobjects-collector, tunnel-client | The relay pod. Contains a dedicated OTel collector for Kubernetes object snapshots in the workload cluster, and a tunnel client that connects to the tunnel server in the management cluster. |
solo-enterprise-telemetry-collector | telemetry-collector | Runs the OTel collector that scrapes Istio metrics, collects traces and events, and forwards all telemetry data to the management cluster via the telemetry gateway. |
Network architecture
Review the deployed components and their ports in single or multicluster setups.
Single cluster
Review how the Solo UI components communicate with each other in one cluster in the following diagram.
Review the following table to understand the ports and protocols that the Solo UI uses for communication among components in a single-cluster setup. All components are deployed by the solo-enterprise/management Helm chart.
| Port / Protocol | Source | Destination | Network | Description | |
|---|---|---|---|---|---|
| 1 | 80 HTTP | Browser client | ui-backend (solo-enterprise-ui pod) | Public | UI backendA browser client retrieves the JavaScript bundle from the UI backend. Port 80 of the UI backend is the single point of entry to the Solo UI. The UI backend uses path-based routing, in which incoming requests to the /api/* path route to the backend APIs, such as requests to retrieve metrics data, and requests to any other paths (/*) route to the UI frontend. |
| 2 | /* proxy | ui-backend (solo-enterprise-ui pod) | ui-frontend (solo-enterprise-ui pod) | Cluster network | Frontend application servingThe UI backend acts as a reverse proxy, forwarding all browser requests on paths other than /api to the UI frontend service. The UI frontend serves the React app and static assets (like HTML, JavaScript, and CSS files) to the browser. |
| 3 | 9000 TCP | ui-backend (solo-enterprise-ui pod) | ClickHouse (solo-management-clickhouse-shard0 pod) | Cluster network | Read from ClickHouseThe UI backend reads telemetry data from the ClickHouse instance. |
| 4 | 4317 gRPC | Istio mesh workloads | telemetry-collector (solo-enterprise-telemetry-collector pod) | Cluster network | Telemetry collectionIstio mesh workloads push metrics and trace data to the OTel collector via OTLP. |
| 5 | 9000 TCP | telemetry-collector (solo-enterprise-telemetry-collector pod) | ClickHouse (solo-management-clickhouse-shard0 pod) | Cluster network | Write telemetryThe OTel collector writes collected telemetry data to the ClickHouse instance. |
| 6 | 9000 TCP | k8sobjects-collector (solo-enterprise-ui pod) | ClickHouse (solo-management-clickhouse-shard0 pod) | Cluster network | Write Kubernetes object snapshotsThe k8sobjects-collector writes Kubernetes object change events directly to ClickHouse using the native TCP protocol, powering the resource overview in the Solo UI. |
Multicluster
Review how the Solo UI components communicate with each other in the following diagram. This diagram represents the network architecture in a multicluster setup that consists of one cluster where the Solo UI is deployed, and one connected cluster. Both clusters are connected by a multicluster ambient mesh, and service mesh workloads can run in both clusters.
Review the following tables to understand the ports and protocols that the Solo UI uses for communication among components.
Management component ports
The following components are deployed by the solo-enterprise/management Helm chart in a cluster that serves as the management plane. In the ambient mesh topology shown in this diagram, this cluster is included in the multicluster ambient mesh and often also runs workloads in the mesh. If you instead use a dedicated management cluster, the cluster does not need to be part of an ambient mesh, and relay components connect to it over load balancer addresses that are accessible from the workload clusters.
| Port / Protocol | Source | Destination | Network | Description | |
|---|---|---|---|---|---|
| 1 | 80 HTTP | Browser client | ui-backend (solo-enterprise-ui pod) | Public | UI backendA browser client retrieves the JavaScript bundle from the UI backend. Port 80 of the UI backend is the single point of entry to the Solo UI. The UI backend uses path-based routing, in which incoming requests to the /api/* path route to the backend APIs, such as requests to retrieve metrics data, and requests to any other paths (/*) route to the UI frontend. |
| 2 | /* proxy | ui-backend (solo-enterprise-ui pod) | ui-frontend (solo-enterprise-ui pod) | Cluster network | Frontend application servingThe UI backend acts as a reverse proxy, forwarding all browser requests on paths other than /api to the UI frontend service. The UI frontend serves the React app and static assets (like HTML, JavaScript, and CSS files) to the browser. |
| 3 | 9000 TCP | ui-backend (solo-enterprise-ui pod) | ClickHouse (solo-management-clickhouse-shard0 pod) | Cluster network | Read from ClickHouseThe UI backend reads telemetry data from the ClickHouse instance. |
| 4 | 4317 gRPC | Istio mesh workloads (management cluster) | telemetry-collector (solo-enterprise-telemetry-collector pod) | Cluster network | Telemetry collectionIstio mesh workloads in the management cluster push metrics and trace data to the OTel collector via OTLP. |
| 5 | 9000 TCP | telemetry-collector (solo-enterprise-telemetry-collector pod) | ClickHouse (solo-management-clickhouse-shard0 pod) | Cluster network | Write telemetryThe OTel collector writes collected telemetry data to the ClickHouse instance. |
| 6 | 9000 TCP | k8sobjects-collector (solo-enterprise-ui pod) | ClickHouse (solo-management-clickhouse-shard0 pod) | Cluster network | Write Kubernetes object snapshotsThe k8sobjects-collector writes Kubernetes object change events directly to ClickHouse using the native TCP protocol, powering the resource overview in the Solo UI. |
| 7 | 8080 HTTP | ui-backend (solo-enterprise-ui pod) | tunnel-server (solo-enterprise-ui pod) | Cluster network | Tunnel server metricsThe UI backend reads metrics from the tunnel server. |
| 7 | 9991 HTTP/gRPC | ui-backend (solo-enterprise-ui pod) | tunnel-server (solo-enterprise-ui pod) | Cluster network | Resource managementThe UI backend routes HTTP traffic for lifecycle management of Istio and Kubernetes resources in workload clusters through the tunnel server. |
| 7 | 9990 HTTP | ui-backend (solo-enterprise-ui pod) | tunnel-server (solo-enterprise-ui pod) | Cluster network | Kubernetes API proxyThe UI backend routes Kubernetes API requests to workload clusters through the tunnel server, which securely proxies API requests to remote clusters. |
| 8 | 9000 HTTP/HTTP2 CONNECT | tunnel-client (solo-enterprise-relay pod) | tunnel-server (solo-enterprise-ui pod) | Public | Cross-cluster tunnelThe tunnel client in the workload cluster connects to the tunnel server in the management cluster to facilitate bidirectional traffic. |
Relay component ports
The following components are deployed by the solo-enterprise/relay Helm chart in a cluster that runs mesh workloads.
| Port / Protocol | Source | Destination | Network | Description | |
|---|---|---|---|---|---|
| 9 | 443 TCP | tunnel-client (solo-enterprise-relay pod) | kube-apiserver | Cluster network | Kubernetes APIThe tunnel client forwards Kubernetes API requests from the management cluster to the kube-apiserver in the workload cluster. |
| 10 | 4317 gRPC | Istio mesh workloads | telemetry-collector (solo-enterprise-telemetry-collector pod) | Cluster network | Telemetry collectionIstio mesh workloads push metrics and trace data to the OTel collector via OTLP. |
| 11 | 4316 gRPC | telemetry-collector (solo-enterprise-telemetry-collector pod) | solo-enterprise-telemetry-gateway service (solo-enterprise-telemetry-collector pod, management cluster) | Public | Telemetry exportThe OTel collector pushes telemetry data to the telemetry gateway service in the management cluster, which routes to the management cluster’s OTel collector. |
| 11 | 4316 gRPC | k8sobjects-collector (solo-enterprise-relay pod) | solo-enterprise-telemetry-gateway service (solo-enterprise-telemetry-collector pod, management cluster) | Public | Kubernetes object snapshotsThe k8sobjects-collector in the relay pod sends Kubernetes object change events from the workload cluster via OTLP to the management cluster’s telemetry gateway, which routes them to the OTel collector and ultimately ClickHouse. |
Version
The Solo UI is supported for Solo Enterprise for Istio versions 1.30 or later. Review the minimum Solo UI version that is tested and compatible with each Solo Enterprise for Istio version.
Additionally, note that the Solo UI is supported for ambient meshes, and requires an Enterprise-level license for Solo Enterprise for Istio. If you have a Basic or Premium license for Solo Enterprise for Istio, or use a sidecar mesh setup, use the Gloo UI. for observability and management of your Istio environment.
| Solo Enterprise for Istio | Release date | Kubernetes | Kubernetes Gateway API | Solo UI | Solo Enterprise for agentgateway | Gloo Operator |
|---|---|---|---|---|---|---|
| 1.30.x | 28 May 2026 | 1.32 - 1.36 | 1.5.0 | 0.4.3+ | 2026.5.0 | 0.5.2+ |
| 1.29.x | 24 Feb 2026 | 1.30 - 1.35 | 1.4.0 | N/A | N/A | 0.5.0+ |
| 1.28.x | 13 Nov 2025 | 1.30 - 1.34 | 1.4.0 | N/A | N/A | 0.4.1+ |
| 1.27.x | 19 Aug 2025 | 1.30 - 1.33 | 1.3.0 | N/A | N/A | 0.3.0+ |
| 1.26.x | 30 May 2025 | 1.29 - 1.33 | 1.2.1 | N/A | N/A | 0.2.5+ |