我目前正在構建一個帶有角度應用程式和快速后端的 K8s 集群。
集群應該分為兩個命名空間,test 和 prod,每個 ns 中來自前端的請求都將發送到相應的后端應用程式。因為 angular 在瀏覽器中運行,我目前正在通過外部入口將請求從 angular 應用程式發送到后端,但是由于 angular 環境變數是在構建時設定的,我無法為 prod 和 test 指定不同的 backendUrls,因此請求被發送到無論它們來自哪個命名空間,都具有相同的 url。
我看到一些人解釋說 angular 無法在內部到達后端,但找不到有關如何整理命名空間路由的任何資訊。有沒有辦法讓入口知道請求來自哪里并相應地重新路由它?或者其他一些方法來解決這個問題。
我的命名空間設定如下:
apiVersion: v1
kind: Namespace
metadata:
name: test
---
apiVersion: v1
kind: Namespace
metadata:
name: prod
入口在 prod 命名空間上是這樣設定的:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
name: ingress-service
namespace: prod
spec:
ingressClassName: nginx
rules:
- host: prod.mysite.com
http:
paths:
- backend:
service:
name: dashboard-service
port:
number: 8081
path: /?(.*)
pathType: Prefix
- backend:
service:
name: backend-service
port:
number: 3000
path: /api/?(.*)
pathType: Prefix
在 test 命名空間上,它是相同的,但具有主機:test.mysite.com 和命名空間:prod。在每個命名空間中,都有一個儀表板應用程式和一個帶有服務的后端應用程式。
我目前正在 minikube 上運行它,但我希望在 AWS 上部署它時問題會繼續存在。
非常感謝您提供的任何幫助!
uj5u.com熱心網友回復:
您基本上有三個選擇:
- 不要在 angular 應用程式中使用完整的 URL,只需使用 /api/,當從 prod.mysite.com/test.mysite.com 的不同 URL 加載時,相對路徑將附加到域并解決您的問題
- 您可以通過檢查主機名和/或埠來動態確定 Angular 中的后端 url
- 您可以創建一個 docker 影像,該影像使用入口點和環境變數更改在 index.html 中定義的 api url 值
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/347880.html
標籤:有角的 nginx Kubernetes Kubernetes 入口
上一篇:如何使用Nginx構建代理?
下一篇:Nginx-wordpressfpm-在wp-content/uploads中存盤的影像上獲取404(到EFS的符號鏈接)
