{"id":2605,"date":"2019-03-17T18:34:04","date_gmt":"2019-03-17T13:04:04","guid":{"rendered":"http:\/\/navveenbalani.dev\/?p=2605"},"modified":"2019-12-17T20:58:30","modified_gmt":"2019-12-17T15:28:30","slug":"building-production-topology-with-google-cloud-part-1","status":"publish","type":"post","link":"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/","title":{"rendered":"Building Production Topology with Google Cloud &#8211; Part 1"},"content":{"rendered":"\n<p>In this article we would go about building the production topology and deploying our microservices application using Google Ingress Controller<\/p>\n\n\n\n<h2>Create the VPN<\/h2>\n\n\n\n<p>The first step is\nto create a virtual private network for our solution.&nbsp; <\/p>\n\n\n\n<p>Go to Networking\n-&gt; VPC Networks &#8211; &gt; VPC Network &#8211; &gt; Create VPC Network. <\/p>\n\n\n\n<p>We will create a\ncustom subnet in us-east1 region and specify the IP address range so that it is\nlarge enough to accommodate our network. For instance, Kubernetes cluster would\nassign each node a range of IP addresses from the IP address range specified, so\nthat each Pod can have a unique IP address. To know more about how to size the\ncluster, please check out the Considerations for Cluster Sizing section at<a href=\"https:\/\/cloud.google.com\/kubernetes-engine\/docs\/how-to\/alias-ips.\">https:\/\/cloud.google.com\/kubernetes-engine\/docs\/how-to\/alias-ips.<\/a><\/p>\n\n\n\n<p>The following is\na snapshot of the VPC network that we created for our application. You can use\na similar configuration based on your network topology. The below IP address\nrange configuration is large enough to suffice for most networks.<\/p>\n\n\n\n<p><em>Figure 1 &#8211; VPC Network Configuration<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"351\" height=\"395\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-1.png\" alt=\"\" class=\"wp-image-2609\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-1.png 351w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-1-267x300.png 267w\" sizes=\"(max-width: 351px) 100vw, 351px\" \/><\/figure>\n\n\n\n<p><em>Figure 2 &#8211; VPC Network Configuration &#8211; Additional Settings<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"351\" height=\"398\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-2.png\" alt=\"\" class=\"wp-image-2610\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-2.png 351w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-2-265x300.png 265w\" sizes=\"(max-width: 351px) 100vw, 351px\" \/><\/figure>\n\n\n\n<h2>Create a Private Instance of\nGoogle Kubernetes Cluster.<\/h2>\n\n\n\n<p>Next, we would\ncreate a private Google Kubernetes Cluster (GKE). A private cluster ensures\nthat all nodes and the master server (every cluster has a Kubernetes API server\ncalled the master) are isolated from the public Internet. You can configure\nwhich IPs have access to the master.<\/p>\n\n\n\n<p>You can also set\nup a Load Balancer that accepts public traffic and directs it to the cluster.\nFor more details, please refer to <a href=\"https:\/\/cloud.google.com\/kubernetes-engine\/docs\/how-to\/private-clusters\">https:\/\/cloud.google.com\/kubernetes-engine\/docs\/how-to\/private-clusters<\/a>.<\/p>\n\n\n\n<p>Go to Kubernetes\nCluster &#8211; &gt; Clusters &#8211; &gt; Create Cluster.<\/p>\n\n\n\n<p>Follow the steps\nbelow to create the cluster.<\/p>\n\n\n\n<ul><li>Create a Standard\ncluster. Provide the name of the cluster and zone as us-east1-b (i.e. that\nshould be part of the VPN region). The VPN that we created earlier was in the\nus-east1 region. We can also create a Regional cluster.<\/li><\/ul>\n\n\n\n<p><em>Figure 3 &#8211; Cluster Configuration<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"380\" height=\"305\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-3.png\" alt=\"\" class=\"wp-image-2611\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-3.png 380w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-3-300x241.png 300w\" sizes=\"(max-width: 380px) 100vw, 380px\" \/><\/figure>\n\n\n\n<ul><li>Enter the number\nof nodes as 3 and the machine type based on your workloads. For our sample\nmicroservices application, a small machine type is good enough. 3 nodes should\nbe good enough to start with since our cluster will auto scale based on\nworkloads.<\/li><\/ul>\n\n\n\n<p><em>Figure 4 &#8211; Cluster Configuration \u2013 Node pools<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"305\" height=\"299\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-4.png\" alt=\"\" class=\"wp-image-2612\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-4.png 305w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-4-300x294.png 300w\" sizes=\"(max-width: 305px) 100vw, 305px\" \/><\/figure>\n\n\n\n<ul><li>Click Enable-VPC native and select the VPN network and subnet that was\ncreated earlier in Step 1.<\/li><\/ul>\n\n\n\n<p><em>Figure 5 &#8211; Cluster Configuration \u2013 Networking options<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"348\" height=\"333\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-5.png\" alt=\"\" class=\"wp-image-2613\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-5.png 348w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-5-300x287.png 300w\" sizes=\"(max-width: 348px) 100vw, 348px\" \/><\/figure>\n\n\n\n<ul><li>Select Enable\nHttp Load balancing for the load balancing component. Select Private Cluster\nand Select Access Master using its external IP address and specify the IP\naddress. Click Enable master authorized networks and specify the IP which can\nconnect the master. We specify 0.0.0.0\/0 for now to allow access from any IP\naddress for running the deployment scripts (or you can create a VM in the same\nVPN network and connect to the master). Please remove the authorized network\nonce the deployment is done.<\/li><\/ul>\n\n\n\n<p><em>Figure 6 &#8211; Cluster Configuration \u2013 Security options<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"354\" height=\"336\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-6.png\" alt=\"\" class=\"wp-image-2614\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-6.png 354w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-6-300x285.png 300w\" sizes=\"(max-width: 354px) 100vw, 354px\" \/><\/figure>\n\n\n\n<ul><li>Next, enable the logging features and create the\ncluster. <\/li><\/ul>\n\n\n\n<p><em>Figure 7 &#8211; Cluster Configuration \u2013 Logging options<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"341\" height=\"353\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-7.png\" alt=\"\" class=\"wp-image-2615\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-7.png 341w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-7-290x300.png 290w\" sizes=\"(max-width: 341px) 100vw, 341px\" \/><\/figure>\n\n\n\n<h2>Create Cloud NAT\nConfiguration<\/h2>\n\n\n\n<p>In this step, we would create Cloud NAT. Cloud NAT allows VMs instances without external IP\naddresses and private Google Kubernetes Engine (GKE) clusters to connect to the\nInternet. <\/p>\n\n\n\n<p>Cloud NAT implements outbound NAT\n(i.e. network translation, mapping internal IP addresses to external IP) to\nallow instances to reach the Internet.<\/p>\n\n\n\n<p>Go to Network Services &#8211; &gt; Cloud\nNAT &#8211; &gt; Create NAT Gateway<\/p>\n\n\n\n<ul><li>Enter a name for gateway and select\nVPC network as backend-vpc (created in Step 1).<\/li><li>Select the region as us-east 1 (same\nas the VPC region).<\/li><\/ul>\n\n\n\n<p><em>Figure 8 \u2013 Create NAT Gateway<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"351\" height=\"455\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-8.png\" alt=\"\" class=\"wp-image-2616\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-8.png 351w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-8-231x300.png 231w\" sizes=\"(max-width: 351px) 100vw, 351px\" \/><\/figure>\n\n\n\n<ul><li>Click create new Cloud router. Enter the name and\nclick continue. Cloud Router enables dynamic routing for the VPC. For more\ndetails, kindly refer to <a href=\"https:\/\/cloud.google.com\/router\/docs\/concepts\/overview\"><strong>https:\/\/cloud.google.com\/router\/docs\/concepts\/overview<\/strong><\/a>.<\/li><\/ul>\n\n\n\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Figure 9 \u2013 Create Router<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"318\" height=\"248\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-9.png\" alt=\"\" class=\"wp-image-2617\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-9.png 318w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-9-300x234.png 300w\" sizes=\"(max-width: 318px) 100vw, 318px\" \/><\/figure>\n\n\n\n<ul><li>In the NAT mapping, select Manual NAT IP\naddress.&nbsp; We don\u2019t select automatic as we\nwould like to reserve a set of IPs that we can provide to external\nservices\/partners to whitelist on their servers. Choosing automatic would\ncreate and release IP based on workloads.<\/li><\/ul>\n\n\n\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Figure 10 \u2013 Create NAT Mapping<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"315\" height=\"244\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-10.png\" alt=\"\" class=\"wp-image-2618\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-10.png 315w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-10-300x232.png 300w\" sizes=\"(max-width: 315px) 100vw, 315px\" \/><\/figure>\n\n\n\n<ul><li>Select Create IP address and enter the name of\nthe IP address.<\/li><\/ul>\n\n\n\n<p><em>Figure 11 \u2013 Create Static IP address<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"300\" height=\"157\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-11.png\" alt=\"\" class=\"wp-image-2619\"\/><\/figure>\n\n\n\n<ul><li>Similarly, create one more IP address. Two\nexternal outbound IPs are sufficient for our network. You can add new IPs based\nlater, if you identify bottlenecks (through monitoring) in your network.<\/li><\/ul>\n\n\n\n<ul><li>The following image shows the summary of NAT\nconfiguration. Click create.<\/li><\/ul>\n\n\n\n<p><em>Figure 12 \u2013 NAT Gateway configuration<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"267\" height=\"339\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-12.png\" alt=\"\" class=\"wp-image-2620\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-12.png 267w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-12-236x300.png 236w\" sizes=\"(max-width: 267px) 100vw, 267px\" \/><\/figure>\n\n\n\n<ul><li>Once created, wait until the status is Running for changes to be effective. <\/li><\/ul>\n\n\n\n<p><em>Figure 13 \u2013 Cloud NAT Status<\/em>  <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"355\" height=\"146\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-14.png\" alt=\"\" class=\"wp-image-2623\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-14.png 355w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-14-300x123.png 300w\" sizes=\"(max-width: 355px) 100vw, 355px\" \/><\/figure>\n\n\n\n<p><a href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-2\/\">Click here for next article<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article we would go about building the production topology and deploying our microservices application using Google Ingress Controller Create the VPN The first step is to create a virtual private network for our solution.&nbsp; Go to Networking -&gt; VPC Networks &#8211; &gt; VPC Network &#8211; &gt; Create VPC Network. We will create a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,79],"tags":[285],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.0.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Building Production Topology with Google Cloud - Part 1 - Current and Future Technology Trends by Navveen Balani<\/title>\n<meta name=\"description\" content=\"Building Production Topology with Google Cloud - Part 1 - Articles\" \/>\n<link rel=\"canonical\" href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building Production Topology with Google Cloud - Part 1 - Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"og:description\" content=\"Building Production Topology with Google Cloud - Part 1 - Articles\" \/>\n<meta property=\"og:url\" content=\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"article:published_time\" content=\"2019-03-17T13:04:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-17T15:28:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-1.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"4 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/navveenbalani.dev\/#website\",\"url\":\"https:\/\/navveenbalani.dev\/\",\"name\":\"Current and Future Technology Trends by Navveen Balani\",\"description\":\"Current and Future Technology Trends by Navveen Balani\",\"publisher\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/navveenbalani.dev\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-1.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/#webpage\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/\",\"name\":\"Building Production Topology with Google Cloud - Part 1 - Current and Future Technology Trends by Navveen Balani\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/#primaryimage\"},\"datePublished\":\"2019-03-17T13:04:04+00:00\",\"dateModified\":\"2019-12-17T15:28:30+00:00\",\"description\":\"Building Production Topology with Google Cloud - Part 1 - Articles\",\"breadcrumb\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/\",\"url\":\"https:\/\/navveenbalani.dev\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/\",\"name\":\"Building Production Topology with Google Cloud &#8211; Part 1\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/#webpage\"},\"author\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"headline\":\"Building Production Topology with Google Cloud &#8211; Part 1\",\"datePublished\":\"2019-03-17T13:04:04+00:00\",\"dateModified\":\"2019-12-17T15:28:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"image\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-production-topology-with-google-cloud-part-1\/#primaryimage\"},\"keywords\":\"google-cloud\",\"articleSection\":\"Articles,Cloud Computing\",\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\",\"name\":\"Navveen\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/navveenbalani.dev\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/07\/navveen_balani.jpeg\",\"width\":200,\"height\":200,\"caption\":\"Navveen\"},\"logo\":{\"@id\":\"https:\/\/navveenbalani.dev\/#personlogo\"},\"sameAs\":[\"http:\/\/naveenbalani.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2605"}],"collection":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/comments?post=2605"}],"version-history":[{"count":7,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2605\/revisions"}],"predecessor-version":[{"id":2681,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2605\/revisions\/2681"}],"wp:attachment":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/media?parent=2605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/categories?post=2605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/tags?post=2605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}