代码之家  ›  专栏  ›  技术社区  ›  Nicola Ben

Traefik&keydepot:error SSL\u error\u RX\u RECORD\u过长

  •  0
  • Nicola Ben  · 技术社区  · 6 年前

    HAProxy 将所有请求从80端口重定向到443并使用NodePort进入 traefik-ingress-controller (v1.6.6,Kubernetes集群内部)。

    在这里 HAProxy.conf :

    frontend http-frontend                                                                                                               
           bind *:80                                                                                                                     
           reqadd X-Forwarded-Proto:\ http                                                                                               
           default_backend http_app                                                                                                      
    
    frontend https-frontend                                                                                                             
            bind *:443 ssl crt /etc/ssl/certs/my-cert.pem                                                                   
            reqadd X-Forwarded-Proto:\ https                                                                                            
            default_backend traefik_app                                                                                                 
    
    backend http_app                                                                                                                    
        redirect scheme https if !{ ssl_fc }                                                                                        
    
    backend traefik_app                                                                                                             
        server traefik localhost:30010 check
    

    在我的Kubernetes集群上运行的每个应用程序都有一个入口。

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: keycloak
      annotations:
        kubernetes.io/ingress.class: traefik
    spec:
      rules:
      - host: login.myapp.it
        http:
          paths:
          - backend:
              serviceName: keycloak
              servicePort: 8080
    

    这是一张照片:

    enter image description here

    当我连接到 https://login.myapp.it/auth/admin/ 我被重定向到 https://login.myapp.it:80/auth/admin/master/console/ (注意端口80)我收到一个 SSL_ERROR_RX_RECORD_TOO_LONG 错误。

    先谢谢你。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Rico    6 年前

    听起来您的入口缺少TLS证书:

    $ kubectl -n kube-system create secret tls your-k8s-tls-secret --key=tls.key --cert=tls.crt
    

    然后:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: keycloak
      annotations:
        kubernetes.io/ingress.class: traefik
    spec:
      tls:
      - secretName: your-k8s-tls-secret
      rules:
      - host: login.myapp.it
        http:
          paths:
          - backend:
              serviceName: keycloak
              servicePort: 8080
    

    希望有帮助!

        2
  •  0
  •   Nicola Ben    6 年前

    我使用以下traefik注释解决了问题:

    traefik.frontend.passHostHeader:“正确”

    转发给客户 主持人 到后端的标头。

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: keycloak
      annotations:
        kubernetes.io/ingress.class: traefik
        traefik.frontend.passHostHeader: "true"
    spec:
      rules:
      - host: login.myapp.it
        http:
          paths:
          - backend:
              serviceName: keycloak
              servicePort: 8080
    

    另一方面,我可能会增加 haproxy.cfg 以下内容: