2020/10/05

[GKE]LoadBalancer Serviceで接続元のIPが透過するようにする

gkek8s

結論

externalTrafficPolicy: Local のプロパティを設定します。

例えば、webサーバーのアプリを公開する場合は、以下のような感じになります。

apiVersion: v1
kind: Service
metadata:
  name: your-service-name
  namespace: your-namespace
  labels:
    app: your-app-name
spec:
  type: LoadBalancer
  loadBalancerIP: XXX.XXX.XXX.XXX
  externalTrafficPolicy: Local  # これ
  ports:
  - name: http
    port: 80
    targetPort: http
  - name: https
    port: 443
    targetPort: https
  selector:
    app: your-app-name

詳細

GKEのServiceを使って、Webサーバーを公開する場合、もし上記の設定を行わないと
Webサーバーのアクセス元のIPアドレスが、Serviceで作ったLoadbalancerのIPアドレスになってしまい
実際にアクセスしているクライアントのIPアドレスが渡らなくなってしまいます。

上記の設定を行うことで、アクセスしているクライアントのIPアドレスをWebサーバー側で取得することができるようになりました。

参考サイト

以上です。