The UDMI Proxy is a cloud-based capability to proxy UDMI/MQTT exchanges through an intermediary proxy cloud project. This allows sharing of data among different cloud administrative domains. For example, given the two requirements:
- All data must be ingested through a project owned by Organization X.
- Application level software must run in a cloud project owned by Organization Y.
Then the UDMI Proxy will allow resolving this by proxying data through a Proxy project owned by Organization X through to the project owned by Organization Y.
From a device perspective, it's 'transparent' in the sense that there's no functional difference between communicating with the proxy project and the original target project. The switch from one project to another is based on updating the device's configuration (Cloud IoT Core endpoint).
Configuration of the Cloud IoT Core registry in both projects is accomplished through
the site's site_model
and the registrar
tool. The same model is run against both
projects, executed by an appropriately authorized agent with appropriate access rights.
Before using the project, it's generally best practice to test a few device connections direct to the target project, to make sure it's known-working before switching the devices over to a proxied connection. This is considered the dev setup below, in comparison to the proxy setup, which is required for a complete install.
Internally, the Proxy project needs special setup and operation, but that is beyond the scope of this document, and doesn't directly affect the device or target project setups.
- Devices are the UDMI/MQTT clients talking to GCP endpoints.
- Model is the building site model.
- Proxy is the intermediate GCP project.
- Target is the end-use GCP project.
- Dev Setup means the devices are configured to talk directly to the Target project.
- Proxy Setup means devices are (re)configured to talk directly to the Proxy project.
- registrar is the UDMI
registrar
tool, run by an authorized (per target project) agent. - connect is the process of a client connecting to it's configured target.
+---------+ +-------+ +-------+ +---------+
| Devices | | Model | | Proxy | | Target |
+---------+ +-------+ +-------+ +---------+
--------\ | | | |
| Dev |-| | | |
| Setup | | | | |
|-------| | | | |
| | registrar | |
| |----------------------------->|
| | | |
| connect | | |
|---------------------------------------->|
--------\ | | | |
| Proxy |-| | | |
| Setup | | | | |
|-------| | | | |
| | registrar | |
| |-------------->| |
| | | |
| connect | | |
|------------------------->| |
| | | |
| | | connect |
| | |------------->|
| | | |
Generated by https://textart.io/sequence
object Devices Model Proxy Target
note left of Devices: Dev\nSetup
Model->Target: registrar
Devices->Target: connect
note left of Devices: Proxy\nSetup
Model->Proxy: registrar
Devices->Proxy: connect
Proxy->Target: connect