ingress-nginx 中 Rewrite 的使用

由于 nginx 的优秀性能表现,所以很多企业在 Kubernetes 中选择 Ingress Controller 的时候依然会选择基于 nginx 的 ingress-nginx,前面文章中我们更多的是介绍更加云原生配置更加灵活的 Traefik,特别是 Traefik 2.0 版本新增中间件概念以后,在配置上就更加方便了,各种需求都可以通过中间件来实现,对于 ingress-nginx 来说配置就稍微麻烦一点,一些复杂的需求需要通过 Ingress 的 annotation 来实现,比如我们现在需要实现一个 url rewrite 的功能,简单来说就是我们之前的应用在 todo.qikqiak.com 下面,现在我们需要通过 todo.qikqiak.com/app/ 来进行访问。

本次测试使用的集群为 Kubernetes v1.16.2,ingess-nginx 镜像版本为 0.26.1

最原始的 Ingress 对象如下所示:

<code>apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: fe
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: todo.qikqiak.com
http:
paths:
- backend:
serviceName: fe
servicePort: 3000
path: //<code>

就是一个很常规的 Ingress 对象,部署该对象后,将域名解析后就可以正常访问到应用: