[英]TLS handshake through Istio ingress gateway fails (tlsMode=passthrough)
[英]TLS handshake fails intermittently when using HAProxy Ingress Controller
我正在使用 HAProxy Ingress Controller ( https://github.com/helm/charts/tree/master/incubator/haproxy-ingress ) 為我的應用程序終止 TLS。 我有一個簡單的 Node.JS 服務器在 8080 上偵聽 HTTP,而 1935 作為一個簡單的回顯服務器(不是 HTTP)。
我使用 HAProxy Ingress 控制器將端口封裝在 TLS 中。 (8080 -> 443 (HTTPS), 1935 -> 1936 (TCP + TLS))
我安裝了 HAProxy 入口控制器
helm upgrade --install haproxy-ingress incubator/haproxy-ingress \
--namespace test \
-f ./haproxy-ingress-values.yaml \
--version v0.0.27
,其中haproxy-ingress-values.yaml
是
controller:
ingressClass: haproxy
replicaCount: 1
service:
type: LoadBalancer
tcp:
1936: "test/simple-server:1935:::test/ingress-cert"
nodeSelector:
"kubernetes.io/os": linux
defaultBackend:
nodeSelector:
"kubernetes.io/os": linux
這是我的入口:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: "haproxy"
spec:
tls:
- hosts:
secretName: ingress-cert
rules:
- http:
paths:
- path: /
backend:
serviceName: "simple-server"
servicePort: 8080
證書是自簽名的。 如果我測試 TLS 握手
echo | openssl s_client -connect "<IP>":1936
有時(大約 1/3 的次數)它會失敗
CONNECTED(00000005)
139828847829440:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:332:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 316 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
443 端口不會發生同樣的問題。
有關重現問題的設置的詳細信息,請參見此處。
[編輯]
正如@JoaoMorais 所指出的,這是因為默認的統計端口是 1936。雖然我沒有打開統計,但它似乎仍然干擾了行為。
有兩種解決方案對我有用。
controller:
stats:
port: 5000
默認情況下,HAProxy 允許在相同或其他前端/偵聽部分以及其他 haproxy 進程中重用相同的端口號。 這可以更改在global
部分添加noreuseport 。
默認的 HAProxy Ingress 配置使用端口號1936
來公開統計信息。 如果這樣的端口號被例如 tcp 代理重用,傳入的請求將在兩個前端之間分配 - 有時會調用您的服務,有時會調用統計信息頁面。 將 tcp 代理或統計頁面( 此處為文檔)更改為另一個端口應該可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.