Beside running the Crosser Node on a stand-alone Docker setup, or using a container orchestration system like Kubernetes/OpenShift, you can also run the Node as an Azure Container App in your Azure infrastructure. This gives you the advantage of not having to deal with overhead like resources and management of an operating system which hosts the Node. In addition, Azure Container Apps allow you to scale the resources of your container in a smooth and easy way making it highly adjustable for your use case.
The Crosser Node requires persistent local storage which allows the Node to store log files, settings, deployed flows and other things. If you run the Node as an Azure Container App without persistent storage, the Node will run just fine but it will lose all deployed flows with every restart. To avoid that you will need to add a File Share to your Container AppEnvironment.
The steps below should be treated as guidelines and you might want to adjust certain settings according to your needs or infrastructure.
In your Azure portal navigate to ‘Storage Accounts’, add a new storage or use an existing one and add a ‘File Share’ to it. Keep in mind that every Node will require one unique File Share.
On your storage account, move to ‘Access keys’ and show/copy one of the available keys for your storage account.
You will need the ‘Access key’ later on.
In your Azure portal, go to ‘Container Apps’ and click create. Specify the basic settings according to your needs and click ‘Next: Container’.
The Crosser Node is available on Crosser’s Docker repository. You can get the credentials for that in Crosser Control Center.
Add the password here as well.
Specify the Container resource allocation according to your needs. With the smallest possible setup (0,5 CPU cures, 1 Gi memory) you can run the Crosser Node.
For Environment variables, you have to add at least:
SecurityConfiguration__Credentials__NodeId
SecurityConfiguration__Credentials__AccessKey
NodeID and AccessKey are the Node credentials that you get when creating the Node in your Crosser Control Center organization
If you want to expose ports from the Node, you can specify the Ingress settings according to your needs. By default the Node comes with a webserver and internal MQTT Broker which allow communication to external services.
Port 9090: Default web server for receiving data in Flows using the HTTP Listener module.
Port 9191: Node web UI and monitoring REST API
Port 1883: MQTT Broker
For our basic setup we do not expose any ports.
Follow the next steps and click ‘create’.
Once the Container App is created, click on the name, navigate to ‘Containers’ and click on ‘Edit and deploy’.
Select the container image and click ‘Edit’
Go to ‘Volume mounts’ and click on the link ‘Container Apps environment’ to define the file share it should be mapped into the container.
Once you are redirected to ‘Container Apps Environment’, go to ‘Azure Files’ and click ‘Add’.
For Name you can specify whatever you want, in our example we go with ‘data’. Specify other settings according to the File Share that was created previously. Make sure you use Read/Write permission.
When created, your share should look something like this:
Afterwards, mount the volume to your container deployment by adding it as shown below.
If desired you can add ‘Health probes’ that check if the container is running properly. To do so, we recommend the settings below.
Now your Setup is completed and you can deploy your Container App.
To verify that the container is up and running, you can move to ‘Container Apps’, Application and navigate to ‘Revisions’.
In addition we recommend checking whether or not the Node is shown as online in your Crosser Control Center organization.
Also, once the Node is running, you should find the usual known folder structure in the File share which was added to the Container deployment.