nginx ssl3_get_record版本号错误503错误的网关

时间:2018-10-21 00:01:02

标签: ssl nginx kubernetes-ingress nginx-ingress

我正在K8S集群上部署Ingress。我所有的配置看起来都不错。

我的入口的定义如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/proxy-body-size: 50m
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/secure-backends: "true"
    nginx.ingress.kubernetes.io/ssl-passthrough: "false"
  creationTimestamp: 2018-10-20T23:40:47Z
  generation: 1
  labels:
    type: jenkins
  name: jenkins-ingress
  namespace: helm-gcp-test-jenkins
  resourceVersion: "59946"
  selfLink: /apis/extensions/v1beta1/namespaces/helm-gcp-test-jenkins/ingresses/jenkins-tls
  uid: 91c5fd22-d4c1-11e8-a0e9-6691b5512bd6
spec:
  rules:
  - host: master.ingress.proj.csp-test.shoo.company.com
    http:
      paths:
      - backend:
          serviceName: jenkins-master
          servicePort: 8090
        path: /
status:
  loadBalancer:
    ingress:
    - ip: 35.187.16.8

已部署的Ingress如下:

NAME          HOSTS                                                  ADDRESS         PORTS     AGE
jenkins   master.ingress.proj.csp-test.shoo.company.com  
35.187.16.8   80        21m

自从我将其部署在GCP中以来,我也有一个LB。

您可以看到Ingress应该将流量路由到端口jenkins-master上的8090

此服务位于同一命名空间中。

# kubectl get -n helm-gcp-test-jenkins svc jenkins-master
NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)              AGE
jenkins-master   ClusterIP   100.71.2.206   <none>        8090/TCP,30005/TCP   13m

如果执行curl http://100.71.2.206:8090,则可以从群集中成功看到应用程序的主页,这意味着设置可以。

现在,当我尝试从浏览器访问Ingress时,这就是我所看到的全部内容。

enter image description here

当我查看入口控制器容器的日志时,它们具有以下错误。

2018/10/20 23:44:05 [error] 1084#1084: *538 SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking to upstream, client: 10.250.0.2, server: master.ingress.proj.csp-test.shoo.company.com, request: "GET / HTTP/1.1", upstream: "https://100.96.0.35:8090/", host: "master.ingress.proj.csp-test.shoo.company.com"
10.250.0.2 - [10.250.0.2] - - [20/Oct/2018:23:44:05 +0000] "GET / HTTP/1.1" 502 174 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15" 438 0.002 [helm-gcp-test-jenkins-jenkins-master-8090] 100.96.0.35:8090 0 0.002 502 60a2a0827ecfa7f0f43997c3b90e5eea
2018/10/20 23:44:06 [error] 1084#1084: *542 SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking to upstream, client: 10.250.0.2, server: master.ingress.proj.csp-test.shoo.company.com, request: "GET /favicon.ico HTTP/1.1", upstream: "https://100.96.0.35:8090/favicon.ico", host: "master.ingress.proj.csp-test.shoo.company.com", referrer: "http://master.ingress.proj.csp-test.shoo.company.com/"
10.250.0.2 - [10.250.0.2] - - [20/Oct/2018:23:44:06 +0000] "GET /favicon.ico HTTP/1.1" 502 174 "http://master.ingress.proj.csp-test.shoo.company.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15" 447 0.003 [helm-gcp-test-jenkins-jenkins-master-8090] 100.96.0.35:8090 0 0.002 502 80769268e1fe1fccd33ed2b58720672e

不确定此错误是什么。有任何想法吗 ?我使用了错误的注释吗?

1 个答案:

答案 0 :(得分:0)

看看官方的List of Annotation

没有nginx.ingress.kubernetes.io/secure-backends: "true"。另外,在这种情况下,您无需使用HTTP nginx.ingress.kubernetes.io/secure-backends: true"

  

注释nginx.ingress.kubernetes.io/ssl-passthrough   指示控制器将TLS连接直接发送到   后端,而不是让NGINX解密通信。也可以看看   TLS/HTTPS   在用户指南中。   !!!注意SSL直通默认情况下已禁用,并且需要   用以下命令启动控制器   --enable-ssl-passthrough   旗。   !!!注意,因为SSL Passthrough在OSI的第4层上起作用   使用SSL Passthrough的模型(TCP),而不是在第7层(HTTP)上   使Ingress对象上设置的所有其他注释无效。

请确保您在控制器中启用了ssl-passthrough,否则您可以删除此注释,因为您不使用SSL。