How We Managed to Retrieve Remote IP Addresses via Kubernetes Ingress

kubernetes
2022-06-19 23:42 (2 years ago) ytyng

I tried to obtain the source global IP address from HTTP requests through Kubernetes Ingress, but I ended up getting the IP address of Kubernetes' local network, which wasn't successful.

By switching Kubernetes to microk8s and using the built-in ingress controller, I was able to obtain the global remote IP address. Here are the notes.

The OS of the node is Ubuntu 20.04

1. Unsuccessful Attempt

In 2021.
The LAN is 192.168.0.0/24, and both the Kubernetes nodes and the requesting PC have IP addresses of 192.168.0.X.


I started Rancher with Docker, and in the built-in k3s cluster, I deployed the following:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/baremetal/deploy.yaml

This set up the ingress controller.

When I started an nginx pod and made a request through Ingress, checking the access logs showed:

X-Real-IP: 10.42.0.1
X-Forwarded-For: 10.42.0.1

This was the IP address of the gateway within Kubernetes.

I wanted this to be the original IP address of the requesting PC, but I couldn't find any useful information to achieve that.

2. Successful Attempt

In 2022.

I discarded the above Kubernetes cluster and created a new MicroK8s cluster.

sudo snap install microk8s --classic

Enabled the Ingress controller

microk8s enable dns ingress

With the Ingress manifest and other configurations the same as in step 1, when I made a request, the logs showed:

X-Real-IP: 192.168.0.159
X-Forwarded-For: 192.168.0.159

This correctly obtained the client's IP address.

Currently unrated
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。

Comments

Archive

2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011