Déployé K8S sur AWS avec Kops. J'ai créé Nginx Ingress https://github.com/kubettes/ingress-nginx NGINX-INGRESS-contrôleur image: quai.io/kubernettes-ingress-controller/nginx-ingress-controller:0.18. 0
Tout est opérationnel et je pouvais accéder à des applications à l'extérieur de l'équilibreur de charge AWS Classic, créé par NGinx Service.
Récemment, nous avons commencé à travailler sur des webockets. J'ai déployé mes services en K8 et en essayant d'accéder à l'extérieur.
J'ai créé un service et une entrée pour mon application. INGRESS est maintenant dirigé vers WideBalancer (en dessous du fichier JSON).
J'ai créé une entrée Route53 dans AWS et essaye de vous connecter à cela, mais je reçois une erreur en dessous de l'erreur lorsque j'essaie de vous connecter à partir de mon application client via chrome Browser
Websocket Connection à 'WSS: //blockchain.aro/socket.io/? EIO = 3 & Transport = Websocket' a échoué: Erreur lors de la poignée de main de bande: Code de réponse inattendu: 400
J'ai essayé de créer un équilibreur de charge de l'application mais je ne pouvais pas me connecter à wss://<Host>
Erreur:
Websocket Connection à 'WSS: //blockchain.aro/socket.io/? EIO = 3 & Transport = Websocket' a échoué: Erreur lors de la poignée de main de bande: Code de réponse inattendu: 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"
}
inclus tls
et secretname
et rules
dans le fichier d'entrée. J'ai essayé de créer ApplicationLoadbalancer
mais je ne pouvais pas me connecter aussi avec ça.
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