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.
Deploying a single application to multiple devices is easy: 1. Create an application with the selector of your choice. In example
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.
- 1.Create separate namespaces per application, where applications are isolated via different namespaces and using different selectors: in example
- 1.Label targeted devices via selected labels. In our example, 2 devices are running
droneapplication and one -
When you need hard isolation, we recommend using different projects for different applications. For example
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.
In any of these configurations you have to be aware of a few behaviours of the system:
- 1.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
- 2.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
openVPNthose 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.