Share image/release across fleets

Hi,
we have deployed our devices in multiple fleets (also for releasing different version to different customer base), e.g. we have fleets “alpha”, “beta”, and “production”.
So, right now, when we need to deploy a new release, we deploy it to alpha, if everything is OK, we release to beta, and finally production.
Is it possible to share releases across fleets? Right now, we need to push to each endpoint individually and the process takes quite long each time; It would be easier to have the option to say “share release abc123 from alpha to beta” and it is available there?
With that, it could also be assured that this really is the same release.
If any of the modules we need in out node application have been changed in the meantime, we don’t get the same image.

Thanks
Fritz

Hi Fritz, welcome to the balenaForums. I think one of the way I can suggest is instead of having multiple fleets you can add all the devices to the same fleet and then tag them which will differentiate the devices and even though they’ll be in the same fleet, you can take specific actions on specific devices based on their tags, for example: filter the devices based on their tags > select them > pin a specific release for them . You can read more about device tagging and filters here. We call this canary development method about which you can read all about here.

Please give it a try and let us know if it works for you, happy to share more information in case you’re stuck anywhere .

Hi @iayanpahwa,
thanks for that. Of course we know these possibilities but still like to have different fleets (e.g. different environment variables, etc) for different “stages” let’s say.
Also it is easier and safer, so that one cannot accidentially set a wrong filter and deploy a release that is not yet meant ready for production.

Anyway, just wanted to know, whether this is a feature that exists and I didn’t see it yet. No worries.
Maybe a point for the feature-request list :wink:

Cheers,
Fritz

Hi Fritz, glad to know you are aware about the tag feature, I understand it’s not exactly what you want to use but thank you for suggesting an alternative / feature-request. I’ve pinged internally to see if we can propose a similar workflow for your requirement or could bring it to our internal brainstorm to talk about it. I’ll keep you posted on the progress :slight_smile:

1 Like

I’d be happy to see such a feature as well.

While we’re waiting for that to perhaps appear, I’m planning to leverage blocks to mimic the same behavior. Namely by using the same block images in releases across fleets. It is a bit convoluted but should get the job done as the images will be identical.

We have a similar workflow, our solution is to produce a release in all fleets as part of our build process. Our build “artifact” is a document containing the release ID for each fleet, and we promote a build to different fleets by pinning the appropriate release for that fleet.

Hi, we’re planning to revisit and brainstorm on this feature internally soon. Please feel free to share more details, feedbacks on this thread :slight_smile:

I might add that we also see a need to share or move releases between fleets.
The use case comes down to principle of least privilege where there needs to be a separation between production and development environments.

Lets say you have a development team that needs full access to devices in a production like test environment but you do not need the team to have full access to the production fleet. In this use case you want to separate test devices from production devices using fleets as they provide access control granularity but you run into the inconvenience to have to deploy releases to two fleets.