{"id":82827,"date":"2026-09-21T09:27:19","date_gmt":"2026-09-21T03:57:19","guid":{"rendered":"https:\/\/tothenewco.pro\/blog\/?p=82827"},"modified":"2026-09-29T13:11:00","modified_gmt":"2026-09-29T07:41:00","slug":"getting-traffic-into-kubernetes-aws-vs-gcp","status":"publish","type":"post","link":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/","title":{"rendered":"Getting traffic into Kubernetes: AWS vs GCP"},"content":{"rendered":"<h2 style=\"font-size: 22px; font-weight: 800; color: #12352c; margin: 0 0 16px 0; line-height: 1.35;\">Why a GKE Ingress can look fine in kubectl and still have no IP \u2014 and how that differs from EKS and ALB<\/h2>\n<p style=\"font-size: 17px; line-height: 1.7; color: #4a5568;\">If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set <code>ingressClassName: alb<\/code>, and AWS creates an ALB. Certificates often come from ACM. HTTP and HTTPS are listeners on that ALB.<\/p>\n<p style=\"font-size: 17px; line-height: 1.7;\">GKE can look the same in YAML (<code>kind: Ingress<\/code>) and behave totally differently. On GKE, external Ingress with class <code>gce<\/code> is handled by <span style=\"background: #fff3bf; padding: 1px 4px;\">GLBC<\/span> (the GCE L7 \/ Ingress controller). It does not create an AWS-style ALB. It creates a Google HTTP(S) load balancer: forwarding rules, a URL map, backends, and often <span style=\"background: #fff3bf; padding: 1px 4px;\">NEGs<\/span> (network endpoint groups) instead of instance groups.<\/p>\n<p style=\"font-size: 17px; line-height: 1.7;\"><strong>Same Kubernetes API. Different cloud object.<\/strong> That is why copying an EKS Ingress into GKE and hoping is a bad idea. We learned that the hard way: Ingress objects applied fine, Helm said success (or timed out), and there was still no IP.<\/p>\n<h2 style=\"font-size: 20px; font-weight: 800; color: #12352c; border-bottom: 3px solid #1a7f64; padding-bottom: 6px; margin-top: 28px;\">The one-line map<\/h2>\n<p style=\"font-size: 14px; font-weight: 800; color: #1d4e89; margin-bottom: 6px;\">HTTP(S) to pods<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 16px;\">\n<tbody>\n<tr>\n<td style=\"width: 50%; background: #f5efe6; border-left: 5px solid #e8a317; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #8a5a00;\">AWS \/ EKS<\/strong><br \/>\nALB plus target groups<\/td>\n<td style=\"width: 50%; background: #e8f3ee; border-left: 5px solid #1a7f64; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #0f5c48;\">GCP \/ GKE<\/strong><br \/>\nGCE Ingress plus URL map plus backends<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"font-size: 14px; font-weight: 800; color: #1d4e89; margin-bottom: 6px;\">Ingress class<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 16px;\">\n<tbody>\n<tr>\n<td style=\"width: 50%; background: #f5efe6; border-left: 5px solid #e8a317; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #8a5a00;\">AWS \/ EKS<\/strong><br \/>\n<code>alb<\/code> \u2014 controller you install<\/td>\n<td style=\"width: 50%; background: #e8f3ee; border-left: 5px solid #1a7f64; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #0f5c48;\">GCP \/ GKE<\/strong><br \/>\n<code>gce<\/code> \u2014 GLBC; the class <strong>must exist<\/strong> in the cluster<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"font-size: 14px; font-weight: 800; color: #1d4e89; margin-bottom: 6px;\">TLS certificate<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 16px;\">\n<tbody>\n<tr>\n<td style=\"width: 50%; background: #f5efe6; border-left: 5px solid #e8a317; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #8a5a00;\">AWS \/ EKS<\/strong><br \/>\nACM ARN on the Ingress or annotations<\/td>\n<td style=\"width: 50%; background: #e8f3ee; border-left: 5px solid #1a7f64; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #0f5c48;\">GCP \/ GKE<\/strong><br \/>\nPre-shared Google cert <strong>name<\/strong> on the Ingress<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"font-size: 14px; font-weight: 800; color: #1d4e89; margin-bottom: 6px;\">HTTPS only<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 16px;\">\n<tbody>\n<tr>\n<td style=\"width: 50%; background: #f5efe6; border-left: 5px solid #e8a317; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #8a5a00;\">AWS \/ EKS<\/strong><br \/>\nNo HTTP listener, or redirect 80 to 443<\/td>\n<td style=\"width: 50%; background: #e8f3ee; border-left: 5px solid #1a7f64; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #0f5c48;\">GCP \/ GKE<\/strong><br \/>\nAnnotation so GLBC does not create HTTP port 80<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"font-size: 14px; font-weight: 800; color: #1d4e89; margin-bottom: 6px;\">TLS strength<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 16px;\">\n<tbody>\n<tr>\n<td style=\"width: 50%; background: #f5efe6; border-left: 5px solid #e8a317; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #8a5a00;\">AWS \/ EKS<\/strong><br \/>\nALB SSL policy<\/td>\n<td style=\"width: 50%; background: #e8f3ee; border-left: 5px solid #1a7f64; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #0f5c48;\">GCP \/ GKE<\/strong><br \/>\nGCP SSL policy via FrontendConfig, not only an annotation<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"font-size: 14px; font-weight: 800; color: #1d4e89; margin-bottom: 6px;\">Point at pods<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 16px;\">\n<tbody>\n<tr>\n<td style=\"width: 50%; background: #f5efe6; border-left: 5px solid #e8a317; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #8a5a00;\">AWS \/ EKS<\/strong><br \/>\nTarget group to instances or IPs<\/td>\n<td style=\"width: 50%; background: #e8f3ee; border-left: 5px solid #1a7f64; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #0f5c48;\">GCP \/ GKE<\/strong><br \/>\nNEG on the Service (<code>ingress: true<\/code>)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"font-size: 14px; font-weight: 800; color: #1d4e89; margin-bottom: 6px;\">Internal only<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 16px;\">\n<tbody>\n<tr>\n<td style=\"width: 50%; background: #f5efe6; border-left: 5px solid #e8a317; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #8a5a00;\">AWS \/ EKS<\/strong><br \/>\nInternal ALB or NLB<\/td>\n<td style=\"width: 50%; background: #e8f3ee; border-left: 5px solid #1a7f64; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #0f5c48;\">GCP \/ GKE<\/strong><br \/>\nClass <code>gce-internal<\/code> (regional IP)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"background: #fdf3e7; border-left: 5px solid #c45c26; padding: 12px 14px;\"><strong style=\"color: #8a3b12;\">Nginx is a third option.<\/strong> A controller Deployment plus its own LoadBalancer Service can show CLASS &lt;none&gt; and still work. That is not GCE Ingress. Mixing them in your head is how you debug the wrong IP.<\/p>\n<h2 style=\"font-size: 20px; font-weight: 800; color: #12352c; border-bottom: 3px solid #1a7f64; padding-bottom: 6px; margin-top: 28px;\">What we had<\/h2>\n<p>Each app Helm chart could create its own Ingress. Every CD run did <code>helm upgrade<\/code>. So:<\/p>\n<ul>\n<li>The load balancer was the same Google LB family, not a fresh one each time.<\/li>\n<li>SSL settings we fixed in Console vanished on the next deploy.<\/li>\n<li>Port 80 stayed up even though we only wanted HTTPS.<\/li>\n<li>Path routing (<code>\/api<\/code>, <code>\/mobile<\/code>) lived in the UI chart. Two charts owning one hostname caused conflicts.<\/li>\n<\/ul>\n<p>We moved hosts, certs, HTTPS-only settings, and SSL policy into a <span style=\"background: #fff3bf; padding: 1px 4px;\">shared ingress repo<\/span>. App charts only ship Deployment and Service. On the Service we kept:<\/p>\n<p style=\"background: #1e2430; color: #e8eef7; padding: 12px 14px; font-family: monospace; font-size: 14px;\">cloud.google.com\/neg: &#8216;{&#8220;ingress&#8221;: true}&#8217;<\/p>\n<p>On AWS that is closer to \u201cthis Service should be a target group for the ALB.\u201d On GKE it means \u201cuse container-native load balancing.\u201d It is not an Ingress. Leave it on the app Service.<\/p>\n<h2 style=\"font-size: 20px; font-weight: 800; color: #12352c; border-bottom: 3px solid #1a7f64; padding-bottom: 6px; margin-top: 28px;\">Failure 1: Ingress in the cluster, no address<\/h2>\n<p><code>kubectl get ingress -n app-ns<\/code> showed the resource. No IP in <code>status.loadBalancer<\/code>.<\/p>\n<p>On AWS, if the ALB controller is not installed, you notice quickly. On GKE the controller is usually already running, but it only binds Ingresses whose IngressClass it owns.<\/p>\n<p style=\"background: #1e2430; color: #e8eef7; padding: 12px 14px; font-family: monospace; font-size: 14px;\">kubectl get ingressclass<\/p>\n<p>If <code>gce<\/code> is missing, <code>ingressClassName: gce<\/code> is a dangling pointer. No VIP.<\/p>\n<p>We used a Helm option like <code>ensureGceIngressClass: true<\/code> on the cluster that had no <code>gce<\/code> class. It creates:<\/p>\n<ul>\n<li>IngressClass named <code>gce<\/code><\/li>\n<li>controller <code>k8s.io\/ingress-gce<\/code> (the official GCE IngressClass controller string)<\/li>\n<li><code>helm.sh\/resource-policy: keep<\/code> so uninstall does not delete a cluster-wide class<\/li>\n<\/ul>\n<p style=\"background: #fdf3e7; border-left: 5px solid #c45c26; padding: 12px 14px;\"><strong style=\"color: #8a3b12;\">Do not enable that flag<\/strong> on a cluster where <code>gce<\/code> already exists. You will fight apply conflicts. Also do not mix <code>gce<\/code> and <code>gce-internal<\/code> on one Ingress \u2014 that is like putting internet-facing and internal scheme on the same ALB.<\/p>\n<h2 style=\"font-size: 20px; font-weight: 800; color: #12352c; border-bottom: 3px solid #1a7f64; padding-bottom: 6px; margin-top: 28px;\">Failure 2: TLS policy reset after Helm<\/h2>\n<p>On AWS you set an SSL policy on the ALB listener. Terraform or Helm usually owns it.<\/p>\n<p>On GKE we set an SSL-policy annotation on the Ingress. It looked right in Console, then fell back after the next Helm upgrade. Google\u2019s supported way to keep the policy is a FrontendConfig, not that annotation alone. What stuck:<\/p>\n<p style=\"background: #1e2430; color: #e8eef7; padding: 12px 14px; font-family: monospace; font-size: 13px; white-space: pre-wrap;\">apiVersion: networking.gke.io\/v1beta1<br \/>\nkind: FrontendConfig<br \/>\nmetadata:<br \/>\nname: example-app-frontend<br \/>\nspec:<br \/>\nsslPolicy: example-tls-policy<\/p>\n<p>Hook that FrontendConfig on the Ingress. The policy itself is a GCP resource in the <strong>same project<\/strong> as the load balancer. Same idea as ACM and ALB in the same account and region.<\/p>\n<h2 style=\"font-size: 20px; font-weight: 800; color: #12352c; border-bottom: 3px solid #1a7f64; padding-bottom: 6px; margin-top: 28px;\">Failure 3: HTTP still listening<\/h2>\n<p>On AWS: no HTTP listener, or a listener that only redirects to 443.<\/p>\n<p>GKE default is still to create HTTP port 80 unless you set:<\/p>\n<p style=\"background: #1e2430; color: #e8eef7; padding: 12px 14px; font-family: monospace; font-size: 14px;\">kubernetes.io\/ingress.allow-http: &#8220;false&#8221;<\/p>\n<p>Then it is HTTPS only. There is no magic redirect on port 80 if port 80 is not there.<\/p>\n<h2 style=\"font-size: 20px; font-weight: 800; color: #12352c; border-bottom: 3px solid #1a7f64; padding-bottom: 6px; margin-top: 28px;\">Failure 4: certificates<\/h2>\n<p>AWS: ACM cert ARN, often <code>alb.ingress.kubernetes.io\/certificate-arn<\/code>.<\/p>\n<p>GKE (our setup): Google-managed or pre-shared cert resource name:<\/p>\n<p style=\"background: #1e2430; color: #e8eef7; padding: 12px 14px; font-family: monospace; font-size: 14px;\">ingress.gcp.kubernetes.io\/pre-shared-cert: &#8220;&lt;cert-resource-name&gt;&#8221;<\/p>\n<p>The cert must exist in that project. The hostname on the Ingress must be on the cert. <code>dev.app.example.com<\/code> is not the same as <code>test.app.example.com<\/code>. Changing a string in YAML does not create a cert.<\/p>\n<p>First create of cert plus Google HTTPS LB is slow. Helm <code>--wait<\/code> can hit <span style=\"background: #fff3bf; padding: 1px 4px;\">context deadline exceeded<\/span> while the Deployment is fine. Check the Ingress IP before you blame the app. Same class of problem as waiting for an ALB to become active, except Google\u2019s first LB is often slower.<\/p>\n<h2 style=\"font-size: 20px; font-weight: 800; color: #12352c; border-bottom: 3px solid #1a7f64; padding-bottom: 6px; margin-top: 28px;\">Helm &#8211;atomic made a mess<\/h2>\n<p>We pulled Ingress out of the app chart. A failed upgrade rolled back to an old revision that still had an Ingress with class <code>gce<\/code>. The cluster had no IngressClass named <code>gce<\/code>, so rollback failed with: <span style=\"background: #fff3bf; padding: 1px 4px;\">no IngressClass with the name &#8220;gce&#8221;<\/span>. The first error was often just a wait timeout. Fix the class (or do not roll back onto old Ingress YAML) before you chase Helm.<\/p>\n<h2 style=\"font-size: 20px; font-weight: 800; color: #12352c; border-bottom: 3px solid #1a7f64; padding-bottom: 6px; margin-top: 28px;\">How we run it now<\/h2>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 16px;\">\n<tbody>\n<tr>\n<td style=\"width: 50%; background: #f5efe6; border-left: 5px solid #e8a317; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #8a5a00;\">APP REPO<\/strong><br \/>\nDeployment, Service, NEG annotation, secrets. No Ingress.<\/td>\n<td style=\"width: 50%; background: #e8f3ee; border-left: 5px solid #1a7f64; padding: 10px 12px; vertical-align: top;\"><strong style=\"color: #0f5c48;\">INGRESS REPO<\/strong><br \/>\nHostname, cert, HTTPS-only, SSL policy, paths.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>IngressClass <code>gce<\/code>: once per cluster, if missing. App CD should not render Ingress. A leftover template that reads <code>.Values.ingress.version<\/code> when <code>ingress<\/code> is not set will fail Helm with a nil pointer. Delete the template or default the value.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Why a GKE Ingress can look fine in kubectl and still have no IP \u2014 and how that differs from EKS and ALB If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set ingressClassName: alb, and AWS creates an ALB. Certificates often come [&hellip;]<\/p>\n","protected":false},"author":1502,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":3,"footnotes":""},"categories":[2348],"tags":[4333,248,825,1916,1891,1892,5301,8968,6362,8427,8966,6259,1220,8965,8969,3965,6200,1898,7723,824,8967],"class_list":["post-82827","post","type-post","status-publish","format-standard","hentry","category-devops-technology","tag-alb","tag-aws","tag-certificates","tag-cloud","tag-containers","tag-devops","tag-eks","tag-frontendconfig","tag-gcp","tag-gke","tag-glbc","tag-helm","tag-https","tag-ingress","tag-ingressclass","tag-kubernetes","tag-loadbalancing","tag-networking","tag-sre","tag-ssl","tag-tls"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Why a GKE Ingress can look fine in kubectl and still have no IP \u2014 and how that differs from EKS and ALB If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set ingressClassName: alb, and AWS creates an ALB. Certificates often come\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Vishwas Pratap Singh Gautam\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"TO THE NEW BLOG\" \/>\n\t\t<meta property=\"og:type\" content=\"blog\" \/>\n\t\t<meta property=\"og:title\" content=\"Getting traffic into Kubernetes: AWS vs GCP | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Why a GKE Ingress can look fine in kubectl and still have no IP \u2014 and how that differs from EKS and ALB If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set ingressClassName: alb, and AWS creates an ALB. Certificates often come\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tothenew\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Getting traffic into Kubernetes: AWS vs GCP | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Why a GKE Ingress can look fine in kubectl and still have no IP \u2014 and how that differs from EKS and ALB If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set ingressClassName: alb, and AWS creates an ALB. Certificates often come\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/#article\",\"name\":\"Getting traffic into Kubernetes: AWS vs GCP | TO THE NEW Blog\",\"headline\":\"Getting traffic into Kubernetes: AWS vs GCP\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vishwas-gautam\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2026-09-21T09:27:19+05:30\",\"dateModified\":\"2026-09-29T13:11:00+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/#webpage\"},\"articleSection\":\"DevOps, ALB, aws, certificates, cloud, containers, devops, EKS, FrontendConfig, GCP, GKE, GLBC, Helm, https, Ingress, IngressClass, kubernetes, LoadBalancing, Networking, SRE, ssl, TLS\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/devops-technology\\\/#listItem\",\"name\":\"DevOps\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/devops-technology\\\/#listItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/devops-technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/#listItem\",\"name\":\"Getting traffic into Kubernetes: AWS vs GCP\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/#listItem\",\"position\":3,\"name\":\"Getting traffic into Kubernetes: AWS vs GCP\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/devops-technology\\\/#listItem\",\"name\":\"DevOps\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\",\"name\":\"TO THE NEW Blog\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vishwas-gautam\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vishwas-gautam\\\/\",\"name\":\"Vishwas Pratap Singh Gautam\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/#authorImage\",\"url\":\"https:\\\/\\\/newersworld-sf-static.tothenew.net\\\/prod\\\/profilePicFolder\\\/935453f9-411b-4b83-82c9-686c0b988e44_2672-Vishwas-Pratap-Singh-Gautam-PROFILEPICTURE.jpeg\",\"width\":96,\"height\":96,\"caption\":\"Vishwas Pratap Singh Gautam\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/\",\"name\":\"Getting traffic into Kubernetes: AWS vs GCP | TO THE NEW Blog\",\"description\":\"Why a GKE Ingress can look fine in kubectl and still have no IP \\u2014 and how that differs from EKS and ALB If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set ingressClassName: alb, and AWS creates an ALB. Certificates often come\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/getting-traffic-into-kubernetes-aws-vs-gcp\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vishwas-gautam\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vishwas-gautam\\\/#author\"},\"datePublished\":\"2026-09-21T09:27:19+05:30\",\"dateModified\":\"2026-09-29T13:11:00+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\",\"name\":\"TO THE NEW Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Getting traffic into Kubernetes: AWS vs GCP | TO THE NEW Blog","description":"Why a GKE Ingress can look fine in kubectl and still have no IP \u2014 and how that differs from EKS and ALB If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set ingressClassName: alb, and AWS creates an ALB. Certificates often come","canonical_url":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/#article","name":"Getting traffic into Kubernetes: AWS vs GCP | TO THE NEW Blog","headline":"Getting traffic into Kubernetes: AWS vs GCP","author":{"@id":"https:\/\/tothenewco.pro\/blog\/author\/vishwas-gautam\/#author"},"publisher":{"@id":"https:\/\/tothenewco.pro\/blog\/#organization"},"datePublished":"2026-09-21T09:27:19+05:30","dateModified":"2026-09-29T13:11:00+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/#webpage"},"isPartOf":{"@id":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/#webpage"},"articleSection":"DevOps, ALB, aws, certificates, cloud, containers, devops, EKS, FrontendConfig, GCP, GKE, GLBC, Helm, https, Ingress, IngressClass, kubernetes, LoadBalancing, Networking, SRE, ssl, TLS"},{"@type":"BreadcrumbList","@id":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog#listItem","position":1,"name":"Home","item":"https:\/\/tothenewco.pro\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/category\/devops-technology\/#listItem","name":"DevOps"}},{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/category\/devops-technology\/#listItem","position":2,"name":"DevOps","item":"https:\/\/tothenewco.pro\/blog\/category\/devops-technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/#listItem","name":"Getting traffic into Kubernetes: AWS vs GCP"},"previousItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/#listItem","position":3,"name":"Getting traffic into Kubernetes: AWS vs GCP","previousItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/category\/devops-technology\/#listItem","name":"DevOps"}}]},{"@type":"Organization","@id":"https:\/\/tothenewco.pro\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/tothenewco.pro\/blog\/"},{"@type":"Person","@id":"https:\/\/tothenewco.pro\/blog\/author\/vishwas-gautam\/#author","url":"https:\/\/tothenewco.pro\/blog\/author\/vishwas-gautam\/","name":"Vishwas Pratap Singh Gautam","image":{"@type":"ImageObject","@id":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/#authorImage","url":"https:\/\/newersworld-sf-static.tothenew.net\/prod\/profilePicFolder\/935453f9-411b-4b83-82c9-686c0b988e44_2672-Vishwas-Pratap-Singh-Gautam-PROFILEPICTURE.jpeg","width":96,"height":96,"caption":"Vishwas Pratap Singh Gautam"}},{"@type":"WebPage","@id":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/#webpage","url":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/","name":"Getting traffic into Kubernetes: AWS vs GCP | TO THE NEW Blog","description":"Why a GKE Ingress can look fine in kubectl and still have no IP \u2014 and how that differs from EKS and ALB If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set ingressClassName: alb, and AWS creates an ALB. Certificates often come","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/tothenewco.pro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/#breadcrumblist"},"author":{"@id":"https:\/\/tothenewco.pro\/blog\/author\/vishwas-gautam\/#author"},"creator":{"@id":"https:\/\/tothenewco.pro\/blog\/author\/vishwas-gautam\/#author"},"datePublished":"2026-09-21T09:27:19+05:30","dateModified":"2026-09-29T13:11:00+05:30"},{"@type":"WebSite","@id":"https:\/\/tothenewco.pro\/blog\/#website","url":"https:\/\/tothenewco.pro\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/tothenewco.pro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Getting traffic into Kubernetes: AWS vs GCP | TO THE NEW Blog","og:description":"Why a GKE Ingress can look fine in kubectl and still have no IP \u2014 and how that differs from EKS and ALB If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set ingressClassName: alb, and AWS creates an ALB. Certificates often come","og:url":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/","og:image":"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Getting traffic into Kubernetes: AWS vs GCP | TO THE NEW Blog","twitter:description":"Why a GKE Ingress can look fine in kubectl and still have no IP \u2014 and how that differs from EKS and ALB If you have used EKS, HTTP Ingress usually means an Application Load Balancer. Someone installs the AWS Load Balancer Controller, you set ingressClassName: alb, and AWS creates an ALB. Certificates often come","twitter:image":"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"82827","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"created":"2026-09-08 20:17:21","updated":"2026-09-29 07:41:02","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/tothenewco.pro\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/tothenewco.pro\/blog\/category\/devops-technology\/\" title=\"DevOps\">DevOps<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tGetting traffic into Kubernetes: AWS vs GCP\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/tothenewco.pro\/blog"},{"label":"DevOps","link":"https:\/\/tothenewco.pro\/blog\/category\/devops-technology\/"},{"label":"Getting traffic into Kubernetes: AWS vs GCP","link":"https:\/\/tothenewco.pro\/blog\/getting-traffic-into-kubernetes-aws-vs-gcp\/"}],"_links":{"self":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts\/82827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/users\/1502"}],"replies":[{"embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/comments?post=82827"}],"version-history":[{"count":3,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts\/82827\/revisions"}],"predecessor-version":[{"id":83762,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts\/82827\/revisions\/83762"}],"wp:attachment":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/media?parent=82827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/categories?post=82827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/tags?post=82827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}