Best way to deploy Influx, MQTT, Grafana, Nodered at scale with multiple customers

We currently use Influx 1.8, chronograf, MQTT, Grafana and Nodered in our stack. I’m looking for the best way to deploy this with many customers. Most likely using docker-compose/ansible. We currently use Digital Ocean VM’s and Traefik to manage TLS and ingress.

What would be considered the best way to deploy?

  1. One instance of the stack and every customer on the stack, separated in each service, ie, Grafana and influx orgs. This seams easy to manage but if there is ever a problem every customer will be down.
  2. One digital ocean droplet (VM) with multiple instances of the stack. This keeps each customer separated but as we scale we will have to keep stopping the VM to increase it’s resources.
  3. Our current deployment. One VM per customer with one instance of the stack. This is working okay but we will end up with many VM’s and many backups.
  4. Swarm/Kubernetes. We could have a cluster and deploy a stack instance per customer but would require learning kubernetes.

We do have a Flowfuse instance running for Nodered. Although it works well it only really makes sense if we used it with scenario 1.