Ingress是一个资源对象,用于将不同URL的访问请求转发到后端不同的Service,实现HTTP层的路由机制.Kubernetes使用Ingress策略定义和Ingress Controller.两者结合实现完整的Ingress负载均衡器.
1、创建Ingress Controller和默认的backend服务
在定义Ingress策略之前,需要先部署Ingress Controller,以实现为所有后端Service提供一个统一的入口.Ingress controller将以pod的形式存在,监控apiserver的/ingress接口后端的backend services,如果service发生变化,则Ingress Controller应自动更新其转发规则.
为了让Ingress Controller能够正常启动,还需要为其配置一个backend,用于在客户端访问的url地址不存在时,能返回一个正确的404应答.
default-backend.yaml
apiVersion: v1
kind: Service
metada:
name: default-http-backend
namespace: kube-system
labels:
k8s-app: default-http-backend
spec:
ports:
- port: 80
targetPort: 8080
selector:
k8s-app: default-http-backend
2、定义ingress策略
对zszhweb.com网站的访问设置Ingress策略,定义对其/demo路径的访问转发到后端webapp Service的规则
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: zszhweb.com
spec:
rules:
- host: zszhweb.com
http:
paths:
- path: /demo
backend:
serviceName: webapp
servicePort: 8080这个Ingress的定义,说明对目标地址http://zszhweb.com/demo的访问将被转发到集群中的Service webapp即webapp:8080/demo上.
3、Ingress的策略配置技巧
1)转发到单个后端服务上
backend:
serviceName: myweb
servicePort: 80802)同一域名下,不同的URL路径转发到不同的服务上
rules:
- host: xxxx.com
http:
paths:
- path: /web
backend:
serviceName: web-service
servicePort: 80
- path: /api
- backend:
serviceName: api-service
servicePort: 8081 3)不同的域名转发到不同的服务器上
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: service1
servicePort: 80
- host: bar.foo.com
http:
paths:
- backend:
serviceName: service2
servicePort: 804)不使用域名的转发规则
rules:
- http:
paths:
- path: /demo
backend:
serviceName: webapp
servicePort: 80804、Ingress的TLS安全设置 为Ingress中的域名进行TLS安全证书的设置,步骤如下: 1、创建自签名的密钥和SSL证书文件 2、将证书保存到k8s中的一个Secret资源对象上 3、将该Secret对象设置到Ingress中
更多技术文章请关注公众号:架构师Plus,
扫码添加
