Jump to Content
DevOps & SRE

Distributing software everywhere, all at once - a look at Cloud Deploy multi-target

March 28, 2023
Mia Villasenor

Developer Relations Engineer, DevOps

As a developer, I've long dreamed of releasing to multiple targets at once - it speeds things up, and simplifies operations. Finally it's real.

This is all possible in the latest Cloud Deploy Public Preview. Whether you’re trying to improve release performance or organize your deployment phase targets - gone are the days of waiting hours to get a release out to all of your clusters.

What’s new?

Now you can concurrently deploy to all members in a group of either Google Kuberentes Engine clusters, Cloud Run instances, or Anthos clusters at once. 

For globally distributed applications, it is common to have multiple clusters in multiple regions. Until now, updating all clusters would require waiting for a sequential Cloud Deploy pipeline to run and update each cluster, one at a time, which is not optimal. It often looks like this:

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Cloud_Deploy.max-800x800.jpg

Now, with the new parallel deployment feature in Cloud Deploy, you can update all clusters in a “group” at the same time, like this:

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Cloud_Deploy.max-1200x1200.jpg

What does this look like in practice?

This feature is commonly requested for managing the rollout of a release across multiple clusters and regions - especially for users of Agones, the popular cloud game server orchestration system used by many in the gaming industry. Since Cloud Deploy is powered by Skaffold, it can handle any kind of Kubernetes YAML resource (even Custom Resource Definitions), making it fully compatible with Agones.

Often a release (or new Agones Fleet) will go out to a particular part of the world first - say several Google Kubernetes Engine clusters in Australia (it could be any region - but pick one initial region to test against). Assuming the release looks good, then it could get promoted to all clusters in European regions, then North America, and so on. Each region could have its own multiTarget-enabled Target within the Agones Fleet DeliveryPipeline. A single delivery pipeline stage for one part of the world might look like this under the hood:

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_Cloud_Deploy.max-600x600.jpg

To start using this with an existing Cloud Deploy setup, there really isn’t much you need to do. We have introduced a new configuration option within the Cloud Deploy Target resource called multiTarget. All you need to do is specify existing targets under multiTarget that you want to be part of your new Target resource “group”, like this:

Loading...

If you don’t have existing Target to reference as a child in the multiTarget, you can specify one like this:

Loading...

And a second Target, like this:

Loading...

An example you can try

If you have an existing Agones GKE cluster, you can use the following configuration to test out the parallel deploy feature, using the new multiTarget feature explained previously.

Loading...

skaffold.yaml

Loading...

fleet.yaml

If you don’t already have an Agones GKE cluster running, no worries. The takeaway here is that there is nothing special in our skaffold.yaml – working with Agones objects is the same as any other Kubernetes object. Likewise, no changes to the Skaffold configuration are required to take advantage of parallel deployment.

Thanks so much for reading. You can learn more about using Cloud Deploy with Google Kubernetes Engine with this tutorial. If you want to learn more about Cloud Deploy and the new Parallel Deployment feature check out the links below.

Further reading

Posted in