KOPSを使用してAWSにk8をデプロイしました。 nginx ingress https://github.com/kubernetes/ingress-nginx nginx-ingress-controller image:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.18を作成しました。 0
すべてが稼働中であり、nginxサービスによって作成されたawsクラシックロードバランサーを使用して外部からアプリケーションにアクセスできました。
最近、私たちはウェブソケットに取り組み始めました。サービスをk8sにデプロイし、外部からアクセスしようとしました。
アプリケーションのサービスとIngressを作成しました。 Ingressがloadbalancerをポイントしています(jsonファイルの下)。
Awsにroute53エントリを作成して接続しようとしましたが、クライアントアプリケーションからchrome browserを介して接続しようとすると、エラーが発生します。
「wss://blockchain.aro/socket.io/?EIO = 3&transport = websocket」へのWebSocket接続に失敗しました:WebSocketハンドシェイク中にエラーが発生しました:予期しない応答コード:400
アプリケーションロードバランサーを作成しようとしましたが、wss://<Host>
に接続できませんでした
エラー:
「wss://blockchain.aro/socket.io/?EIO = 3&transport = websocket」への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
を作成してみましたが、接続できませんでした。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
certmanager.k8s.io/cluster-issuer: core-prod
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"
nginx.ingress.kubernetes.io/proxy-send-timeout: "1800"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/websocket-services: core-service
nginx.org/websocket-services: core-service
name: core-ingress
spec:
rules:
- Host: test.io
http:
paths:
- backend:
serviceName: core-service
servicePort: 80
tls:
- hosts:
- test.io
secretName: core-prod