微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NginxInc/kubernetes-ingress - 打开 portainer websocket 连接 - 传递标头

如何解决NginxInc/kubernetes-ingress - 打开 portainer websocket 连接 - 传递标头

在此报告解决方案以供将来参考,因为我在实施此解决方案时找不到任何单一资源:

使用 nginxinc/kubernetes-ingress 控制器不是kubernetes/ingress-nginx

问题始于 portainer v2.1.1,但如果您需要创建入口规则并传递标头,或应用任何特定规则。

问题代码

Unable to upgrade the connection (err=websocket: the client is not using the websocket protocol: 'upgrade' token not found in 'Connection' header) (code=500)

WebSocket connection to 'ws://portainer.example.com/.....// Failed

解决方法

遵循Nginx websocket proxying guide 使用 Nginx snippets 的最小解决方案:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: portainer-ingress
  namespace: portainer
  annotations:
    nginx.org/location-snippets: |
      proxy_set_header   Upgrade            $http_upgrade;
      proxy_set_header   Connection         "upgrade";
    
spec:
  ingressClassName: nginx
  rules:
    -  host: portainer.example.com
       http:
        paths:
          - path: /
            backend:
              service:
                name: portainer
                port:
                  number: 9000
            pathType: Prefix

运行使用 Nginx ingress controller version v1.10.1 安装的 manifests

helm.sh/chart: ingress-nginx-3.23.0
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/version: 0.44.0

我希望这可以帮助某人作为参考

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。