Deployment patterns
Synpse is flexible enough to create a wide range of architectures for managing devices and applications. We will explain how you can manage your stack in a scalable way.
Single application - multiple devices
Deploying a single application to multiple devices is easy:
1. Create an application with the selector of your choice. In example app_version: v1
:
Label devices with label selector
app_version: v1
(See device labels page) :
Multiple applications - Multiple devices
When dealing with multiple applications and devices, it is good practice to segregate components outs. All devices are shared between namespaces, so use namespaces to isolate applications.
Create separate namespaces per application, where applications are isolated via different namespaces and using different selectors: in example
app: drone
andapp: nodered
:
Label targeted devices via selected labels. In our example, 2 devices are running
drone
application and one -nodered
Multi-project multi-application
When you need hard isolation, we recommend using different projects for different applications. For example foo-corp-development
and foo-corp-production.
This way you can isolate your development and production workloads and make sure the right people have access accordingly. See Teams/RBAC documentation.
This allows a dedicated project for production and development workloads. You can promote physical devices from one 'project' to another without re-installing them. See device operations documentation.
Important
In any of these configurations you have to be aware of a few behaviours of the system:
An update to the shared configuration between applications will trigger application redeployment. For example, if you share the same secrets for multiple applications inside the project, updating it will trigger a rolling update to all applications. To avoid this, separate applications by creating dedicated secrets OR separate via projects
Some application updates can cause updates to all other applications on the devices. For example, if you have an application, which modifies underlying device networking configuration, like
wireguard
oropenVPN
those might change the device network interface IP address or network card configurations. In situations like this, you might see other applications, restarting as they notice network interface changes. This happens because synpse injects default variables into each application (example below), and changes to any of these values (like name, hostname, IP address) will trigger an update.
Last updated