Skip to content

Support for UNS Bridges (with Admin UI Integration)#586

Open
AlexGodbehere wants to merge 17 commits intomainfrom
bridge
Open

Support for UNS Bridges (with Admin UI Integration)#586
AlexGodbehere wants to merge 17 commits intomainfrom
bridge

Conversation

@AlexGodbehere
Copy link
Contributor

@AlexGodbehere AlexGodbehere commented Jan 21, 2026

This Pull Request introduces a UNS Bridge feature, enabling the bridging of Unified Namespace (UNS) topics between Factory+ ACS MQTT brokers and remote brokers. It encompasses everything from the underlying Helm charts and service configuration to a complete management interface within the Admin UI.

Key Changes

UNS Bridge Helm Chart

Introduced the uns-bridge edge Helm chart, which deploys a Mosquitto-based MQTT bridge. The bridge supports forwarding local Factory+ topics to remote brokers (Outgoing).

The Helm chart creates KerberosKeys to access the local broker and supports TLS and basic authentication for remote broker connections. The basic authentication credentials are encrypted using Sealed Secrets, aligning with the standard edge deployment workflow.

Admin UI Management

Introduced a management interface within the Admin UI to streamline bridge operations. A new Bridges Page allows users to view and search all active bridge deployments across the cluster.

image

To simplify the setup process, a Bridge Creation Dialog (wizard) has been added. This guides the user through selecting the bridge direction (Incoming/Outgoing), defining topic filters, and configuring remote broker connection details. Behind the scenes, this creates the Edge Deployment.

Note that for Incoming Bridges, the UI generates the specific kubectl command required to create the KerberosKey on the remote cluster, as we do not have direct jurisdiction over external Kubernetes environments.

image image

Service Configuration & UUIDs

Updated the core service configuration to support the new bridge architecture. This includes the addition of the Bridge Class and UNS Ingester Group UUIDs to uuids.js in the in-tree service-client.

acs-service-setup has been expanded to include the UNSBridge role, ensuring that bridge instances have the correct ACLs to subscribe to local UNS topics without manual permission intervention.

How to Test

  1. Navigate to the new Bridges section in the Admin UI.
  2. Attempt to create an Outgoing Bridge:
  3. Define a remote broker host and basic auth credentials.
  4. Verify that the UI correctly handles the topic filter configuration.
  5. Attempt to create an Incoming Bridge:
  6. Verify that the UI provides the correct KerberosKey command for the remote environment.
  7. Confirm that the bridge appears in the management list with the correct Host status (Pinned or Floating).
image

@AlexGodbehere AlexGodbehere marked this pull request as ready for review January 21, 2026 15:14
amrc-benmorrow
amrc-benmorrow previously approved these changes Jan 22, 2026
Copy link
Contributor

@amrc-benmorrow amrc-benmorrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've approved despite a few comments; I presume it actually works.

- Introduced a new Helm chart for UNS Bridge and its configuration.
- Updated `acs-service-setup` files to register UNS Bridge as a deployment option.
- Created deployment templates and associated values for UNS Bridge.
- Enhanced documentation to guide deployment and configuration processes for UNS Bridge.

Admin UI changes will be added later and will automate the creation of the KerberosKey and facilitate correct entry of data.
- Added `edgeService` definition to Helm values in `acs-service-setup`.
- Modified `kerberos-key.yaml` to reference the dynamic `edgeService` from Helm values.
- Registered UNS Bridge class in `helm.yaml` under `acs-service-setup`.
- Updated `uuids.js` to include UUID for UNS Bridge.
- Added "Bridges" section to the navigation menu.
- Introduced `NewBridgeDialog.vue` for creating UNS Bridges.
- Added `Bridges.vue` page for Bridge management with a table view.
…ote broker credential requirements. Removed deployment guide and installation instructions to align with edge-deployment automation.
Align the UNS Bridge chart lookup with the pattern used for other system charts by fetching it from the Manager's ServiceConfig instead of hardcoding a name-based lookup in the UI.

- Update `acs-service-setup` to include `unsBridge` in the Manager's helm configuration.
- Refactor NewBridgeDialog.vue to fetch the chart UUID from ConfigDB on mount.
- Remove redundant `HelmChartStore` dependency from `NewBridgeDialog.vue`.
Classify the UNS Bridge as a SystemHelmChart in helm.yaml. This ensures it is handled correctly as a system component and is filtered out of generic deployment menus in the Admin UI.
…ility

Convert .Values.topics from an array to an object keyed by topic filter. This provides a place to add direction/qos settings per topic in the future without breaking existing configurations.
Normalize the cluster name using RFC 1123 subdomain rules before using it as a HelmRelease name in the cluster manager. This fixes issues where names with underscores (e.g. "Test_Cluster") would fail Kubernetes validation.
… its implementation in `@amrc-factoryplus/service-client`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants