Kubernetes
Kubernetes Ingress:如何在一條路徑上公開兩個埠?
我在埠 443 上配置了 GCE Ingress 並使用 SSL。我試圖讓埠 28080 指向我的獨立可操作伺服器。
我目前有這個用於我的 Ingress yaml:
# web-ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: gke-ingress annotations: kubernetes.io/ingress.class: "gce" ingress.kubernetes.io/ssl-redirect: "true" kubernetes.io/ingress.allow-http: "false" spec: rules: - host: example.com http: paths: - path: /ws backend: serviceName: websocket servicePort: 28080 tls: - secretName: gkecert hosts: - example.com backend: serviceName: web servicePort: 443
如果我將路徑設置為 / 為 websocket 服務,它會破壞根路徑(錯誤 503)。根據我的閱讀,入口無法處理一條路徑上的 2 個埠。那麼人們如何將他們的前端連接到 websocket 伺服器而不用路徑分隔呢?
我認為您的第二個後端服務缺少路徑,如果您想將入口與一個主機和兩個服務一起使用,您應該添加路徑。查看入口扇出然後你的入口應該是這樣的:
# web-ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: gke-ingress annotations: kubernetes.io/ingress.class: "gce" ingress.kubernetes.io/ssl-redirect: "true" kubernetes.io/ingress.allow-http: "false" spec: tls: - secretName: gkecert hosts: - example.com rules: - host: example.com http: paths: - path: /ws backend: serviceName: websocket servicePort: 28080 - path: / backend: serviceName: web servicePort: 443
如果要使用同一主機,則必須指定路徑。您可以將前端連接到 websocket 伺服器,而無需使用不同的主機按路徑分隔。請參閱有關我們如何做的文件連結