Посол выдает ошибку 403 при попытке доступа к конечной точке веб-сокета в кластере. Вот шаги для воссоздания проблемы:
[Kube Environment: Docker для настольных компьютеров на Mac]
Установите Ambassador и Echo Service
- Развернуть Амбассадор с Шлем
helm repo add datawire https://getambassador.io
helm install ambassador datawire/ambassador
Развертывание развертывания / службы / сопоставления эха веб-сокета
---
apiVersion: v1
kind: Service
metadata:
name: websocket-echo
namespace: default
spec:
ports:
- name: http
port: 80
targetPort: 8080
selector:
app: websocket-echo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: websocket-echo
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: websocket-echo
template:
metadata:
labels:
app: websocket-echo
spec:
containers:
- name: backend
image: jmalloc/echo-server
ports:
- name: http
containerPort: 8080
---
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
name: websocket-echo
namespace: default
spec:
prefix: /websocket/
service: websocket-echo
allow_upgrade:
- websocket
✅ Убедитесь, что эхо-сервер доступен из модуля в кластере
- Создание оболочки узла в кластере
kubectl run my-shell --rm -i --tty --image node:12 -- bash
В оболочке скачать
wscat
npm i -g wscat
В оболочке подключиться к службе через конечную точку службы кластера
wscat -c websocket-echo.default.svc.cluster.local
Убедитесь, что соединение установлено и сообщения могут быть отправлены эхом
❌ Убедитесь, что эхо-сервер недоступен извне кластера
- Установите
wscat
на локальном компьютере
npm i -g wscat
Используя wscat, подключитесь к сервису с помощью сопоставления
wscat -c localhost/websocket-echo/
Убедитесь, что возвращенная ошибка:
error: Unexpected server response: 403
Я упустил что-то простое?