由于 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 对象如下所示:
apiVersion: extensions/v1beta1kind: Ingressmetadata: name: fe namespace: default annotations: kubernetes.io/ingress.class: "nginx"spec: rules: - host: todo.qikqiak.com http: paths: - backend: serviceName: fe servicePort: 3000 path: /
就是一个很常规的 Ingress 对象,部署该对象后,将域名解析后就可以正常访问到应用: