{"id":9567,"date":"2022-03-22T00:10:20","date_gmt":"2022-03-22T00:10:20","guid":{"rendered":"https:\/\/blog.cloudthat.com\/?p=9567"},"modified":"2024-06-25T11:03:40","modified_gmt":"2024-06-25T11:03:40","slug":"step-by-step-procedure-to-aws-app-mesh-integration-with-eks","status":"publish","type":"blog","link":"https:\/\/www.cloudthat.com\/resources\/blog\/step-by-step-procedure-to-aws-app-mesh-integration-with-eks","title":{"rendered":"Step By Step Procedure to AWS App Mesh Integration With EKS"},"content":{"rendered":"<h2><strong>Focus group<\/strong><\/h2>\n<p>This post is aimed at engineers who are already familiar with microservices, Kubernetes, AWS, Amazon EKS.<\/p>\n<h3><strong>Problem statement<\/strong><\/h3>\n<p>With increasing microservices deployment on Kubernetes, Businesses will require a method of centralizing the discovery, management, and security of services independent of language, domain, or deployment model. This is the point where a service mesh comes into the picture.<\/p>\n<h3><strong>Introduction to AWS Service mesh<\/strong><\/h3>\n<p>A service mesh is a dedicated infrastructure layer that you can add to your applications. It allows you to transparently add capabilities like observability, traffic management, and security, without adding them to code. The primary goal here is to have service-to-service communication in a secure, fast, and reliable fashion.<\/p>\n<p><a href=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9570\" src=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm1.png\" alt=\"App mesh\" width=\"602\" height=\"287\" \/><\/a><\/p>\n<p>In the above architecture, microservices frontend backend and Postgres interact with each other through envoy sidecar proxy.<\/p>\n<h3><strong>Implementation of Service Mesh AWS<\/strong><\/h3>\n<p>For the implementation, we are going to leverage Amazon EKS, AWS APP mesh.<\/p>\n<p>Amazon EKS is a managed service used to run Kubernetes on AWS without any necessity for installation, operation, and maintenance for your own Kubernetes control plane or nodes.<\/p>\n<p>AWS App Mesh helps to connect services, monitor the application\u2019s network, and control the traffic flow. App Mesh standardizes how services communicate, giving end-to-end visibility and helping to ensure the high availability of your applications.<\/p>\n<p>The App Mesh gives you consistent visibility and network traffic controls for every service in an application.<\/p>\n<h3><strong>Overview of AWS App Mesh<\/strong><\/h3>\n<h2><strong>Components:<\/strong><\/h2>\n<ul>\n<li><strong>Service Mesh<\/strong>: Acts as a logical boundary for network traffic between the microservice that resides within it.<a href=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Ammp2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9571\" src=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Ammp2.png\" alt=\"App mesh\" width=\"192\" height=\"88\" \/><\/a><\/li>\n<li><strong>Virtual Node:<\/strong> A virtual node acts as a logical pointer to a task group comprising ECS service or a Kubernetes deployment \/ EC2 instance.<a href=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9572\" src=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm3.png\" alt=\"App mesh\" width=\"441\" height=\"148\" \/><\/a><\/li>\n<li><strong>Virtual Service:<\/strong> Virtual services are virtual pointers of a real service provided by a virtual node directly or indirectly by means of a virtual router. One virtual service calls another virtual service by VirtualServiceName. Virtual services can have only one Virtual Node pointing to the application, or multiple Virtual Nodes pointing to different versions of the application.<a href=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9573\" src=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm4.png\" alt=\"App mesh\" width=\"441\" height=\"155\" \/><\/a><\/li>\n<li><strong>Virtual routes:<\/strong> Within mesh a Virtual router will handle traffic for one or more virtual services. We can have associated routes for virtual routers that direct incoming requests to different virtual nodes.<a href=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9574\" src=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm5.png\" alt=\"App mesh\" width=\"495\" height=\"155\" \/><\/a><\/li>\n<li><strong>Virtual Gateway: <\/strong>Allows to specify ingress rules for traffic that comes into the internal components of the mesh. Virtual gateway provides us the ability to define the path of the inbound\/north-south traffic. A Virtual gateway represents an envoy proxy running in an Amazon ECS \/ Kubernetes service\/ Amazon EC2 instances.\u00a0<a href=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9575\" src=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm6.png\" alt=\"App mesh\" width=\"606\" height=\"179\" \/><\/a><\/li>\n<\/ul>\n<h3><span style=\"color: #000000;\"><strong>Architecture Diagram <\/strong><\/span><\/h3>\n<p>The below architecture depicts a high-level representation of a sample application with integration on app mesh on\u00a0EKS.<\/p>\n<p><a href=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9576\" src=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm7.png\" alt=\"App mesh\" width=\"601\" height=\"395\" \/><\/a><\/p>\n<h3><span style=\"color: #000000;\"><strong>App Mesh With EKS<\/strong><\/span><\/h3>\n<p>We are going to create AWS App Mesh components and deploy them using a sample application. After placing the sample\u202fapp into a service mesh.<\/p>\n<p>Application\u202fcomponents include:<\/p>\n<ul>\n<li>A frontend is\u202fresponsible for vending the frontend code to the browser.<\/li>\n<li>A\u202fbackend\u202fthat\u202freads and writes from\u202fPostgres backend database (Postgres).<\/li>\n<\/ul>\n<p><a href=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm8.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9577\" src=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm8.png\" alt=\"App mesh\" width=\"328\" height=\"375\" \/><\/a><\/p>\n<h3><span style=\"color: #000000;\"><strong>Meshify\u202fthe Application<\/strong><\/span><\/h3>\n<p>To create the App Mesh resources and add the application into a\u202fMesh, we\u202fneed to\u202finstall the AWS App Mesh Controller. This controller allows configuring App Mesh resources using\u202fkubectl. Once completed, the resulting setup looks as follows:<\/p>\n<p><a href=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm9.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9578\" src=\"https:\/\/content.cloudthat.com\/resources\/wp-content\/uploads\/2022\/11\/Appm9.png\" alt=\"App mesh\" width=\"602\" height=\"287\" \/><\/a><\/p>\n<p><strong>The above architecture diagram details the step-by-step procedure of implementing Meshify the application. <\/strong><\/p>\n<p>To get more Kubernetes-related content please follow the blog and comment below if there are any queries related to the AWS app mesh implementation.<\/p>\n<h3 id=\"About CloudThat\"><span style=\"color: #000000;\">About CloudThat<\/span><\/h3>\n<p>CloudThat is a\u00a0<span class=\"TextRun BCX0 SCXP93070984\" lang=\"EN-IN\" xml:lang=\"EN-IN\" data-usefontface=\"true\" data-contrast=\"none\"><span class=\"NormalTextRun BCX0 SCXP93070984\">house\u00a0of\u00a0All-Encompassing\u00a0IT\u00a0Services\u00a0on Cloud offering\u00a0<span class=\"TextRun BCX0 SCXP59000031\" lang=\"EN-IN\" xml:lang=\"EN-IN\" data-usefontface=\"true\" data-contrast=\"none\"><span class=\"NormalTextRun BCX0 SCXP59000031\">Multi-cloud Security &amp; Compliance, Cloud Enablement Services, Cloud-Native Application Development, OTT-Video Tech Delivery Services, Training and Development, and System Integration Services,.\u00a0 <\/span><\/span><span class=\"TextRun BCX0 SCXP59000031\" lang=\"EN-IN\" xml:lang=\"EN-IN\" data-usefontface=\"true\" data-contrast=\"none\"><span class=\"NormalTextRun BCX0 SCXP59000031\"><span class=\"EOP SCXP258354852 BCX0\"><span class=\"EOP SCXP66056781 BCX0\"><span class=\"EOP SCXP242272637 BCX0\"><span class=\"TextRun SCXP239778695 BCX0\" lang=\"EN-IN\" xml:lang=\"EN-IN\" data-usefontface=\"true\" data-contrast=\"none\"><span class=\"NormalTextRun SCXP239778695 BCX0\">Explore our\u00a0<a href=\"https:\/\/www.cloudthat.com\/expert-advisory\/\">consulting and expert advisory services here<\/a>.<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n","protected":false},"author":263,"featured_media":10898,"parent":0,"comment_status":"open","ping_status":"open","template":"","blog_category":[3606,3607],"user_email":"aishwaryam@cloudthat.com","published_by":"324","primary-authors":"","secondary-authors":"","acf":[],"_links":{"self":[{"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/wp\/v2\/blog\/9567"}],"collection":[{"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/wp\/v2\/users\/263"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/wp\/v2\/comments?post=9567"}],"version-history":[{"count":1,"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/wp\/v2\/blog\/9567\/revisions"}],"predecessor-version":[{"id":45858,"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/wp\/v2\/blog\/9567\/revisions\/45858"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/wp\/v2\/media?parent=9567"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.cloudthat.com\/resources\/wp-json\/wp\/v2\/blog_category?post=9567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}