Create a Microservices-based App

With each microservice handling a single part of the app’s functionality, an app can be divided into different components. These components have their own responsibilities and limitations, independent from each other. In KubeSphere, this kind of app is called Composing App, which can be built through newly created Services or existing Services.

This tutorial demonstrates how to create a microservices-based app Bookinfo, which is composed of four Services, and set a customized domain name to access the app.

Prerequisites

  • You need to create a workspace, a project, and a user account (project-regular) for this tutorial. The account needs to be invited to the project with the operator role. For more information, see Create Workspaces, Projects, Accounts and Roles.
  • project-admin needs to set the project gateway so that project-regular can define a domain name when creating the app.

Create Microservices that Compose an App

  1. Log in to the web console of KubeSphere and navigate to Applications in Application Workloads of your project. In the Composing App tab, click Create Composing Application.

    create-composing-app

  2. Set a name for the app (e.g. bookinfo) and click Next.

  3. On the Components page, you need to create microservices that compose the app. Click Add Service and select Stateless Service.

  4. Set a name for the Service (e.g productpage) and click Next.

    product-page

    Note

    You can create a Service on the dashboard directly or enable Edit Mode in the top right corner to edit the YAML file.

  5. Click Add Container Image under Container Image and input kubesphere/examples-bookinfo-productpage-v1:1.13.0 in the search bar to use the Docker Hub image.

    container-image

    Note

    You must press Enter in your keyboard after you input the image name.

  6. Click Use Default Ports. For more information about image settings, see Container Image Settings. Click in the bottom right corner and Next to continue.

  7. On the Mount Volumes page, add a volume or click Next to continue.

  8. Click Add on the Advanced Settings page directly.

  9. Similarly, add the other three microservices for the app. Here is the image information:

    ServiceNameImage
    Statelessdetailskubesphere/examples-bookinfo-details-v1:1.13.0
    Statelessreviewskubesphere/examples-bookinfo-reviews-v1:1.13.0
    Statelessratingskubesphere/examples-bookinfo-ratings-v1:1.13.0
  10. When you finish adding microservices, click Next.

    microservices-done

  11. On the Internet Access page, click Add Route Rule. In the Specify Domain tab, set a domain name for your app (e.g. demo.bookinfo) and select http in the Protocol field. For Paths, select the Service productpage and port 9080. Click OK to continue.

    route

    Note

    The button Add Route Rule is not visible if the project gateway is not set.

  12. You can add more rules or click Create to finish the process.

  13. Wait for your app to reach the Ready status.

    status-active

Access the App

  1. As you set a domain name for the app, you need to add an entry in the hosts (/etc/hosts) file. For example, add the IP address and hostname as below:

    1. 192.168.0.9 demo.bookinfo

    Note

    You must add your own IP address and hostname.

  2. In Composing App, click the app you just created.

  3. In Application Components, click Click to visit to access the app.

    click-to-visit

    dashboard

    Note

    Make sure you open the port in your security group.

  4. Click Normal user and Test user respectively to see other Services.

    review-page