$ oc new-project bookinfo
The Bookinfo example application allows you to test your Red Hat OpenShift Service Mesh 1.1.4 installation on OpenShift Container Platform. Red Hat does not provide support for the Bookinfo application. |
The upstream Istio project has an example tutorial called Bookinfo, which is composed of four separate microservices used to demonstrate various Istio features. The Bookinfo application displays information about a book, similar to a single catalog entry of an online book store. Displayed on the page is a description of the book, book details (ISBN, number of pages, and other information), and book reviews.
The Bookinfo application consists of these microservices:
The productpage
microservice calls the details
and reviews
microservices to populate the page.
The details
microservice contains book information.
The reviews
microservice contains book reviews. It also calls the ratings
microservice.
The ratings
microservice contains book ranking information that accompanies a book review.
There are three versions of the reviews microservice:
Version v1 does not call the ratings
Service.
Version v2 calls the ratings
Service and displays each rating as one to five black stars.
Version v3 calls the ratings
Service and displays each rating as one to five red stars.
This tutorial walks you through creating a Bookinfo project, deploying the Bookinfo application, and running Bookinfo on OpenShift Container Platform with Service Mesh 1.1.4.
OpenShift Container Platform 4.1 or higher installed.
Red Hat OpenShift Service Mesh 1.1.4 installed.
Access to the OpenShift Container Platform Command-line Interface (cli) also known as oc
.
Red Hat OpenShift Service Mesh implements auto-injection differently than the upstream Istio project, therefore this procedure uses a version of the |
Log in to the OpenShift Container Platform web console as a user with cluster-admin rights.
click to Home → Projects.
click Create Project.
Enter bookinfo
as the Project Name, enter a Display Name, and enter a Description, then click Create.
Alternatively, you can run this command from the cli to create the bookinfo
project.
$ oc new-project bookinfo
click Operators → Installed Operators.
click the Project menu and use the control plane namespace. In this example, use istio-system
.
click the Red Hat OpenShift Service Mesh Operator.
click the Istio Service Mesh Member Roll link.
If you have already created a Istio Service Mesh Member Roll, click the name, then click the YAML tab to open the YAML editor.
If you have not created a Istio Service Mesh Member Roll, click Create Service Mesh Member Roll.
You need cluster-admin rights to edit the Istio Service Mesh Member Roll. |
Edit the default Service Mesh Member Roll YAML and add bookinfo
to the members list.
apiVersion: maistra.io/v1
kind: ServiceMeshMemberRoll
metadata:
name: default
spec:
members:
- bookinfo
Alternatively, you can run this command from the cli to add the bookinfo
project to the ServiceMeshMemberRoll
. Replace <control plane project>
with the name of your control plane project.
$ oc -n <control plane project> patch --type='json' smmr default -p '[{"op": "add", "path": "/spec/members", "value":["'"bookinfo"'"]}]'
click Create to save the updated Service Mesh Member Roll.
From the cli, deploy the Bookinfo application in the `bookinfo` project by applying the bookinfo.yaml
file:
$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-1.1/samples/bookinfo/platform/kube/bookinfo.yaml
Create the ingress gateway by applying the bookinfo-gateway.yaml
file:
$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-1.1/samples/bookinfo/networking/bookinfo-gateway.yaml
Set the value for the GATEWAY_URL
parameter:
Replace |
$ export GATEWAY_URL=$(oc -n <control_plane_project> get route istio-ingressgateway -o jsonpath='{.spec.host}')
Before you can use the Bookinfo application, you have to add default destination rules. There are two preconfigured YAML files, depending on whether or not you enabled mutual transport layer security (TLS) authentication.
To add destination rules, run one of the following commands:
If you did not enable mutual TLS:
$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-1.1/samples/bookinfo/networking/destination-rule-all.yaml
If you enabled mutual TLS:
$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-1.1/samples/bookinfo/networking/destination-rule-all-mtls.yaml
Before configuring your application, verify that it successfully deployed.
OpenShift Container Platform 4.1 or higher installed.
Red Hat OpenShift Service Mesh 1.1.4 installed.
Access to the OpenShift Container Platform Command-line Interface (cli) also known as oc
.
Log in to the OpenShift Container Platform cli.
Run this command to confirm that Bookinfo is deployed:
$ curl -o /dev/null -s -w "%{http_code}\n" http://$GATEWAY_URL/productpage
Alternatively, you can open http://$GATEWAY_URL/productpage
in your browser.
You can also verify that all pods are ready with this command:
$ oc get pods -n bookinfo
Follow these steps to remove the Bookinfo application.
OpenShift Container Platform 4.1 or higher installed.
Red Hat OpenShift Service Mesh 1.1.4 installed.
Access to the OpenShift Container Platform Command-line Interface (cli) also known as oc
.
Log in to the OpenShift Container Platform web console.
click to Home → Projects.
click on the bookinfo
menu , and then click Delete Project.
Type bookinfo
in the confirmation dialog box, and then click Delete.
Alternatively, you can run this command from the cli to create the bookinfo
project.
$ oc delete project bookinfo
Log in to the OpenShift Container Platform web console.
click Operators → Installed Operators.
click the Project menu and choose openshift-operators
from the list.
click the Istio Service Mesh Member Roll link under Provided APIS for the Red Hat OpenShift Service Mesh Operator.
click the ServiceMeshMemberRoll
menu and select Edit Service Mesh Member Roll.
Edit the default Service Mesh Member Roll YAML and remove bookinfo
from the members list.
Alternatively, you can run this command from the cli to remove the bookinfo
project from the ServiceMeshMemberRoll
. Replace <control plane project>
with the name of your control plane project.
$ oc -n <control plane project> patch --type='json' smmr default -p '[{"op": "remove", "path": "/spec/members", "value":["'"bookinfo"'"]}]'
click Save to update Service Mesh Member Roll.