Правило входа в Куберне
У меня есть 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
Этот запрос попадает в модуль и возвращает ответ. (GET /ping 200 302.079 ms - 63
)
Запрос два - wss://gayan.test.com/report/socket.io/?EIO=3&transport=websocket
, Этот запрос даже не попадает на сервер. Я думаю, что это связано с правилом доступа.
Мой вопрос, как я могу отправить все /report
движение в qc-report-svc
оказание услуг?
1 ответ
Решение
Предполагая, что вы используете 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