アプリケーションにアクセスするクライアントの外部 IP アドレスを取得したいと考えています。AWS/Kops で kubernetes を使用しています。Ingress セットアップは、Voyager 構成の HAProxy です。LoadBalancer サービスを使用しています。
アノテーションx-forwarded-for
を使用してヘッダーを追加するように、Voyager を介して HAProxy を構成しました。ingress.appscode.com/default-option: '{"forwardfor": "true"}'
問題は、ヘッダーをテストすると、必要に応じて外部 IP ではなく、kubernetes ノードの 1 つの内部 IP アドレスが送信されることです。
LoadBalancer voyager が内部で使用しているものはわかりません。関連するポッドはなく、イングレス コントローラー用に 1 つだけです。
kubectl describe svc voyager-my-app
出力
Name: <name>
Namespace: <namespace>
Labels: origin=voyager
origin-api-group=voyager.appscode.com
origin-name=<origin-name>
Annotations: ingress.appscode.com/last-applied-annotation-keys:
ingress.appscode.com/origin-api-schema: voyager.appscode.com/v1beta1
ingress.appscode.com/origin-name: <origin-name>
Selector: origin-api-group=voyager.appscode.com,origin-name=<origin-name>,origin=voyager
Type: LoadBalancer
IP: 100.68.184.233
LoadBalancer Ingress: <aws_url>
Port: tcp-443 443/TCP
TargetPort: 443/TCP
NodePort: tcp-443 32639/TCP
Endpoints: 100.96.3.204:443
Port: tcp-80 80/TCP
TargetPort: 80/TCP
NodePort: tcp-80 30263/TCP
Endpoints: 100.96.3.204:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>