Kubernetes Inress未重定向到正确路径 [英] Kubernetes Ingress not redirecting to correct path
本文介绍了Kubernetes Inress未重定向到正确路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在作为部署运行的Kubernetes集群中有一个托管在Apache上的Django应用程序。应用程序在端口8080上运行,应用程序根目录为";/";。当有人输入/tascaty时,我希望我的入口重定向到我的应用程序,但当我在入口资源中输入路径/tascaty时,这不会发生。但是当我将路径设置为/时,它就起作用了。以下是我的应用程序的详细信息
应用程序的Apache配置文件:
Listen 8080
<VirtualHost *:8080>
WSGIDaemonProcess tascaty_dev python-path=/usr/local/lib/python3.8/dist-packages
<Location />
WSGIProcessGroup tascaty_dev
WSGIApplicationGroup %{GLOBAL}
</Location>
WSGIScriptAlias / /usr/local/lib/python3.8/dist-packages/tascaty_project/wsgi.py
<Directory /usr/local/lib/python3.8/dist-packages/tascaty_project/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static /usr/local/lib/python3.8/dist-packages/static
<Directory /usr/local/lib/python3.8/dist-packages/static>
Require all granted
</Directory>
</VirtualHost>
应用部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: tascatyk8s-deployment
namespace: tascaty
spec:
replicas: 1
selector:
matchLabels:
component: tascatyk8s
template:
metadata:
labels:
component: tascatyk8s
spec:
volumes:
- name: tascatyk8s-mount
persistentVolumeClaim:
claimName: tascatyk8s-pvc
containers:
- name: tascatyk8s
image: abdul8423/tascatyk8s:v3
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /usr/local/lib/python3.8/dist-packages/users/migrations
name: tascatyk8s-mount
subPath: users
- mountPath: /usr/local/lib/python3.8/dist-packages/tascaty/migrations
name: tascatyk8s-mount
subPath: tascaty
- mountPath: /usr/local/lib/python3.8/dist-packages/leaves/migrations
name: tascatyk8s-mount
subPath: leaves
- mountPath: /usr/local/lib/python3.8/dist-packages/blog/migrations
name: tascatyk8s-mount
subPath: blog
env:
- name: TASCATY_HOST
valueFrom:
configMapKeyRef:
name: tascatyk8s-dep-configmap
key: TASCATY_HOST
- name: TASCATY_PORT
valueFrom:
configMapKeyRef:
name: tascatyk8s-dep-configmap
key: TASCATY_PORT
- name: TASCATY_DB
valueFrom:
configMapKeyRef:
name: tascatyk8s-dep-configmap
key: TASCATY_DB
- name: TASCATY_USER
valueFrom:
configMapKeyRef:
name: tascatyk8s-dep-configmap
key: TASCATY_USER
- name: TASCATY_PASS
valueFrom:
secretKeyRef:
name: tascaty-secret
key: MYSQL_PASSWORD
nodeSelector:
component: tascaty
应用服务
apiVersion: v1
kind: Service
metadata:
name: tascatyk8s-cluster-ip-service
namespace: tascaty
spec:
type: ClusterIP
selector:
component: tascatyk8s
ports:
- port: 8080
targetPort: 8080
使用
安装入口控制器kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/baremetal/deploy.yaml
入口资源:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: tascatyk8s-deployment-ingress
namespace: tascaty
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /tascaty
backend:
serviceName: tascatyk8s-cluster-ip-service
servicePort: 8080
当我尝试访问https://192.168.56.2:31150/tascaty时,它会重定向到https://192.168.56.2:31150/login/?next=/
但我收到404 Not Found
但是,当我将入口资源中的路径替换为/而不是/tascaty时,它可以正常工作。
推荐答案
入口路径发生了什么/tascaty
:
您的Apache/WSGI服务器正在执行重定向。在重定向到/
之后,客户端返回到入口,而入口不知道如何处理,因此它将向您显示404
入口路径发生了什么/
:
您的Apache/WSGI服务器正在执行重定向。重定向到/
后,客户端返回到入口,入口知道如何处理/
,这一切都运行得很好。
因此,您的入口(运行nginx)和Apache需要始终在同一路径上达成一致。因此,您要么在您入口上使用/
,要么将您的Apache配置更改为也在/tascaty
上提供服务,以便它不是重定向到/
,而是重定向到/tascaty
。
后者示例:
Listen 8080
<VirtualHost *:8080>
WSGIDaemonProcess tascaty_dev python-path=/usr/local/lib/python3.8/dist-packages
<Location /tascaty>
WSGIProcessGroup tascaty_dev
WSGIApplicationGroup %{GLOBAL}
</Location>
WSGIScriptAlias /tascaty /usr/local/lib/python3.8/dist-packages/tascaty_project/wsgi.py
<Directory /usr/local/lib/python3.8/dist-packages/tascaty_project/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /tascaty/static /usr/local/lib/python3.8/dist-packages/static
<Directory /usr/local/lib/python3.8/dist-packages/static>
Require all granted
</Directory>
</VirtualHost>
此外,您还需要从入口清单中删除以下内容:
nginx.ingress.kubernetes.io/rewrite-target: /
✌️
这篇关于Kubernetes Inress未重定向到正确路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文