traefik を使用して、実際のソース IP アドレスを Kubernetes ポッドに取得しようとしています。プロキシ プロトコルが有効になっているデジタル オーシャン ロード バランサーを使用しています。また、外部トラフィック ポリシーをローカルに設定するように K8s サービス yaml を構成しました。
Traefik Ingress の K8s の configmap から抽出します。実際の IP は編集しましたが、ロード バランサーの IP と Kubernetes が動作するノードのプライベート IP を使用しています
[entryPoints]
[entryPoints.http]
address = ":80"
compress = true
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
compress = true
[entryPoints.https.tls]
[[entryPoints.https.tls.certificates]]
CertFile = "/ssl/client_co.crt"
KeyFile = "/ssl/tls.key"
[entryPoints.https.proxyProtocol]
trustedIPs = ["Load Balancer IP, Kubernetes Worker Node IPs"]
[entryPoints.https.redirect]
regex = "^https://(?:www\\.)(.*)"
replacement = "https://$1"
permanent = true
これは、デプロイメント ファイル サービス yaml の一部です。
kind: Service
apiVersion: v1
metadata:
name: traefik-ingress-service
annotations:
service.beta.kubernetes.io/do-loadbalancer-enable-proxy-protocol: "true"
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- protocol: TCP
port: 80
name: web
- protocol: TCP
port: 443
name: https
# - protocol: TCP
# port: 8080
name: admin
type: LoadBalancer
externalTrafficPolicy: Local
どんな助けでも大歓迎です。