Deploying Istio bookinfo app with AWS ECS

Kaung Htet SanKaung Htet San
3 min read

In Istio bookinfo app see below image for reference, I’ll be showing how to deploy this app in AWS ECS using fargate serverless in different namespaces using Docker Containers on ECS.

In the above diagram, each one is microservices and each microservice needs to connect each other to work like product page will connect to Details and Reviews-v1,v2 and v3. Service Discovery and Service Connect in ECS let your microservices find and communicate with each other dynamically — they handle DNS/service naming (Service Discovery) and secure traffic routing (Service Connect) so that services can talk to each other without hard-coding IPs or ports. I’ll be showing how to connect each microservice using the service connect and service discovery.

You can read more in here
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/interconnecting-services.html

This lab might cost around 1-2USD since I am using AWS Fargate serverless and AWS Cloud Map.

Follow below step by step

  1. Create AWS Cloud Map for namespace that we’ll connect using under one namespace.
    Go to AWS Cloud Map>Namespaces>Create Namespace.

  1. Create ECS cluster with desired name|
    I’ll be choosing AWS Fargate for serverless

  1. Create Task Definitions to use service in ECS cluster.
    Task Definitions are like blueprint that we’ll be using to create service.
    Create details task definitions, in here I used ECR which I upload to my own ECR but you can use docker.io/istio/examples-bookinfo-details-v1:1.20.3 for image
    in the below environmental values I use productpage.bookinfo, productpage is the service name that is registered under CloudMap and bookinfo is the CloudMap namespace

  1. Create Ratings Task Definitions
    Use this image docker.io/istio/examples-bookinfo-ratings-v1:1.20.3

  1. Create Productpage Task Definitions
    Use this image docker.io/istio/examples-bookinfo-productpage-v1:1.20.3

  1. Create Reviews1 2 and 3 Task Definitions
    Use these images
    docker.io/istio/examples-bookinfo-reviews-v1:1.20.3
    docker.io/istio/examples-bookinfo-reviews-v2:1.20.3
    docker.io/istio/examples-bookinfo-reviews-v3:1.20.3

  1. Go to AWS ECS>Clusters>bookinfo>Tasks>Run new Task
    Create details service. I used service connect with Client and Server so then productpage service can connect to this details service using Service Connect.

  1. Create productpage service

  1. Create ratings service
    I’ll be using ratings service and reviews1 2 3 service with service discovery. As you see above diagram from the start, product page service will call reviews 1 2 3 services randomly and it will be using one service name reviews. So in Service Connect I can’t register three services under one service name. So Service Discovery comes in.

  1. Create reviews1,2 and 3 service

    After all completed you will see as below

  1. You can check the public IP from ECS Clusters>Clusters>bookinfo>Services><productpage name> >Tasks>Choose the running Task>Public IP
    Go to browser and use http://<public IP>:9080

    Go to Normal User or Test User and test and you will see as result below.

    After all completed don’t forget to delete all the services under ECS cluster which is using fargate which will cost some USD and also delete AWS Cloud Map to avoid billing from Route 53 hosted zone.

You can also checkout my github for the above istio bookinfo app for which I used private repo and deploy using Kubernetes.
https://github.com/KHS-cpu/bookinfo

0
Subscribe to my newsletter

Read articles from Kaung Htet San directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Kaung Htet San
Kaung Htet San

​Hi, I’m Kaung Htet San — a Cloud Infrastructure Engineer with 6+ years of experience building and managing private cloud environments. I’ve delivered mission-critical solutions with Linux, VMware, OpenStack, and enterprise systems, and I specialize in automating infrastructure using Terraform and managing containerized workloads with Kubernetes. Now, I’m expanding into the public cloud space, applying my deep private cloud expertise to AWS and modern cloud-native architectures. My focus is on blending reliability and security with agility and innovation — crafting elegant, resilient, and scalable infrastructures that help businesses succeed. This portfolio showcases my journey: from enterprise systems to modern cloud solutions — always building for the future.