A few weeks ago we announced Backyards, Banzai Cloud’s automated service mesh built on top of our Istio operator, which greatly simplifies the complex management of service meshes across multi and hybrid-cloud environments. Backyards is integrated into Banzai Cloud’s container management platform, Pipeline. However, it also works, and is available, as a standalone product. Naturally, using Backyards with Pipeline provides users with a variety of specific benefits (like managing applications in a multi-cloud world) but Backyards works on any Kubernetes installation.
In the post introducing Backyards, Istio the easy way, we discussed some of its main features, such as the ability to create a service mesh in a few simple clicks, the monitoring of applications through a unique graph view, and the management of Istio features from a convenient UI. If you read that post, you may also remember us mentioning that our platform is capable of managing multi-cluster Istio service meshes across multi-cloud and hybrid-cloud deployments.
In this post, we will be introducing our automated multi-cluster service mesh feature and exploring it in some detail.
Regardless of whether it’s in a single or multi-cluster (multi-cloud or hybrid-cloud) environment, Backyards uses of the same set of features and convenient management UI. It’s extremely simple to start in a single-cluster scenario, as well as to extend, with a few clicks, into a multi-cluster (multi-cloud or hybrid-cloud) service mesh.
Hybrid and multi-cloud solutions are quickly becoming the new norm for enterprises. When Google announced Anthos a few months ago, the interest in, and adoption of, these solutions rapidly accelerated.
At Banzai Cloud, we noticed this accelerated interest at most of the companies we had discussions with. Some choose to run workloads in-house, in their own data centers, only scaling out to public clouds when peak-demand cannot be met. Others continually search for the cheapest prices across cloud vendors, only spinning up workloads when their cost criteria are met. However, all of them need a convenient way to move into different public clouds as requested by a given customer, regulation or business criteria, and to build multiple topologies across these public and hybrid clouds.
As demand began to emerge for hybrid and multi-cluster solutions, we started to look for ways to address our customers’ needs.
While the needs of Pipeline users vary depending on whether they employ a single or multi-cloud approach, they usually build upon one or more of these key features:
From its very inception, the Pipeline platform has supported multiple cloud providers: connecting these providers on different levels (clusters, deployments and services) has always been one of our primary objectives.
Simultaneously, we have been working extensively with Istio. First, we released an operator for simplifying the deployment and management of Istio, then we investigated its multi-cluster capabilities. Based on our experiences, we built Backyards, an automated multi and hybrid-cloud product, integrated into Pipeline, utilizing our open-source Istio operator.
In Pipeline, you can install and manage a hybrid, or multi-cluster service mesh on-premise, or with any combination of the several cloud providers we support.
Using a feature called Cluster group, we can form multiple clusters into groups, provided we select one as a master cluster, and can associate them with different features, like
Multi-cluster Deploymentmakes it possible to deploy an application on multiple clusters simultaneously. This is not the feature we will be highlighting in this post, but it will be used to easily deploy an application on multiple clusters. You can read more about this feature in this blog post.
Service Meshis the feature which we’ll be exploring in depth in this post. When it is turned on, it installs Istio on the master cluster and automatically connects all the clusters in a group using the Istio operator. When this happens, you’ll get an inter-cluster view of your services. From that point on, you can work with a multi-cluster mesh almost as if it were a single cluster.
Creating a service mesh 🔗︎
Let’s start by creating a cluster on AWS, using Banzai Cloud’s lightweight and CNCF certified Kubernetes distribution, PKE. Next, we’ll create an Istio service mesh using that cluster.
Creating a service mesh also forms a cluster group that remains in the background.
After a few seconds the mesh will be installed and ready to use.
Deploy an app 🔗︎
Now that we have our mesh, we’ll need a demo microservice application to showcase the capabilities of our product. To this end, we’ve created a very simple project that can be used to simulate a microservice application, called AllSpark. We’ve also built a Helm chart that contains a pre-configured AllSpark deployment, which simulates a cinema reservation system. We’ve made these available through our Helm chart as a service solution.
Using the aforementioned
Multi-cluster Deployment feature, we can deploy this application by navigating to the
Multi Cluster Deployments tab on the UI, and adding the
https://charts.banzaicloud.io/gh/spotguidetest repo to Pipeline, then selecting the
meshdemo chart and clicking on
DEPLOY (make sure to set all values to
true to install all components).
We could also have used a simple single cluster deployment for one cluster, but we chose a multi-cluster deployment because we’ll be using it again later, when working with multiple clusters.
Service mesh overview 🔗︎
If you go back to the service mesh list and click the
observe button, you’ll be presented with the service mesh control panel.
Since our test application hasn’t received any traffic, there are no metrics in the system and you won’t get any visualization yet.
The UI has a
test flight feature that directs traffic to selected endpoints. If you click the
HTTP button in the top right corner of the screen, you’ll be able to fill out a form that includes endpoint details, and send some test traffic to your services. In the case of our current example, traffic should hit the frontpage service on port 8080.
After a few seconds, a graph of your services will appear. The nodes in the graph will be services or workloads, while the the arrows will represent network connection between different services. These are based on Istio metrics that come from Prometheus.
Create additional clusters 🔗︎
Extending our service mesh with more clusters – even on multiple cloud providers – only takes a few clicks. Let’s create three additional clusters, on three different providers, to make things a bit more fun. We can easily spin up another PKE cluster on Azure, as well as on a GKE cluster.
Extend service mesh 🔗︎
Go back to the service mesh list, click
RESIZE MESH, then
ADD NEW CLUSTER. Select the previously created clusters as remote, then click
ADD. It’s as simple as that.
It may take several minutes for the mesh to expand: for every cluster to join and to reach a
Deploy an app on multiple clusters 🔗︎
Now that we have multiple clusters within the mesh, and we’re leveraging Pipeline’s
Multi-cluster Deployment feature, we can easily spread our demo microservices to those clusters. This particular helm chart has the option to easily turn components on and off. Because the
Multi-cluster Deployment feature supports setting overrides for each cluster, we just need to edit our deployment and set which components we’d like to run on which cluster.
We used the following cluster overrides for the multi-cluster deployment:
PKE on AWS services: true istioresources: true frontpage: true catalog: true bookings: true PKE on Azure services: true moviesv1: true moviesv2: true moviesv3: true OKE services: true payments: true notifications: true GKE services: true analytics: true
Service mesh overview on multiple clusters 🔗︎
You can use the UI’s
test flight feature, again, to send more traffic to the endpoint we previously selected. After a few seconds, something similar to the graph below should appear. Now our application is spread across four clusters on four different providers.
Configure HPA 🔗︎
Before wrapping up this post, let’s take a look at one last feature: setting up a Horizontal Pod Autoscaler. On the
Single-cluster Deployment page of Pipeline, you can easily configure a HPA for the deployment of your choice (in our case,
Once you’ve created the HPA and sent enough traffic to your services to trigger upscaling, you’ll start to see an increasing number of pods on the UI, which correspond to the
analytics-v1 deployment. You’ll also see increased request rates along the edges of the graph, represented both in numbers and in the thickness of the edges.
In Pipeline, you can set up a hybrid or multi-cluster service mesh with Backyards with ease. You can then deploy, monitor, manage and troubleshoot your applications on multiple clusters from one convenient UI.
Give it a try for free!
About Backyards 🔗︎
Banzai Cloud’s Backyards is a multi and hybrid-cloud enabled service mesh platform for constructing modern applications. Built on Kubernetes, our Istio operator and the Banzai Cloud Pipeline platform gives you flexibility, portability, and consistency across on-premise datacenters and on five cloud environments. Use our simple, yet extremely powerful UI and CLI, and experience automated canary releases, traffic shifting, routing, secure service communication, in-depth observability and more, for yourself.
About Banzai Cloud Pipeline 🔗︎
Banzai Cloud’s Pipeline provides a platform for enterprises to develop, deploy, and scale container-based applications. It leverages best-of-breed cloud components, such as Kubernetes, to create a highly productive, yet flexible environment for developers and operations teams alike. Strong security measures — multiple authentication backends, fine-grained authorization, dynamic secret management, automated secure communications between components using TLS, vulnerability scans, static code analysis, CI/CD, and so on — are default features of the Pipeline platform.
About Banzai Cloud 🔗︎
Banzai Cloud is changing how private clouds are built: simplifying the development, deployment, and scaling of complex applications, and putting the power of Kubernetes and Cloud Native technologies in the hands of developers and enterprises, everywhere.
#multicloud #hybridcloud #BanzaiCloud