如何在 Kubernetes 集群内管理网站的'link forwarding'



我有一个网站使用相对href链接(例如,链接指向"/login",而不是";http://somesite.com/login"(。这在普通服务器中可以正常工作,但我希望将docker容器中的网站作为kubernetes集群的一部分。我的目标是让网站有多个副本来管理高负载时间,默认为两个具有动态扩展能力的节点。

我将服务设置为"负载均衡器",如下所示:

apiVersion: v1
kind: Service
metadata:
name: websiteservice
spec:
selector:
app: websiteapp
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 80

这里的问题是,如果我导航到负载均衡器的URL(它是在我的主机上自动创建的-数字海洋(,那么尽管网站的主页加载了,但任何其他页面都会给我一个404/登录";它装载的容器的"页面"/登录";不存在的负载平衡器的页面。如何配置我的集群或负载均衡器将所有子目录(.com之后的任何子目录(转发到Web服务器?

编辑1在评论中,建议我设置入口。我认为我已经这样做了,对我的yaml:进行了更改

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: somesite.co.uk
http:
paths:
- backend:
serviceName: websiteservice
servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
name: websiteservice
spec:
selector:
app: websiteapp
type: ClusterIP
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: websiteapp
spec:
replicas: 2
selector:
matchLabels:
app: websiteapp
template:
metadata:
labels:
app: websiteapp
spec:
containers:
- name: websiteapp
image: mydocker.co.uk/websiteimg
imagePullSecrets:
- name: regcred
nodeSelector:
beta.kubernetes.io/instance-type: s-2vcpu-4gb

但我仍然无法在我的网站主页之外导航。

您的Ingress文件应该如下所示:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: somesite.co.uk
http:
paths:
- path: /*
backend:
serviceName: websiteservice
servicePort: 80

只需添加路径即可重定向流量。

看看:主机路径路由,入口路径匹配。

最新更新