This guide explains how to install the Online Boutique sample application to demonstrate Anthos Service Mesh. If you haven't installed Anthos Service Mesh, see the Installation guides section to choose the guide that is right for you.
Enabling sidecar auto-injection
To enable automatic sidecar injection (auto-injection) for the sample application, you have to add a revision label to the sample's namespace. The label that you add depends on whether you deployed the Anthos Service Mesh Google-managed control plane or installed the in-cluster control plane. The revision label is used by the sidecar injector webhook to associate injected sidecars with a particular control plane revision.
In-cluster
Create a namespace for the application:
kubectl create namespace demo
Use the following command to locate the label on
istiod
:kubectl -n istio-system get pods -l app=istiod --show-labels
The output looks similar to the following:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-198-6-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586 istiod-asm-198-6-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
In the output, under the
LABELS
column, note the value of theistiod
revision label, which follows the prefixistio.io/rev=
. In this example, the value isasm-198-6
.Apply the revision label to the
demo
namespace. In the following command, REVISION is the value of theistiod
revision label that you noted in the previous step.kubectl label namespace demo istio-injection- istio.io/rev=REVISION --overwrite
You can ignore the message
"istio-injection not found"
in the output. That means that the namespace didn't previously have theistio-injection
label, which you should expect in new installations of Anthos Service Mesh or new deployments. Because auto-injection fails if a namespace has both theistio-injection
and the revision label, allkubectl label
commands in the Anthos Service Mesh documentation include removing theistio-injection
label.
Google-managed
Create a namespace for the application:
kubectl create namespace demo
Apply the
asm-managed
revision label to thedemo
namespace:kubectl label namespace demo istio-injection- istio.io/rev=asm-managed --overwrite
You can ignore the message
"istio-injection not found"
in the output. That means that the namespace didn't previously have theistio-injection
label, which you should expect in new installations of Anthos Service Mesh or new deployments. Because auto-injection fails if a namespace has both theistio-injection
and the revision label, allkubectl label
commands in the Anthos Service Mesh documentation include removing theistio-injection
label.
Downloading and deploying the sample
Now that auto-injection is enabled on the demo
namespace, when you deploy
the BookInfo application's services, sidecar proxies are injected alongside each
service.
Install
kpt
if you haven't already:gcloud components install kpt
Download the sample using
kpt
:kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ online-boutique
Deploy the sample to the cluster:
kubectl apply -n demo -f online-boutique
Find the external IP address of the
frontend-external
service:kubectl get service frontend-external -n demo
Visit the application on your browser to confirm installation:
http://EXTERNAL_IP/
For GKE, you can explore the Anthos Service Mesh observability features in the Google Cloud console. Note that it can take up to 10 minutes for the topology graph to display the services in your mesh.
When you're finished exploring, remove the Online Boutique sample:
kubectl delete namespaces demo