我們在 Azure Kubernetes 服務中使用 Nginx 入口控制器將流量引導到我們在那里運行的多個 .NET API。
出于 WAF 和 DNS 的原因,對此的所有呼叫都通過 Azure 應用程式網關路由。
應用程式網關有“健康探測器”,它會在您的后端池(指向我們的 nginx 入口控制器服務的外部 IP)中執行 GET 在根目錄下執行 GET。
以前我們為每個站點提供服務,設定為 LoadBalancer,它為每個站點提供自己的外部 IP 地址,我們將后端池指向該地址,它運行良好。
但是現在我們正在嘗試更安全地做事情并通過入口控制器路由所有呼叫......但是現在我們有一個帶有入口控制器 IP 地址的后端池,并且由于那里沒有任何內容,因此運行狀況探測回傳不正常,并且站點不起作用。
我已經為該站點設定了 Ingress,以便如果請求通過域(如下)到達后端池,它將起作用,但運行狀況探測似乎沒有這樣做。因為它只是對控制器的 IP 地址執行 GET。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: "api.mydomain.com"
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: my-api-service
port:
number: 443
我使用 Helm 圖表安裝了控制器,我只是希望能夠對其進行設定,以便對該控制器的 GET 請求將僅回傳 200,并且任何其他請求都將被適當地定向。我已經為我們的入口嘗試了下面的方法,將對根的呼叫路由到 api(其根有 200 回應),但我認為那不是合適的地方,而且它沒有用。它可能必須是 Helm 命令的一部分才能設定 Ingress 控制器本身。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-api-service
port:
number: 443
- host: "api.mydomain.com"
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: my-api-service
port:
number: 443
uj5u.com熱心網友回復:
nginx 入口控制器公開一個回傳 200 OK 的默認后端 /healthz端點。您可以使您的應用程式網關運行狀況探測指向此端點。
此外,不要使用需要 2 跳才能到達您的服務的應用程式網關 NGINX 入口控制器,而是考慮使用應用程式網關入口控制器(AGIC)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/511183.html
