Kubernetes 入口规则
Kubernetes ingress rule
我有一个 k8s 1.9.0
集群,下面是我的入口规则。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
labels:
app: report
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: "gayan.test.com"
http:
paths:
- path: /report
backend:
serviceName: qc-report-svc
servicePort: 80
- path: /report/*
backend:
serviceName: qc-report-svc
servicePort: 80
所以我有两个请求。
请求一个 - https://gayan.test.com/report/ping
这个请求命中 pod 并且 return 响应。
(GET /ping 200 302.079 ms - 63
)
请求两个 - wss://gayan.test.com/report/socket.io/?EIO=3&transport=websocket
。
这个请求甚至没有到达服务器。我认为这与入口规则有关。
我的问题是如何将所有 /report
流量发送到 qc-report-svc
服务?
假设您使用的是 Nginx Ingress Controller,您需要添加 nginx.org/websocket-services
注释以启用 WebSocket 支持。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
labels:
app: report
annotations:
ingress.kubernetes.io/rewrite-target: /
nginx.org/websocket-services: "qc-report-svc"
spec:
rules:
- host: "gayan.test.com"
http:
paths:
- path: /report
backend:
serviceName: qc-report-svc
servicePort: 80
我有一个 k8s 1.9.0
集群,下面是我的入口规则。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
labels:
app: report
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: "gayan.test.com"
http:
paths:
- path: /report
backend:
serviceName: qc-report-svc
servicePort: 80
- path: /report/*
backend:
serviceName: qc-report-svc
servicePort: 80
所以我有两个请求。
请求一个 - https://gayan.test.com/report/ping
这个请求命中 pod 并且 return 响应。
(GET /ping 200 302.079 ms - 63
)
请求两个 - wss://gayan.test.com/report/socket.io/?EIO=3&transport=websocket
。
这个请求甚至没有到达服务器。我认为这与入口规则有关。
我的问题是如何将所有 /report
流量发送到 qc-report-svc
服务?
假设您使用的是 Nginx Ingress Controller,您需要添加 nginx.org/websocket-services
注释以启用 WebSocket 支持。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
labels:
app: report
annotations:
ingress.kubernetes.io/rewrite-target: /
nginx.org/websocket-services: "qc-report-svc"
spec:
rules:
- host: "gayan.test.com"
http:
paths:
- path: /report
backend:
serviceName: qc-report-svc
servicePort: 80