To evaluate the services Banzai Cloud Backyards can offer, we recommend to create a test environment and use our demo application. This way you can start over at any time, and try all the options you are interested in without having to worry about changes made to your existing environment, even if it’s not used in production.

Production installation is very similar, but of course you won’t need to deploy the demo application, and you should choose the exact set of components you wish to use.

Preparation

Creating a test cluster

If you don’t already have a Kubernetes cluster to work with, you have a few options to create a new one:

  • You can use the self-hosted or the free online version of Banzai Cloud Pipeline to deploy a cluster.
  • Deploy a single-node Banzai Cloud PKE cluster on a phyisical or virtual Linux box.
  • Launch a cluster at one of the many cloud providers’ managed offerings at their console.
  • Use KinD on your machine (increase the resource allocation on Docker for Mac).
Please make sure that your Kubernetes cluster has sufficient resources. The requirements can be as high as 8 CPUs and 16 GiB of RAM if you try all the features with our demo application, while you shouldn’t start with less than 6 CPUs and 6 GiB of RAM.

Backyards CLI

We will use the Backyards CLI to install Backyards and other components to your cluster. Normally, this tool will run on your laptop (the machine you are sitting at). Please note that you are advised to run this command on MacOS or Linux (x86_64) — most of the native tooling around Kubernetes is for these platforms, and while it may work on Windows natively, we don’t test or build for it.

The quickest way to install the backyards-cli package for your environment is to run the following command:

curl https://getbackyards.sh | sh

For other options, check our detailed Installation guide for Backyards CLI.

Kubernetes config and context

The Backyards CLI will use your current Kubernetes context. This is loaded from the file named in the KUBECONFIG environment variable (~/.kube/config by default).

Note: You can select a Kubeconfig file explicitly using the --kubeconfig flag without having to set an environment variable.

The file supports multiple contexts, from which, the one named in use-context is selected.

Check if this is the cluster you plan to deploy Backyards to with kubectl config get-contexts.

Note: You can select a context explicitly using the --context flag without having to modify the Kubernetes context globally.

If the cluster is managed by Banzai Cloud Pipeline, simply run banzai cluster shell, which will let you select the cluster to use, and launch a subshell with the correct environment.

Deploying Backyards

Single command demo installation

backyards install -a --run-demo

Fast track to get started. This will install all the Backyards components, the demo application, generates synthetic load and opens a browser tab without asking for confirmation.

Interactive install

To install all the components Backyards can provide, simply use the following interactive command:

backyards install

Besides the Backyards core, which provides an internal API for handling the service-mesh and a dashboard, the command will also install and run

Note: If you don’t need the demo application, you can simply accept the defaults by pressing enter for each question as it will only install the core components. You can install additional components later.

A first look

As the first step, take a look at the Backyards dashboard:

backyards dashboard

If you don’t already have Istio workload and traffic, the dashboard will be empty.

Demo application

If you chose not to install the demo application, you can deploy it at this point too:

backyards demoapp install

Now generate some traffic between the components to draw a picture of the data flow around:

backyards demoapp load

After that, open the dashboard again, and look around:

backyards dashboard

Troubleshooting

If any of the backyards commands exits with an error stating timed out waiting for the condition, it is very likely that the cluster has insufficient resources for the components. You can check this by running kubectl get pod –all-namespaces and checking if there are any pods in Pending state. Use kubectl describe pod -n $namespace $pod to check the exact reason.

Add nodes or extra resources (wait for them to become ready in kubectl get nodes), and re-run the command that failed. It should succeed now.