【发布时间】:2020-06-21 08:43:09
【问题描述】:
我在使用 K8s Ingress 时遇到问题,我将在这里使用假示例来说明我的观点。 假设我有一个名为 Tweeta 的应用程序,而我的公司名为 ABC。我的应用程序目前位于 tweeta.abc.com 上。 但我们想将我们的应用迁移到 app.abc.com/tweeta。
我目前在 K8s 的入口如下:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: tweeta-ingress
spec:
rules:
- host: tweeta.abc.com
http:
paths:
- path: /
backend:
serviceName: tweeta-frontend
servicePort: 80
- path: /api
backend:
serviceName: tweeta-backend
servicePort: 80
为了迁移,我添加了第二个入口:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: tweeta-ingress-v2
spec:
rules:
- host: app.abc.com
http:
paths:
- path: /tweeta
backend:
serviceName: tweeta-frontend
servicePort: 80
- path: /tweeta/api
backend:
serviceName: tweeta-backend
servicePort: 80
为了保持连续性,我希望有 2 个入口同时指向我的服务。当新域准备就绪并可以工作时,我只需要拆除旧入口即可。
但是,我对这个入口的新域没有任何运气。是不是因为它托管在路径上,而 k8s 入口需要托管在 root 上?还是我需要在 nginx 端做的配置?
【问题讨论】:
-
问题很可能是因为有两个 Ingress 资源用于相同的后端服务。您是否尝试过只有一个入口资源?还共享入口控制器 pod 的日志。您是否收到 404 错误?
标签: nginx kubernetes kubernetes-ingress