Развертывание k8s на AWS с KOPS. Я создал nginx ingress https://github.com/kubernetes/ingress-nginx образ nginx-ingress-controller: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.18.0
Все работает, и ясмог получить доступ к приложениям извне, используя классический балансировщик нагрузки aws, созданный службой nginx.
Недавно мы начали работать над веб-сокетами. Я развернул свои службы в k8s и пытался получить внешний доступ.
Я создал службу и вход для своего приложения. Ingress теперь указывает на loadbalancer (ниже json-файла).
Я создал запись route53 в aws и пытаюсь подключиться к ней, но у меня появляется ошибка ниже, когда я пытаюсь подключиться из моего клиентского приложения через браузер chrome
Сбой соединения WebSocket с 'wss: //blockchain.aro/socket.io/? EIO = 3 & transport = websocket': ошибка во время рукопожатия WebSocket: непредвиденный код ответа: 400
Я попытался создать балансировщик нагрузки приложения, но не смог соединиться с wss://<host>
Ошибка:
Соединение WebSocket с 'wss: //blockchain.aro/socket. io /? EIO = 3 & transport = websocket 'не удалось: ошибка во время рукопожатия WebSocket: непредвиденный код ответа: 400
const config: SocketIoConfig = { url: 'wss://blockchain.aro',
options: { autoConnect: false, transports: ['websocket']} };
Ingress:
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"extensions/v1beta1\",\"kind\":\"Ingress\",\"metadata\":{\"annotations\":{},\"name\":\"blockchain\",\"namespace\":\"adapt\"},\"spec\":{\"rules\":[{\"host\":\"blockchain.aro\",\"http\":{\"paths\":[{\"backend\":{\"serviceName\":\"blockchain\",\"servicePort\":8097},\"path\":\"/\"},{\"backend\":{\"serviceName\":\"blockchain\",\"servicePort\":8097},\"path\":\"/socket.io\"},{\"backend\":{\"serviceName\":\"blockchain\",\"servicePort\":8097},\"path\":\"/ws/\"}]}}],\"tls\":[{\"hosts\":[\"blockchain.aro\"],\"secretName\":\"blockchain-tls-secret\"}]}}\n",
"nginx.ingress.kubernetes.io/proxy-read-timeout": "3600",
"nginx.ingress.kubernetes.io/proxy-send-timeout": "3600"
}
, включенный tls
и secretname
и rules
во входной файл. Я попытался создать ApplicationLoadbalancer
, но не смог соединиться с этим тоже.