Skip to content

Quickstart to launch a Solace PubSub+ Software Message Broker in Google Container Engine for Kubernetes


Notifications You must be signed in to change notification settings


Folders and files

Last commit message
Last commit date

Latest commit



53 Commits

Repository files navigation

Actions Status

Install a Solace PubSub+ Software Event Broker HA group onto a Google Kubernetes Engine (GKE) cluster

Purpose of this repository

This repository extends the PubSub+ Software Event Broker on Kubernetes Quickstart to show you how to install Solace PubSub+ Software Event Broker onto Google Kubernetes Engine (GKE).

The recommended software event broker version is 9.4 or later.

Description of the Solace PubSub+ Software Event Broker

The Solace PubSub+ Platform's software event broker efficiently streams event-driven information between applications, IoT devices and user interfaces running in the cloud, on-premises, and hybrid environments using open APIs and protocols like AMQP, JMS, MQTT, REST and WebSocket. It can be installed into a variety of public and private clouds, PaaS, and on-premises environments, and brokers in multiple locations can be linked together in an event mesh to dynamically share events across the distributed enterprise.

How to deploy Solace PubSub+ Software Event Broker onto GKE

Solace PubSub+ Software Event Broker can be deployed in either a three-node High-Availability (HA) group, or as a single-node standalone deployment. For simple test environments that need only to validate application functionality, a single instance will suffice. Note that in production, or any environment where message loss cannot be tolerated, an HA deployment is required.

Detailed documentation of deploying PubSub+ in a general Kubernetes environment is provided in the Solace PubSub+ Software Event Broker in Kubernetes Documentation.

Consult the Deployment Considerations when planning your deployment, then follow these steps to deploy.

The following diagram illustrates an HA deployment on a three node GKE cluster spread across three zones.

alt text

  • Purple - Data – Client data including active node management.
  • Blue - DNS – HA node discovery.
  • Black - Disk – Persistent disk mount.
  • Orange/Yellow - Mgmt – Direct CLI/SEMP.

Step 1: Access to GKE

Perform any prerequisites to access GKE from your command-line environment. For specific details, refer to Google Cloud's GKE documentation.

Tasks may include:

  • Get access to the Google Cloud Platform, select or create a new project and enable billing.
  • Install the Kubernetes kubectl tool.
  • Install the gcloud command-line tool and initialize it running gcloud init.
  • Create a GKE cluster (see below) or use an existing one.
  • Fetch the credentials of the GKE cluster.

Commands can be executed either from your local command-line interface after installing above tools, or open a Google Cloud Shell from the Cloud Platform Console, which already has the tools available:

alt text

If using an existing GKE cluster your admin shall be able to provide you with the `gcloud container clusters get-credentials' command.

Creating a new GKE cluster

Download and execute the cluster creation script included in this repo as in the example below.

Script options and arguments:

  • Default (no arguments): creates a one node GKE cluster, can be used if you were setting up and running a single-node event broker
  • For a multi-node GKE-cluster in a single GCP zone, specify -n = 3 as the number of nodes per zone and a single -z <zone>.
  • If you want the HA cluster spread across three zones within a region - which is the configuration recommended for production situations - specify the three zones as per the example below, but leave the number of nodes per zone at the default value of 1.
  • The default cluster name is solace-cluster which can be changed by specifying the -c <cluster name> command line argument.
  • The default machine type is "n1-standard-4". To use a different Google machine type, specify -m <machine-type>. Ensure to meet the CPU and memory requirements.
  • The default node OS image type is Ubuntu. Specify other node image type using -i <image-type>

Important: if connecting Solace brokers across GCP regions, there is a known issue affecting TCP throughput with the default node OS image type Ubuntu and default settings. In this case additionally specify the node image as Container-Optimized OS (cos) and a flag to apply performance tuning: -i cos -p.


chmod +x
# Creates a recommended production-like deployment with 3 nodes across 3 availability zones
./ -z us-central1-b,us-central1-c,us-central1-f

This will create a GKE cluster of three nodes spread across three zones and configure the required credentials to access this cluster from the command-line.

alt text

You can check that the Kubernetes deployment on GKE is healthy with the following command (which should return the available nodes with their status):

kubectl get nodes -o wide

If this fails, you will need to troubleshoot GKE.

Step 2 (Optional): Load the PubSub+ EBS Docker image to private Docker image registry

Hint: You may skip the rest of this step if not using Google Container Registry (GCR) or other private Docker registry. The free PubSub+ Software Event Broker Standard Edition is available from the public Docker Hub registry, the image reference is solace/solace-pubsub-standard:<TagName>.

To get the event broker Docker image URL, go to the Solace Developer Portal and download the Solace PubSub+ Software Event Broker as a docker image or obtain your version from Solace Support.

PubSub+ Software Event Broker Standard
Docker Image
PubSub+ Software Event Broker Enterprise Evaluation Edition
Docker Image
Free, up to 1k simultaneous connections,
up to 10k messages per second
90-day trial version, unlimited
Download Standard docker image Download Evaluation docker image

Loading the PubSub+ Docker image to Google Container Registry (GCR)

If using GCR for private Docker registry, use the script from this repo.


  • Local installation of Docker is required
  • Ensure gcloud init is complete.

Script options and arguments:

  • PUBSUBPLUS_IMAGE_URL: the PubSub+ docker image location, can be one of the followings:
    • name of a Docker image from a publicly available Docker image registry (default is solace/solace-pubsub-standard:latest)
    • a Solace Docker image download URL obtained from the Solace Downloads site
    • a web server download URL - the corresponding md5 file must be collocated with the Solace Docker image
    • path to a Solace Docker image tar.gz file in the local file system
  • GCR_HOST: fully qualified hostname of the GCR server - default is
  • GCR_PROJECT: the GCR project, default is the current GCP project id
chmod +x
# Define variables up-front to be passed to the "copy_docker_image_to_gcr" script:
  [PUBSUBPLUS_IMAGE_URL=<docker-repo-or-download-link>] \
  [GCR_HOST=<hostname>] \
  [GCR_PROJECT=<project>] \

The script will end with showing the "GCR image location" in <your-image-location>:<your-image-tag> format and this shall be passed to the PubSub+ deployment parameters image.repository and image.tag respectively.

You can also view the new entry on the Google Container Registry in the Cloud Platform Console:

alt text

For general additional information, refer to the Using private registries section in the PubSub+ Kubernetes Documentation.

Step 3: Deploy the event broker

From here follow the steps in the PubSub+ Software Event Broker in Kubernetes Quickstart to deploy a single-node or an HA event broker.


Please read for details on our code of conduct, and the process for submitting pull requests to us.


See the list of contributors who participated in this project.


This project is licensed under the Apache License, Version 2.0. - See the LICENSE file for details.


For more information about Solace technology in general please visit these resources:


Quickstart to launch a Solace PubSub+ Software Message Broker in Google Container Engine for Kubernetes