kubernetes - 重写入口 kubernetes 上的路径
问题描述
我有在 kubernetes 集群上运行的 tomcat 后端服务尝试使用带有路径 /blob/api/v1/test-backend > /api/v1/test-backend 的入口重写,因此配置现在正在运行,因此可以访问 xx.somedomain.com /blob/api/v1/test-backend 并且我想通过重写更改为 xx.somedomain.com/api/v1/test-backend
我的基本入口
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-blob
namespace: blob-test
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 50m
spec:
tls:
- hosts:
- xx.somedomain.com
secretName: cert-key
rules:
- host: xx.somedomain.com
http:
paths:
- path: /blob/
backend:
serviceName: blob-service
servicePort: 8080
- path: /
backend:
serviceName: web-service
servicePort: 80
这是用于重写 /blob/ 的 yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-blob
namespace: blob-test
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 50m
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
tls:
- hosts:
- xx.somedomain.com
secretName: cert-key
rules:
- host: xx.somedomain.com
http:
paths:
- path: /blob/api/v1/some-backend
backend:
serviceName: blob-service
servicePort: 8080
当我使用 talend 之类的 api 测试仪进行测试时,出现 405 错误
解决方案
尝试这个
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: rewrite
namespace: default
spec:
rules:
- host: rewrite.bar.com
http:
paths:
- backend:
serviceName: http-svc
servicePort: 80
path: /something(/|$)(.*)
例如,上面的入口定义将导致以下重写:
rewrite.bar.com/something rewrites to rewrite.bar.com/
rewrite.bar.com/something/ rewrites to rewrite.bar.com/
rewrite.bar.com/something/new rewrites to rewrite.bar.com/new
参考:https ://kubernetes.github.io/ingress-nginx/examples/rewrite/
推荐阅读
- .net - 安装需要.Net Famework Verison 3.5。Visual Studio 安装程序项目,即使在 windows 功能中启用了 3.5
- python - 为什么我在全局变量中转换局部变量时会出现 NameError?
- vba - 如何在将新数据插入访问表之前检查现有数据?
- excel - Excel - 突出显示每行中的最低价格
- oracle - Oracle 表单从现有记录中插入一条新记录
- python - 我有一个数据集,其列是单词。如何将相同的列相互添加?
- html - 在 Github 上创建目录 (TOC):有没有办法可以摆脱要点,从而获得更清晰的 TOC?
- firebase - yield 表达式所隐含的类型必须是可分配的
- ios - 如何从 NSError 代码中找到错误描述?
- node.js - 为什么随着循环变长,Node-Fetch 在运行循环中获取 600 次重复所需的时间越来越长?