我有一個部署了多個不同服務的 K8s 集群,并希望使用一個Ingress通過唯一的主機名將每個傳入請求路由到適當的服務DNS。
目前,我只能在使用根路徑時解決請求,即service-123.app.com.
一旦我嘗試使用無法解決的路徑提出請求。這些路徑是每個服務的有效路徑。例如,service-123.app.com/page/12345應用程式會期望。
我可能不完全理解 K8s Ingress 規則是如何作業的,但我希望它僅基于主機名進行匹配,并簡單地轉發到相應服務的路徑上。
我在這里錯過了一些非常簡單的東西嗎?任何幫助深表感謝。謝謝!
這是我的組態檔。
入口.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
......
name: app-name
namespace: default
spec:
rules:
- host: service-123.app.com
http:
- path: "/*"
backend:
serviceName: service-123
servicePort: 80
- host: service-456.app.com
http:
paths:
- path: "/*"
backend:
serviceName: service-456
servicePort: 80
服務.yaml
---
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
app: service-123
name: service-123
namespace: default
spec:
ports:
- name: port8080
port: 80
targetPort: 8080
selector:
app: service-123
type: NodePort
uj5u.com熱心網友回復:
不確定您使用的是哪個 K8s 和入口控制器,但在以后的 K8s 中,您可以指定pathType哪個更好地處理路徑通配符。
你會有這樣的事情:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
......
name: app-name
namespace: default
spec:
rules:
- host: service-123.app.com
http:
- path: /
pathType: Prefix
backend:
serviceName: service-123
servicePort: 80
- host: service-456.app.com
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: service-456
servicePort: 80
如果您使用的是nginx 入口控制器,那么查看正確的 nginx 配置的一個好方法是查看nginx.conf入口控制器生成的實際值。
$ kubectl cp <nginx-ingress-controller-pod>:nginx.conf nginx.conf
$ cat nginx.conf
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453970.html
