<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[DevOps/CloudOps Journey]]></title><description><![CDATA[I will be posting my hands on labs and knowledge sharing in this blog.]]></description><link>https://blogs.kaunghtetsan.tech</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 21:35:03 GMT</lastBuildDate><atom:link href="https://blogs.kaunghtetsan.tech/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Prometheus and Grafana Monitoring web server with Docker on AWS EC2]]></title><description><![CDATA[This lab shows how to create monitoring with Prometheus+Grafana for better monitoring for webapp server on EC2 using docker.
This is the diagram for this lab

1. Create web-app EC2 Server
Create EC2 for web-app server on EC2 using new or created KeyP...]]></description><link>https://blogs.kaunghtetsan.tech/prometheus-and-grafana-monitoring-web-server-with-docker-on-aws-ec2</link><guid isPermaLink="true">https://blogs.kaunghtetsan.tech/prometheus-and-grafana-monitoring-web-server-with-docker-on-aws-ec2</guid><category><![CDATA[#prometheus]]></category><category><![CDATA[Grafana]]></category><category><![CDATA[web app]]></category><category><![CDATA[monitoring]]></category><dc:creator><![CDATA[Kaung Htet San]]></dc:creator><pubDate>Sat, 09 Aug 2025 05:10:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1754716118890/30838711-a95f-4494-a17d-018874b195c2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This lab shows how to create monitoring with Prometheus+Grafana for better monitoring for webapp server on EC2 using docker.</p>
<p>This is the diagram for this lab</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754715745367/233df145-0b38-41d3-bb3e-494bd2cdbf13.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-1-create-web-app-ec2-server">1. Create web-app EC2 Server</h2>
<p>Create EC2 for web-app server on EC2 using new or created KeyPair. I used ubuntu image with t2.micro in this lab for minimum cost.</p>
<p><img src="https://file.notion.so/f/f/52a70352-2e19-4432-b891-a97df8bdac28/17c76778-e1a0-47cc-a9cd-a97a4b8b9851/image.png?table=block&amp;id=249dd0b3-f858-80e5-b995-e3e5bc979473&amp;spaceId=52a70352-2e19-4432-b891-a97df8bdac28&amp;expirationTimestamp=1754740800000&amp;signature=gp6gn5efnpdypW-qWJVlD5fqlmTE0kWrWnpbYtbV6w0&amp;downloadName=image.png" alt /></p>
<p>Create new security group allowing SSH, HTTP and Port 5000</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754713247421/64466be5-61b9-4dd6-835f-cd99fcf4b832.png" alt class="image--center mx-auto" /></p>
<p>In here for port 5000 if you use Elastic IP for Webapp server you can use Source type as that Prometheus Server EIP. If you don’t use Elastic IP for webapp server the public IP will change every time the node restarts.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754713297122/ca5c3d05-6b0b-4d5c-b868-36f5e0f2a872.png" alt class="image--center mx-auto" /></p>
<p>Under Advanced Details, use the user data, so then required packages are installed when server is up. Then Launch Instance</p>
<pre><code class="lang-bash"><span class="hljs-meta">#!/bin/bash</span>

<span class="hljs-comment"># Update and install Docker + Docker Compose</span>
apt update -y
apt install -y docker.io docker-compose

<span class="hljs-comment"># Add the 'ubuntu' user to the docker group</span>
usermod -aG docker ubuntu

<span class="hljs-comment"># Enable and start Docker</span>
systemctl <span class="hljs-built_in">enable</span> docker
systemctl start docker
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754713409810/73c63aad-e8d6-4dc8-a9f7-b599e24a7a4d.png" alt class="image--center mx-auto" /></p>
<p>After logging in to the web-app server using the public IP and keypair. Create webapp directory and go inside that directory</p>
<pre><code class="lang-bash">mkdir webapp &amp;&amp; <span class="hljs-built_in">cd</span> webapp
</code></pre>
<p>Create <a target="_blank" href="http://app.py"><code>app.py</code></a> file for webapp test using below code.</p>
<pre><code class="lang-bash">from flask import Flask, Response
app = Flask(__name__)

@app.route(<span class="hljs-string">"/"</span>)
def index():
    <span class="hljs-built_in">return</span> <span class="hljs-string">"Web server is running"</span>

@app.route(<span class="hljs-string">"/metrics"</span>)
def metrics():
    <span class="hljs-built_in">return</span> Response(<span class="hljs-string">'webapp_up 1\n'</span>, mimetype=<span class="hljs-string">'text/plain'</span>)

<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:
    app.run(host=<span class="hljs-string">"0.0.0.0"</span>, port=5000)
</code></pre>
<p>Create <code>Dockerfile</code> from below. You can take reference from <a target="_blank" href="https://docs.docker.com/reference/dockerfile/">https://docs.docker.com/reference/dockerfile/</a> for <code>Dockerfile</code>.</p>
<pre><code class="lang-bash">FROM python:3.9-slim
WORKDIR /app
COPY app.py .
RUN pip install flask
CMD [<span class="hljs-string">"python"</span>, <span class="hljs-string">"app.py"</span>]
</code></pre>
<p>Create <code>docker-compose.yml</code>. You can take reference from <a target="_blank" href="https://docs.docker.com/reference/compose-file/">https://docs.docker.com/reference/compose-file/</a> for <code>docker-compose.yml</code></p>
<pre><code class="lang-bash">version: <span class="hljs-string">'3'</span>
services:
  web:
    build: .
    ports:
      - <span class="hljs-string">"5000:5000"</span>
</code></pre>
<p>Run</p>
<pre><code class="lang-bash">docker-compose up -d --build
</code></pre>
<p><code>-d</code> means detach mode and <code>--build</code> means build the image new instead of reusing the old image. After that use <code>docker ps</code> to check the running docker.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754713710614/933560c9-ba65-447b-9e73-6056b92c8d78.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-2-create-prometheus-server-on-ec2-with-docker">2. Create Prometheus server On EC2 with docker</h2>
<p>Create another EC2 for Prometheus server using the above steps. But this time instead of opening port 5000 open port 9090 for Prometheus.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754713733412/6174668a-533f-4aaf-a338-a7c71f111c7f.png" alt class="image--center mx-auto" /></p>
<p>After connecting to Prometheus server,</p>
<pre><code class="lang-bash">mkdir prometheus &amp;&amp; <span class="hljs-built_in">cd</span> prometheus
</code></pre>
<p>Create <code>prometheus.yml</code> file for config of target server. You can take reference from here <a target="_blank" href="https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config">https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config</a></p>
<pre><code class="lang-bash">global:
  scrape_interval: 15s

scrape_configs:
  - job_name: <span class="hljs-string">'web-app'</span>
    static_configs:
      - targets: [<span class="hljs-string">'&lt;WEB_EC2_PUBLIC_IP&gt;:5000'</span>]
</code></pre>
<p>Create <code>docker-compose.yml</code></p>
<pre><code class="lang-bash">version: <span class="hljs-string">'3'</span>
services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - <span class="hljs-string">"9090:9090"</span>
</code></pre>
<p>After that check http://&lt;PROMETHEUS_PUBLIC_IP&gt;:9090/targets</p>
<p>you should see the webserver as targe</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754713915774/c6850dcd-7351-46f6-bb32-531473f1341d.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-3-create-grafana-server-on-ec2-with-docker">3. Create Grafana server On EC2 with docker</h2>
<p>Create EC2 as above steps for Grafana server. But this time open port 3000 for Grafana Serve</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754713931859/eaafb140-3206-47ca-af8b-eec7d14d92e0.png" alt class="image--center mx-auto" /></p>
<p>Login to Grafana Server and create grafana directory</p>
<pre><code class="lang-bash">mkdir grafana &amp;&amp; <span class="hljs-built_in">cd</span> grafana
</code></pre>
<p>Create <code>docker-compose.yml</code> . I want to avoid hardcoding the grafana password in docker-compose file so I will use another method by creating <code>.env</code> and add the line <code>GRAFANA_ADMIN_PASSWORD=admin123</code> use your desired password. Here I used admin123 for grafana admin password. Use <code>.gitignore</code> to ignore uploading to git for <code>.env</code> file so then your password is not uploaded to git.</p>
<pre><code class="lang-bash">version: <span class="hljs-string">'3'</span>
services:
  grafana:
    image: grafana/grafana
    ports:
      - <span class="hljs-string">"3000:3000"</span>
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=<span class="hljs-variable">${GRAFANA_ADMIN_PASSWORD}</span>
</code></pre>
<p>Then run the following</p>
<pre><code class="lang-bash">docker-compose up -d
</code></pre>
<p>You can check http://&lt;GRAFANA_PUBLIC_IP&gt;:3000</p>
<p>if Grafana is up, use<br />username: admin<br />password: &lt;your input password&gt;</p>
<p>Go to <code>Connections&gt;Data Sources&gt;Prometheus</code> to show data send from Prometheus in Grafana</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714134000/694066d6-56e1-4698-8979-470377cf8715.png" alt class="image--center mx-auto" /></p>
<p>Go to Dashboard&gt;New Dashboard&gt;Add Visualization&gt;(Select Data Source as Prometheus). You can use metrics for example up for server up in visualization. Then save dashboard</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714146033/1fe58e10-6e8e-4212-a71d-e86e89747649.png" alt class="image--center mx-auto" /></p>
<p>You can see as below as server uptime.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714156718/086f05af-2cae-4909-a5c2-b0851847dcd9.png" alt class="image--center mx-auto" /></p>
<p>You can also integrate alerting with PagerDuty, Slack etc. I use PagerDuty to test alert</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714168687/22363602-6012-41d7-be69-fa481081e3ca.png" alt class="image--center mx-auto" /></p>
<p>Go to Alert&gt;New Alert Rule. Use metrics as up or webapp_up and when query is Equal to 0 the alert will trigger. Create the required Alert Folder, Evaluation Grp and most importantly create contact points.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714184656/751102c1-80c7-40df-834b-efc052c83fda.png" alt class="image--center mx-auto" /></p>
<p>Go to Create contact points and choose integration as PagerDuty. And you have to copy the Integration key from PagerDuty and put it here.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714192758/466d7944-fb1c-4a68-a4fa-d28895c310cf.png" alt class="image--center mx-auto" /></p>
<p>In Pager Duty Go to Services&gt;New Service and create a service with desired name.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714214013/1d36a379-eaf2-4fa7-81a2-33c5bbe72a13.png" alt class="image--center mx-auto" /></p>
<p>Choose the Service created and go to Integrations and Add integration. You can choose Events API V2 or Prometheus. Any of them working. Copy the Integration key from Pager Duty and paste in Grafana Contact Point.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714353930/8d40aec3-b9d8-4d59-8813-1daa3e07fa97.png" alt class="image--center mx-auto" /></p>
<p>Try stopping the webapp container using <code>docker stop &lt;container ID&gt;</code>. After some time you will receive an email from Pager Duty as below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714387900/25ef3f3d-6f2e-4f4b-bc0f-962bad437ffd.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1754714394477/5efc3459-3964-4956-b544-3e1acf36e753.png" alt class="image--center mx-auto" /></p>
<p>After all the testing has been finished don’t forget to delete all three EC2 that you used for this lab to avoid additional cost.</p>
]]></content:encoded></item><item><title><![CDATA[VPC Peering with Public Subnet and Private Subnet]]></title><description><![CDATA[In this lab, there are two VPCs. VPC 1 and VPC 2. VPC 1 has one EC2 connected to public subnet. VPC 2 had one EC2 connected to private subnet. These two VPCs will be connected via VPC peering.

The end result will be look like this. From EC2 1 public...]]></description><link>https://blogs.kaunghtetsan.tech/vpc-peering-with-public-subnet-and-private-subnet</link><guid isPermaLink="true">https://blogs.kaunghtetsan.tech/vpc-peering-with-public-subnet-and-private-subnet</guid><category><![CDATA[#awsvpc]]></category><dc:creator><![CDATA[Kaung Htet San]]></dc:creator><pubDate>Tue, 22 Jul 2025 09:39:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176995113/f7632e78-a8b3-4f76-b745-195f10de37c7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this lab, there are two VPCs. VPC 1 and VPC 2. VPC 1 has one EC2 connected to public subnet. VPC 2 had one EC2 connected to private subnet. These two VPCs will be connected via VPC peering.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176460095/21b9b643-0cdf-4551-a994-b87ac6d34ae8.png" alt class="image--center mx-auto" /></p>
<p>The end result will be look like this. From EC2 1 public IP address should be able to ping to private IP address of EC2 2.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176469368/14ebf09f-5139-44d5-b02e-d310ea1cbd00.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176474403/86552c61-f153-457f-9257-5d54a9abb5cd.png" alt class="image--center mx-auto" /></p>
<p>This is the Project VPC with CIDR range of 10.0.0.0/16</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176481430/7570ea53-3f16-4267-954c-052a1a294012.png" alt class="image--center mx-auto" /></p>
<p>This is the test VPC with CIDR range of 172.16.0.0/16</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176488455/2e399adb-c171-4ad2-9b20-d9f7dc5c2e49.png" alt class="image--center mx-auto" /></p>
<p>In VPC peering I have connected two VPCs.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176492246/c716d164-5130-4f93-ae25-43885d8ab52b.png" alt class="image--center mx-auto" /></p>
<p>In Project VPC, I have config the route tables to test VPC using VPC peering connection.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176497755/bde4b2e7-c8af-4339-843a-251139a2d849.png" alt class="image--center mx-auto" /></p>
<p>In test VPC’s private subnet, I have config the route tables to Project VPC using VPC peering connection.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176502448/654c9c6a-327a-4839-8cdf-a611af21fe8b.png" alt class="image--center mx-auto" /></p>
<p>I have used VPC Reachability Analyzer to have connectivity from Instance to Instance.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1753176506636/16ce6c01-9afa-4cdb-8964-79fb13119673.png" alt class="image--center mx-auto" /></p>
<p>Note. You have to include ICMP in security group to be able to ping. Or use telnet.</p>
<p>If there are many VPC that needed to be connected we use Transit Gateway instead of VPC Peering.</p>
]]></content:encoded></item><item><title><![CDATA[Deploying Istio bookinfo app with AWS ECS]]></title><description><![CDATA[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 microser...]]></description><link>https://blogs.kaunghtetsan.tech/deploying-istio-bookinfo-app-with-aws-ecs</link><guid isPermaLink="true">https://blogs.kaunghtetsan.tech/deploying-istio-bookinfo-app-with-aws-ecs</guid><category><![CDATA[Istio bookinfo]]></category><category><![CDATA[Service connect]]></category><category><![CDATA[AWS ECS]]></category><category><![CDATA[aws-fargate]]></category><category><![CDATA[Service Discovery]]></category><dc:creator><![CDATA[Kaung Htet San]]></dc:creator><pubDate>Tue, 03 Jun 2025 09:02:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1749028572816/0355227c-e7f5-46f1-a65c-86af16db5328.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>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.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748933174776/b4e216db-e7a7-49dc-9a2e-161430339840.png" alt class="image--center mx-auto" /></p>
<p>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. <strong>Service Discovery</strong> and <strong>Service Connect</strong> in ECS let your microservices <strong>find and communicate with each other dynamically</strong> — 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.</p>
<p>You can read more in here<br /><a target="_blank" href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/interconnecting-services.html">https://docs.aws.amazon.com/AmazonECS/latest/developerguide/interconnecting-services.html</a></p>
<p><strong><mark>This lab might cost around 1-2USD since I am using AWS Fargate serverless and AWS Cloud Map.</mark></strong></p>
<p>Follow below step by step</p>
<ol>
<li><p>Create AWS Cloud Map for namespace that we’ll connect using under one namespace.<br /> Go to AWS Cloud Map&gt;Namespaces&gt;Create Namespace.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934119681/20d0ffe9-0823-4fb0-8d16-d0d010e3cc38.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<ol start="2">
<li><p>Create ECS cluster with desired name|<br /> I’ll be choosing AWS Fargate for serverless</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934312600/f4661504-5c5b-4b90-9b0f-241e9df4f783.png" alt /></p>
</li>
</ol>
<ol start="3">
<li><p>Create Task Definitions to use service in ECS cluster.<br /> Task Definitions are like blueprint that we’ll be using to create service.<br /> Create details task definitions, in here I used ECR which I upload to my own ECR but you can use <a target="_blank" href="http://docker.io/istio/examples-bookinfo-details-v1:1.20.3">docker.io/istio/examples-bookinfo-details-v1:1.20.3</a> for image<br /> 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</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934422208/a51758d9-b28f-40d3-836e-fddecf6e97cc.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934487271/d37d1a26-1416-412a-9e38-81b8a60b6f5c.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934491761/0aac09e7-015f-45a7-a4da-f49d91bc7ad0.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<ol start="4">
<li><p>Create Ratings Task Definitions<br /> Use this image <a target="_blank" href="http://docker.io/istio/examples-bookinfo-ratings-v1:1.20.3">docker.io/istio/examples-bookinfo-ratings-v1:1.20.3</a></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934842002/faf3c91a-6d2a-4b27-b950-1d2ed183818c.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<ol start="5">
<li><p>Create Productpage Task Definitions<br /> Use this image <a target="_blank" href="http://docker.io/istio/examples-bookinfo-productpage-v1:1.20.3">docker.io/istio/examples-bookinfo-productpage-v1:1.20.3</a></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934933200/75bf009e-9ae8-46b4-acf9-4ecbd7240607.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934942082/638de1ca-e990-4c92-bce5-52d8bd4a86dc.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<ol start="6">
<li><p>Create Reviews1 2 and 3 Task Definitions<br /> Use these images<br /> <a target="_blank" href="http://docker.io/istio/examples-bookinfo-reviews-v1:1.20.3">docker.io/istio/examples-bookinfo-reviews-v1:1.20.3</a><br /> <a target="_blank" href="http://docker.io/istio/examples-bookinfo-reviews-v2:1.20.3">docker.io/istio/examples-bookinfo-reviews-v2:1.20.3</a><br /> <a target="_blank" href="http://docker.io/istio/examples-bookinfo-reviews-v3:1.20.3">docker.io/istio/examples-bookinfo-reviews-v3:1.20.3</a></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934969622/67c1dd67-b4f8-4899-a66a-c79779dc0210.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748934979704/8678c4c0-a6e1-4094-bd1a-bec984d83b7a.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<ol start="7">
<li><p>Go to AWS ECS&gt;Clusters&gt;bookinfo&gt;Tasks&gt;Run new Task<br /> Create details service. I used service connect with Client and Server so then productpage service can connect to this details service using Service Connect.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935107629/5cc00037-e657-4ef3-bdb5-8df5fb637f96.png" alt class="image--center mx-auto" /></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935112618/454729db-8a23-4952-b719-ff00af4000ca.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<ol start="8">
<li><p>Create productpage service</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935206467/973e02f9-ea6a-4948-bd90-a36230208a01.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<ol start="9">
<li><p>Create ratings service<br /> 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.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935257494/8ca85fb7-ff57-4bf2-98b7-8d6d68681633.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<ol start="10">
<li><p>Create reviews1,2 and 3 service</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935277547/acd4aca0-54b8-4a17-8041-2ac2852a3007.png" alt class="image--center mx-auto" /></p>
<p>After all completed you will see as below</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935387792/9963d28d-9a82-4263-90bb-6c4e2ce41083.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<ol start="11">
<li><p>You can check the public IP from ECS Clusters&gt;Clusters&gt;bookinfo&gt;Services&gt;&lt;productpage name&gt; &gt;Tasks&gt;Choose the running Task&gt;Public IP<br />Go to browser and use http://&lt;public IP&gt;:9080</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935712005/9e5d2c5a-e70d-4c4b-9995-600a70c05138.png" alt class="image--center mx-auto" /></p>
<p>Go to Normal User or Test User and test and you will see as result below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935761094/fa73cfe7-0ebb-456e-9b03-d58281c933e1.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935771624/6cc50966-663e-4372-a34f-c16975b59e57.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748935772087/5cfb470e-e085-4986-986f-128176fa632f.png" alt class="image--center mx-auto" /></p>
<p>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.</p>
</li>
</ol>
<p>You can also checkout my github for the above istio bookinfo app for which I used private repo and deploy using Kubernetes.<br /><a target="_blank" href="https://github.com/KHS-cpu/bookinfo"><mark>https://github.com/KHS-cpu/bookinfo</mark></a></p>
]]></content:encoded></item></channel></rss>