[英]Route traffic using ingress
一年前我有一個項目的工作示例,該示例不再有效。
它基本上與此處提到的nginx.ingress.kubernetes.io/rewrite-target
屬性的行為變化有關 - https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/rewrite
我有 3 個應用程序,我想根據條件進行路由。
/*
到前端集群 IP 服務/api/battleship/*
到 Battleship-cluster-ip-service/api/connect4/*
to connect-four-cluster-ip-service一年前工作的工作示例是
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: frontend-cluster-ip-service
servicePort: 3000
- path: /api/connect4/
backend:
serviceName: connect-four-cluster-ip-service
servicePort: 8080
- path: /api/battleship/
backend:
serviceName: battleship-cluster-ip-service
servicePort: 8080
但是,這不再起作用,只有路由到/
,即到 frontend-cluster-ip-service 才起作用。 路由到其他服務器失敗,我得到 404。
然后我才知道nginx.ingress.kubernetes.io/rewrite-target
的變化。
我試着跟隨然后
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: frontend-cluster-ip-service
servicePort: 3000
- path: /api/connect4(/|$)(.*)
backend:
serviceName: connect-four-cluster-ip-service
servicePort: 8080
- path: /api/battleship(/|$)(.*)
backend:
serviceName: battleship-cluster-ip-service
servicePort: 8080
現在到connect-four-cluster-ip-service
和battleship-cluster-ip-service
的路由正在工作,但frontend-cluster-ip-service
不起作用,並且很少有 js 文件加載顯示錯誤:
我在更復雜的重寫時遇到了同樣的問題(它只針對一個不同的路徑)。
為每條路徑制作多個 Ingress 對我有用,但可能不是最干凈的解決方案。
我的入口定義: https : //github.com/FORTH-ICS-INSPIRE/artemis/blob/master/artemis-chart/templates/ingresses.yaml
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.