![](/img/trans.png)
[英]How to expose postgres tcp port using Docker Desktop for Windows Kubernetes and ingress-nginx
[英]Expose basepath in container through service in nginx ingress on kubernetes
我的 ASP.NET Core Web 應用程序在啟動時使用 basepath,例如,
app.UsePathBase("/app1");
所以應用程序將在 basepath 上運行。 例如,如果應用程序在 localhost:5000 上運行,那么app1將可以在“ localhost:5000/app1 ”上訪問。
所以在 nginx ingress 或任何 ingress 中,我們可以通過 service 將整個容器暴露給 kubernetes 集群之外。
我的 kubernetes 部署 YAML 文件如下所示,
apiVersion: apps/v1
kind: Deployment
metadata:
name: app1-deployment
spec:
selector:
matchLabels:
app: app1
replicas: 1
template:
metadata:
labels:
app: app1
spec:
containers:
- name: app1-container
image: app1:latest
ports:
- containerPort: 5001
---
apiVersion: v1
kind: Service
metadata:
name: app1-service
labels:
app: app1
spec:
type: NodePort
ports:
- name: app1-port
port: 5001
targetPort: 5001
protocol: TCP
selector:
app: app1
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: app1-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- path: /app1(/|$)(.*)
backend:
serviceName: server-service
servicePort: 5001
上述入口將在“ localhost/app1 ” URL 中公開整個容器。 所以應用程序將在“/app1”虛擬路徑上運行。 但是app1應用程序將可以在“ localhost/app1/app1 ”上訪問。
所以我想知道是否有任何方法可以將 ' localhost/app1 ' 請求路由到容器應用程序 ' localhost:5001/app1 ' ingress 中的 basepath。
如果我理解正確,現在可以在/app1/app1
上訪問該應用程序,並且您希望它可以在/app1
上訪問
為此,請不要使用重寫:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: app1-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /app1
backend:
serviceName: server-service
servicePort: 5001
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.