Guides overview

There are several guides available. To follow the guides included in this section, you will need at least two Kubernetes clusters with Gloo Mesh installed on one. You can easily set up two such clusters using Kind as detailed below. Some of the guides also make use of the Bookinfo sample application. You can install the application by following the steps in the Bookinfo deployment section.

To become familiar with Gloo Mesh, we recommend following the guides in the order that they appear here, starting from the top and going down.

Pre-requisites

There are three pre-requisites to following these guides:

  1. Install kubectl
  2. Install meshctl
  3. Have multiple Kubernetes clusters ready to use, accessible in different kubeconfig contexts. If you don't have access to multiple Kubernetes clusters, see the section below, Using Kind to use Kubernetes in Docker (Kind) to spin up two clusters in containers.

Assumptions made in the guides

We will assume in this guide that you have access to two clusters and the following two contexts are available in your kubeconfig file.

Your actual context names will likely be different.

We assume you've installed Gloo Mesh into the cluster represented by the context cluster-1-context.

Two registered clusters

We also assume you've registered both of those clusters with Gloo Mesh:

meshctl cluster register community cluster-1 \
  --remote-context $REMOTE_CONTEXT1
meshctl cluster register community cluster-2 \
  --remote-context $REMOTE_CONTEXT2

At this point we have two clusters, cluster-1 and cluster-2, which are both registered with Gloo Mesh (which also happens to be installed on cluster-1).

Using Kind

Kubernetes in Docker makes it easy to stand up Kubernetes clusters on your local desktop for testing and development. To assist with learning about Gloo Mesh, you can use Kind to deploy two Kubernetes clusters. You can install Kind by following the installation steps in their Quick Start guide.

Once you have Kind installed, you can create the two clusters in question by running the following:

meshctl demo istio-multicluster init

The command will do the following:

You should now be ready to start going through the guides.

Bookinfo deployment

For some parts of the guide, you'll want to have the Bookinfo demo deployed to two clusters.

You'll want to first have Istio installed for multi-cluster before installing the Bookinfo demo.

The core components, including reviews-v1 and reviews-v2, are deployed to the management plane cluster, while reviews-v3 is deployed on the remote cluster.

Be sure to switch the kubeconfig context to the cluster-1

Before running the following, make sure your context names are set as environment variables:

REMOTE_CONTEXT1=your_first_context_with_gloo_mesh_installed
REMOTE_CONTEXT2=your_second_context

Deploy part of the bookinfo application to the cluster-1 cluster:

# prepare the default namespace for Istio sidecar injection
kubectl --context $REMOTE_CONTEXT1 label namespace default istio-injection=enabled
# deploy bookinfo application components for all versions less than v3
kubectl --context $REMOTE_CONTEXT1 apply -f https://raw.githubusercontent.com/istio/istio/1.10.5/samples/bookinfo/platform/kube/bookinfo.yaml -l 'app,version notin (v3)'
# deploy all bookinfo service accounts
kubectl --context $REMOTE_CONTEXT1 apply -f https://raw.githubusercontent.com/istio/istio/1.10.5/samples/bookinfo/platform/kube/bookinfo.yaml -l 'account'
# configure ingress gateway to access bookinfo
kubectl --context $REMOTE_CONTEXT1 apply -f https://raw.githubusercontent.com/istio/istio/1.10.5/samples/bookinfo/networking/bookinfo-gateway.yaml

Now deploy only reviews-v3 to your cluster-2-context cluster:

# prepare the default namespace for Istio sidecar injection
kubectl --context $REMOTE_CONTEXT2 label namespace default istio-injection=enabled
# deploy reviews and ratings services
kubectl --context $REMOTE_CONTEXT2 apply -f https://raw.githubusercontent.com/istio/istio/1.10.5/samples/bookinfo/platform/kube/bookinfo.yaml -l 'service in (reviews)'
# deploy reviews-v3
kubectl --context $REMOTE_CONTEXT2 apply -f https://raw.githubusercontent.com/istio/istio/1.10.5/samples/bookinfo/platform/kube/bookinfo.yaml -l 'app in (reviews),version in (v3)'
# deploy ratings
kubectl --context $REMOTE_CONTEXT2 apply -f https://raw.githubusercontent.com/istio/istio/1.10.5/samples/bookinfo/platform/kube/bookinfo.yaml -l 'app in (ratings)'
# deploy reviews and ratings service accounts
kubectl --context $REMOTE_CONTEXT2 apply -f https://raw.githubusercontent.com/istio/istio/1.10.5/samples/bookinfo/platform/kube/bookinfo.yaml -l 'account in (reviews, ratings)'

Now you have Bookinfo demo set up for the rest of the guides. From here you can federate your two clusters, or start configuring multi-cluster access and traffic policy.