Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GraphQL的AKS上的WebSocket未连接_Websocket_Kubernetes_Graphql_Kubernetes Ingress_Azure Aks - Fatal编程技术网

使用GraphQL的AKS上的WebSocket未连接

使用GraphQL的AKS上的WebSocket未连接,websocket,kubernetes,graphql,kubernetes-ingress,azure-aks,Websocket,Kubernetes,Graphql,Kubernetes Ingress,Azure Aks,我目前有一个运行GraphQL服务器和正常nginx入口的AKS群集设置。我们正在尝试加入GraphQL订阅,它利用WebSocket。GraphQL用于WebSocket的URL与用于GraphQL查询的URL相同。我们已经尝试添加代理配置以启用websocket入口,但从未建立连接。在没有Kubernetes的情况下运行GraphQL服务器是成功的,因此我们认为这里有Kubernetes特有的东西……有人成功地做到了这一点吗?相关入口配置如下 apiVersion: extensions/v

我目前有一个运行GraphQL服务器和正常nginx入口的AKS群集设置。我们正在尝试加入GraphQL订阅,它利用WebSocket。GraphQL用于WebSocket的URL与用于GraphQL查询的URL相同。我们已经尝试添加代理配置以启用websocket入口,但从未建立连接。在没有Kubernetes的情况下运行GraphQL服务器是成功的,因此我们认为这里有Kubernetes特有的东西……有人成功地做到了这一点吗?相关入口配置如下

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: web-ingress
  namespace: web
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/affinity: cookie
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "30"
    nginx.ingress.kubernetes.io/configuration-snippet: |
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
spec:
  tls:
  - hosts:
    - my.host
    - my-api.host
    secretName: tls-secret
  rules:
  - host: my.host
    http:
      paths:
      - path: /graphql
        backend:
          serviceName: webapi
          servicePort: 80
      - path: /(.*)
        backend:
          serviceName: website
          servicePort: 80
  - host: my-api.host
    http:
      paths:
      - backend:
          serviceName: webapi
          servicePort: 80
        path: /(.*)

您可能希望从一个不太复杂的配置开始,如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: web-ingress
  namespace: web
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt
    ingress.kubernetes.io/ssl-redirect: "true"
    kubernetes.io/tls-acme: "true"
spec:
  tls:
  - hosts:
    - my.host
    secretName: tls-secret
  rules:
  - host: my.host
    http:
      paths:
      - path: /
        backend:
          serviceName: website
          servicePort: 80
      - path: /graphql
        backend:
          serviceName: webapi
          servicePort: 80
我将配置切换到一个端点,而不是两个端点。删除了一些配置,因为NGINX可以直接处理websockets。我删除了regexp。我添加了tls acme注释。还有ssl重定向。总之,我只是把它简化了一点。首先启动并运行它,然后开始像超时一样应用高级配置


很高兴听到对此的任何反馈

您是否检查过Nginx入口控制器的日志?有可疑记录吗?我也有同样的问题,你有解决办法吗?