[英]NGINX Ingress Controller's Load Balancer is hiding the real client IP
[英]How to setup load balancer with ingress nginx controller
我是微服務的新手。 我幾乎沒有要部署為微服務的應用程序。
我需要一個 API 和負載平衡器。 對於 API 網關,我了解到 Ingress Nginx。但我不確定熱設置負載平衡。 但是我可以為 API 網關配置它,如下所示。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: example.dev
http:
paths:
- path: /api/users/?(.*)
backend:
serviceName: auth-srv
servicePort: 3000
- path: /api/orders/?(.*)
backend:
serviceName: order-srv
servicePort: 3000
- path: /?(.*)
backend:
serviceName: client-srv
servicePort: 3000
負載均衡器位於 API 網關之前,即 nginx controller,
我將如何配置 Ingress-Nginx 以實現負載平衡?
因為負載均衡器會將請求重定向到 nginx controller
所以, Load balancer -> API Gateway > /api/orders
現在, /api/orders -> order-srv -> pods
顯然,負載均衡器應該決定將請求路由到哪個 pod?
我怎樣才能做到這一點?
嗯,這有點像——
您收到了來自外部世界的請求,該請求已在負載均衡器層的第一級攔截,並且 API 網關應該是您將保留所有 URL 映射的微服務之一 - /api/orders/{orderId}
將此帶到您的 API 網關,在該 API 網關中,您可以通過Fully Qualified Domain Name of order service (FQDN):portNumber/{uri}
將其重定向到幕后的某個訂單服務
因此,最好通過入口規則將流量簡單地路由到前端和 API 網關,即
- path: /?(.*)
將把它帶到客戶端服務或前端
- path: /api/?(.*)
這會將其帶到 API 網關服務,該服務將 map 路由到出現在幕后的所有服務
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.