【发布时间】:2022-01-10 12:11:01
【问题描述】:
我正在尝试在我的 Kubernetes 集群中公开一个网站。因此,我创建了一个链接到我的服务和我的 Pod 的入口。到目前为止,一切正常。 但是现在当我开始在我的页面上导航时,URL 会发生变化,但显示的站点仍然是“主页”。 如何在页面上导航并正确访问所有子页面?
我的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: wichteln-deployment
spec:
replicas: 1
selector:
matchLabels:
app: wichteln
template:
metadata:
labels:
app: wichteln
spec:
containers:
- image: jonasgoetz01/website:V1.0
name: wichteln-container
command: ["/bin/sh"]
args:
- -c
- >-
apt update
我的服务:
apiVersion: v1
kind: Service
metadata:
name: wichteln-service
spec:
selector:
app: wichteln
ports:
- protocol: TCP
port: 5000
targetPort: 5000
我的入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: wichteln-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: public
rules:
- http:
paths:
- path: /wichteln/*
pathType: Prefix
backend:
service:
name: wichteln-service
port:
number: 5000
该网页是一个 NodeJS express 网页。 这是我的 routes.js 文件供参考(如果您需要更多文件,请告诉我):
const express = require('express');
const router = express.Router();
const controller = require('../controllers/controller');
// Routes
router.get('/', controller.home);
router.get('/usermanagement/', controller.viewuser);
router.post('/usermanagement/', controller.finduser);
router.get('/usermanagement/adduser', controller.formuser);
router.post('/usermanagement/adduser', controller.createuser);
router.get('/usermanagement/edituser/:id', controller.edituser);
router.post('/usermanagement/edituser/:id', controller.updateuser);
router.get('/usermanagement/viewuser/:id', controller.viewalluser);
router.get('/usermanagement/:id',controller.deleteuser);
module.exports = router;
每次我尝试访问该页面时,我都会从主页开始。当我点击一些通常会将我重定向到子页面的按钮时,即使 URL 正确更改,我也会留在主页上。
比如首页网址是:www.mydomain.com/wichteln → 可以看到首页。
www.mydomain.com/wichteln/usermanagement → 我还能看到首页,但想看到子页面“用户管理”。
感谢您的帮助。
【问题讨论】:
-
这很奇怪,当你进入公共类时你使用任何入口控制器吗?还请检查入口控制器 pod 的日志,以便了解传递的内容和响应
标签: express kubernetes kubernetes-ingress