Report this

What is the reason for this report?

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

Posted on January 27, 2021

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.



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!

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.

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

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.