Question

How do I pass client IP in a Kubernetes Cluster to my NodeJS application?

I have my website hosted on Kubernetes Cluster with a LoadBalancer and everything works as it should. I stumbled upon some documentation in how to get the visitor/client IP

Long story short: setup proxy protocol in the loadbalancer and set externalTrafficPolicy: "Local" Most of the people seem satisfied with that approach. Though, since I am completely new to Kubernetes…

How do you actually access that IP? Is it in a log file? Because when I run kubectl logs my-app -c my-container --since=1h the output is always empty, even if I am interacting with the page. But most importantly, even if it is in a log file, how can I pass it to my NodeJS application?

I also followed this guide https://www.digitalocean.com/community/tutorial_series/from-containers-to-kubernetes-with-node-js but there is no mention in how you can access/forward the IP to the node front-end.


Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

Hi @mazzespazze

I understand that you want to preserver client IP address. Proxy protocol enables is the fact that it will preserve the X-Forwarded-For HTTP header which will container the original client IP to achieve this you need to follow below :

  • “Local” externaltrafficpolicy on the LB service
  • proxy protocol enabled for the LB via the annotation
  • proxy protocol enabled in the ingress controller
  • Traffic is HTTP

If those conditions are met you should be able to retrieve client IP via the X-Forwarded-For header on the request.

I hope this helps!

Best Regards, Purnima Kumari