这种配置常用于一个网站通过不同的路径提供不同服务的场景。

需求

http://my.nginx.test/hello-k8s 的访问将被路由到后端名为”hello-k8s-svc” 的Service。

http://my.nginx.test/hello-world 的访问将被路由到后端名为”hello-world-svc” 的Service。

ingress.yaml如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-test
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: my.nginx.test
http:
paths:
- path: /hello-world
backend:
serviceName: hello-world-svc
servicePort: 80
- path: /hello-k8s
backend:
serviceName: hello-k8s-svc
servicePort: 8080

创建ingress规则:

1
2
3
4
5
6
[root@vm10-0-11-170 ~]# kubectl apply -f ingress.yaml
ingress.extensions/nginx-test created

[root@vm10-0-11-170 ~]# kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
nginx-test my.nginx.test 80 15s

在浏览器的访问验证如下:

upload successful