文章目录
  1. 1. 记一次k8s的ingress配置问题
  2. 2. 正确的域名分列配置

记一次k8s的ingress配置问题

我的环境是k8s 1.16 版本,然后根据官方文档的说明,域名分列是这样的效果:

foo.bar.com -> 178.91.123.132 -> / foo service1:4200
/ bar service2:8080

官方的文档配置是这样的:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: simple-fanout-example
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /foo
        backend:
          serviceName: service1
          servicePort: 4200
      - path: /bar
        backend:
          serviceName: service2
          servicePort: 8080

然后 kubectl apply -f 使配置生效。

很遗憾,经过我1天半的反复测试,这个例子是错误的!!!!!

按照官网的这个方式去配置域名分列,是无法达到预期的效果的!!!!!

以下是k8s官网例子的链接:

https://v1-16.docs.kubernetes.io/zh/docs/concepts/services-networking/ingress/#ingress-%e8%b5%84%e6%ba%90

正确的域名分列配置

正确的域名分列配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: rewrite
namespace: default
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: service1
servicePort: 4200
path: /foo(/|$)(.*)
- backend:
serviceName: service2
servicePort: 8080
path: /bar(/|$)(.*)

以上配置进入访问时最终将转发解析到foo.bar.com下:

  • foo.bar.com/foo rewrites to foo.bar.com/
  • foo.bar.com/bar/ rewrites to foo.bar.com/
  • foo.bar.com/foo/new rewrites to foo.bar.com/new

还是要看ingress-nginx官网的例子

以上才是域名分列的正解!!!!!

文章目录
  1. 1. 记一次k8s的ingress配置问题
  2. 2. 正确的域名分列配置