Installing BEL (demo setup)

This guide will walk you through how to install BEL on your Kubernetes cluster in under five minutes.

Note: This guide contains instructions intended for non-production use. For production installations, please see our complete BEL installation guide.

Step 1: Get your license key

BEL requires a valid license key to run. Log into the Buoyant portal and follow the instructions there. You should end up with an environment variable like this:

export BUOYANT_LICENSE=[LICENSE]

Step 2: Get the CLI

Download and install the BEL command-line interface onto your local environment:

curl --proto '=https' --tlsv1.2 -sSfL https://enterprise.buoyant.io/install | sh

Follow the instructions to add the BEL linkerd CLI to your system path. You can verify that the CLI is installed and running the expected version with:

linkerd version --client

You should see Client version: enterprise-2.19.5.

Step 3: Install the Gateway API CRDs on your cluster

Linkerd uses Kubernetes Gateway API resources to configure certain features. To install the latest supported version of the Gateway API, run:

kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.1/standard-install.yaml

If you already have the Gateway API CRDs on your cluster, you can likely just use them as is. For details, see our Managing Gateway API resources doc.

Step 4: Validate that your Kubernetes cluster is ready for installation:

Run the pre-installation checks:

linkerd check --pre

Step 5: Install BEL onto your cluster

We’re finally ready to install BEL on your cluster!

The TLS certificates generated in this step will expire after one year. If you expect your Linkerd installation to run for more than a year, please see our complete BEL installation guide.

To install BEL, run:

linkerd install --crds | kubectl apply -f -
linkerd install | kubectl apply -f -
If you are on GKE 1.29+, you will also need to configure a custom clusterNetworks value. Learn more
--set clusterNetworks=34.118.224.0/20\,10.0.0.0/8\,100.64.0.0/10\,172.16.0.0/12\,192.168.0.0/16\,fd00::/8

For more information see the GKE docs.

Verify your installation

After the installation is complete, you can verify the health and configuration of Linkerd by running the linkerd check command:

linkerd check

Congratulations! You have successfully installed BEL onto your cluster.

Step 6 (optional): Install the dashboard and sample application

In this step we’ll install a demo application and the Linkerd dashboard, so that you can kick the tires.

We’ll install a demo application called Emojivoto. Emojivoto is a simple standalone Kubernetes application that uses a mix of gRPC and HTTP calls to allow the user to vote on their favorite emojis.

Install Emojivoto into the emojivoto namespace by running:

curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml \
  | kubectl apply -f -

Note that this command installs Emojivoto onto your cluster, but Linkerd hasn’t been activated on it yet—we’ll need to mesh the application before Linkerd can work its magic.

Before we mesh it, let’s take a look at Emojivoto in its natural state. We’ll do this by forwarding traffic to its web-svc service so that we can point our browser to it. Forward web-svc locally to port 8080 by running:

kubectl -n emojivoto port-forward svc/web-svc 8080:80 &

Now visit http://localhost:8080. Voila! You should see Emojivoto in all its glory.

If you click around Emojivoto, you might notice that it’s a little broken! For example, if you try to vote for the donut emoji, you’ll get a 404 page. Don’t worry, these errors are intentional. (In a later guide, we’ll show you how to identify the problem.)

With Emoji installed and running, we’re ready to mesh it—that is, to add Linkerd’s data plane proxies to it. We can do this on a live application without downtime, thanks to Kubernetes’s rolling deploys. Mesh your Emojivoto application by running:

kubectl get -n emojivoto deploy -o yaml \
  | linkerd inject - \
  | kubectl apply -f -

This command retrieves all of the deployments running in the emojivoto namespace, runs their manifests through the linkerd inject command, and then reapplies it to the cluster.

Note that linkerd inject command simply adds annotations to the pod spec that instruct Linkerd to inject the proxy into the pods when they are created. Normally you would add these annotations through your build and deploy system, not the CLI!

Once piped into kubectl apply, Kubernetes will execute a rolling deploy and update each pod with the data plane’s proxies.

Congratulations! You’ve now added Linkerd to an application! Just as with the control plane, it’s possible to verify that everything is working the way it should on the data plane side. Check your data plane with:

linkerd -n emojivoto check --proxy

And, of course, you can visit http://localhost:8080 and once again see Emojivoto in all its meshed glory. If all goes well, it should look exactly the same.

Finally, let’s install the BEL Linkerd dashboard so that we can take a look at Linkerd itself:

helm upgrade -i -n monitoring --create-namespace \
    linkerd-dashboard oci://ghcr.io/buoyantio/charts/linkerd-dashboard

Now we’ll forward port 8081 to the the dashboard workload:

kubectl -n monitoring port-forward deployments/linkerd-dashboard 8081:8080 &

Then, open your browser and navigate to http://localhost:8081. You should see the dashboard in all its glory.

That’s it!

If you get stuck on anything, please check out the places you can get help and support with BEL.

Happy meshing!