Google-Kubernetes-Engine
GCP - GKE:每個 Ingress 配置都會自動重置。如何設置 HTTPS 健康檢查?
我知道 Ingress 需要處於健康狀態的服務才能通過 HTTP(S) 提供其內容,為此我在我的工作負載部署中配置了一個 ReadinessProbe:
readinessProbe: failureThreshold: 10 httpGet: path: /api/healthz port: 4400 scheme: HTTPS periodSeconds: 30 successThreshold: 1 timeoutSeconds: 20
本質上,我有一個在埠上提供 HTTPS 請求的網路伺服器,
4400
並且我配置了一個healthz
資源以返回 HTTP 200 響應。我的網路伺服器正在偵聽埠上的傳入連接:
- HTTP -> 4300
- HTTPS -> 4400
現在,為了訪問這些埠,我有一個
myService
針對網路伺服器的 GKE 服務 (),特別是:ports: - name: port-1 nodePort: 31277 port: 80 protocol: TCP targetPort: 4300 - name: port-2 nodePort: 32167 port: 443 protocol: TCP targetPort: 4400
現在,如果我創建一個與 GCP
myIngress
相關的新 Ingress 服務 () ,myService
則會返回以下 Kubernetes 配置:spec: backend: serviceName: my-service servicePort: port-2 rules: - host: test-domain-name-here.net http: paths: - backend: serviceName: my-service servicePort: port-2 tls: - secretName: letsencrypt-custom-cert
正如您在此處看到的,它的目標是 servicePort
port-2
:GKE 為這個名為 的入口配置(自動)創建了一個新的後端服務
k8s-be-32167--XXXX
,它的目標是port-2
32167
,最重要的是預設 kubernetes L7 負載平衡健康檢查,它應該監控服務的健康狀態 -準備情況。問題是這個健康檢查應該
32167
使用 HTTPS 而不是 HTTP 來測試埠,每當我在幾分鐘後嘗試為 HTTPS 設置這個健康檢查時,GCP 都會將所有內容重置為其預設值,這非常煩人!!!
目前目標池僅允許 HTTP 健康檢查,而舊式風格,您可以查看此文件,其中顯示了允許的健康檢查概念和協議。
此外,我還發現了這個問題跟踪器,您可以在其中跟進並發表評論,以了解何時允許/支持 HTTPS 進行健康檢查。