Do I need a service for exposing every app running in a pod?

12/17/2019

I'm planning to build a website to host static files. Users will upload their files and I deploy bunch of deployments with nginx images on those to a Kubernetes node. My main goal is for some point, users will deploy their apps to a subdomain like my-blog-app.mysite.com. After some time users can use custom domains.

I understand that when I deploy an nginx image on a pod, I have to create a service to expose port 80 (or 443) to the internet via load balancer.

I also read about Ingress, looks like what I need but I don't think I understand that concept.

My question is, for example if I have 500 nginx pods running (each is a different website), do I need a service for every pod in that node (in this case 500 services)?

-- Batın Evirgen
kubernetes
nginx

1 Answer

12/17/2019

You are looking for https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting.

With this type of Ingress, you route the traffic to the different nginx instances, based on the Host header, which perfectly matches your use-case.

In any case, yes, assuming your current architecture you need to have a service for each pod. Haven't you considered a different approach? Like having a general listener (nginx instances) and get the correct content based on authorization or something?

-- Ay0
Source: StackOverflow