簡體   English   中英

如何將多個服務映射到一個Kubernetes Ingress路徑?

[英]How do I map multiple services to one Kubernetes Ingress path?

如何設置Kubernentes Ingress和Controller基本上執行以下nginx.conf文件的操作:

upstream backend {
    server server1.example.com       weight=5;
    server server2.example.com:8080;

    server backup1.example.com:8080   backup;
}

我希望一個http端點映射到多個Kubernetes服務,優先選擇主要服務,但也有一個備份服務。 (對於我的特定項目,我需要有多個服務而不是一個具有多個pod的服務。)

這是我嘗試的ingress.yaml文件。 我很確定我列出多個后端的方式是不正確的。 我該怎么辦? 我如何設置“備份”標志?

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: fanout-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: "nginx"
    # kubernetes.io/ingress.global-static-ip-name: "kubernetes-ingress"
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: server1
          servicePort: 
      - path: /
        backend:
          serviceName: server2
          servicePort: 8080
      - path: /
        backend:
          serviceName: backup1
          servicePort: 8080

我在GKE上運行Kubernetes。

Kubernetes Ingress無能為力。

您可以創建一個以server1,server2和backup1為目標的新服務,並在Ingress中使用它。 但后端將以循環方式使用。

您可以使用您希望的配置創建(無狀態)nginx反向代理的部署和服務,並在Ingress中使用它。

您可以根據路徑或基於名稱的虛擬主機進行簡單的扇出

但是,您需要根據某些東西進行區分(除了端口,因為它是Ingress),因此您的兩個選項將是虛擬主機或路徑。

路徑不適用於某些期望標准路徑的服務。 根據您的示例判斷,您最有可能想要像a.example.com和b.example.com這樣的內容。 以下是Kubernetes文檔中的示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: name-virtual-host-ingress
spec:
  rules:
    - host: foo.bar.com
      http:
        paths:
          - backend:
              serviceName: service1
              servicePort: 80
    - host: bar.foo.com
      http:
        paths:
          - backend:
              serviceName: service2
              servicePort: 80

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM