Docker 通过kubernetes上nginx入口中的服务公开容器中的basepath
我的ASP.NET核心web应用程序在启动时使用basepathDocker 通过kubernetes上nginx入口中的服务公开容器中的basepath,docker,nginx,kubernetes,kubernetes-ingress,nginx-ingress,Docker,Nginx,Kubernetes,Kubernetes Ingress,Nginx Ingress,我的ASP.NET核心web应用程序在启动时使用basepath app.UsePathBase("/app1"); 因此,应用程序将在basepath上运行。例如,如果应用程序在localhost:5000上运行,则可以在“localhost:5000/app1”上访问app1” 因此,在nginx入口或任何入口中,我们可以通过服务向kubernetes集群外部公开整个容器 我的kubernetes部署YAML文件如下所示 apiVersion: apps/v1 kind
app.UsePathBase("/app1");
因此,应用程序将在basepath上运行。例如,如果应用程序在localhost:5000上运行,则可以在“localhost:5000/app1”上访问app1”
因此,在nginx入口或任何入口中,我们可以通过服务向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”虚拟路径上运行。但是可以在“localhost/app1/app1上访问app1应用程序
因此,我想知道是否有任何方法可以在ingress中将“localhost/app1”请求路由到basepath in container application”localhost:5001/app1。如果我理解正确,现在可以在
/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
你试过不使用重写吗?