2020/10/05
[GKE]LoadBalancer Serviceで接続元のIPが透過するようにする
結論
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サーバー側で取得することができるようになりました。
参考サイト
以上です。
関連する記事
[小〜中規模向け]GKEにTiDBをデプロイする
MySQL互換のNewSQLであるTiDBをGKEにデプロイしてみました。
NATS JetStream Controllerを使ってNATSをGKEにデプロイする
helm chartのnackを使って、NATS JetStreamサーバーをデプロイして、Stream/Consumerをk8sリソースとして管理する
GKEにDragonflydbをデプロイする
redis互換のdragonflydbをGKEにデプロイしました
[GKE]Kafka Strimziをアップグレードする
GKEにデプロイしているKafka Strimzi 0.26.0を0.30.0にアップグレードする