为什么需要ingress资源对象
1. service缺点: service的表现形式为ip:port, 既工作在tcp/ip层, 而对于基于HTTP服务来说, 不同的url地址经常对应到不同的后端服务,通过service是无法实现的,
2. 解决方案: kubernetes 1.1版本增加ingress资源对象, 用于将不同的url访问请求转发到后端不同的service, 以实现http层的业务路由机制
为了使用ingress, 需要创建ingress策略和ingress controller
ingress controller 作用特点
1.ingress controller 以pod方式运行
2.监控api server的service关联的pod变量
3.获取ingress策略规则 生成nginx配置文件
4.会跳过kube-prox的转发功能
ingress策略
1)同一个域名 , 不同的url路径转发至不同的服务上
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-demo
namespace: default
spec:
rules:
- host: test1.nginx.com
http:
paths:
- path: /web
backend:
serviceName: web-service
servicePort: 80
- path: api
backend:
serviceName: api-service
servicePort: 80
2)不同的域名,被转发到不同的服务上
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-demo
namespace: default
spec:
rules:
- host: test1.nginx.com
http:
paths:
- path: /web
backend:
serviceName: web-service
servicePort: 80
- host: test2.nginx.com
http:
paths:
- path: /api
backend:
serviceName: api-service
servicePort: 80