簡體   English   中英

在 Kubernetes 中使用 nginx 入口托管兩個 web 應用程序

[英]Hosting two web apps with nginx ingress in Kubernetes

我有一個 kubernetes 集群在 Azure Kubernetes 服務 (AKS) 中運行。 我一直在關注一系列研討會,並設置了 NGINX 入口 controller。 現在我正在使用 nip.io 來訪問我的網站。 他們讓我創建一個入口資源來公開前端:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ratings-web-ingress
  annotations: 
    kubernetes.io/ingress.class: nginx
  spec:
    rules:
    - host: frontend.<redacted ip>.nip.io
    http:
      paths:
      - backend:
        serviceName: ratings-web
        servicePort: 80
      path: /

這工作正常。 我可以瀏覽 nip.io 地址,一切正常。 我想擴展它並創建一個單獨的站點。 我想要它在同一個地址,只是在/foo

我試圖創建一個入口資源:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: foo-web-ingress
  annotations: 
    kubernetes.io/ingress.class: nginx
  spec:
    rules:
    - host: frontend.<redacted ip>.nip.io
    http:
      paths:
      - backend:
        serviceName: foo-web
        servicePort: 80
      path: /foo

當我瀏覽frontend.<redacted ip>.nip.io/foo我從 nginx 中找不到 404。 我嘗試根據另一個 SO 帖子添加以下注釋:

nginx.ingress.kubernetes.io/rewrite-target: /

現在,當我瀏覽/foo時,它會響應,但所有內容都是空白的。 在 web 應用程序中,它引用了根級別的所有內容,例如:

<link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css" />

當它看到這條路徑時,我認為它會轉到原始網站,所以我得到嚴格的 MIME 類型錯誤或 404 錯誤。

我需要做什么才能在不同路徑的同一 nginx 入口 controller 上托管兩個網站?

Ingress controller 在合並這兩個入口時會感到困惑,正確的順序應該是什么,因為為同一主機定義了多個入口資源。

文檔中引用,您可以使用單個入口資源作為扇出。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: simple-fanout-example
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: <redacted ip>.nip.io
    http:
      paths:
      - path: /foo
        backend:
          serviceName: foo-web
          servicePort: 80
      - path: /bar
        backend:
          serviceName: bar-web
          servicePort: 80

暫無
暫無

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

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