Kuberenetes系统学习(四)-----了解Ingress

322 阅读2分钟

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: 8080

2)同一域名下,不同的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: 80

4)不使用域名的转发规则

rules:
- http:
  paths:
  - path: /demo
    backend:
    serviceName: webapp
    servicePort: 8080

4、Ingress的TLS安全设置 为Ingress中的域名进行TLS安全证书的设置,步骤如下: 1、创建自签名的密钥和SSL证书文件 2、将证书保存到k8s中的一个Secret资源对象上 3、将该Secret对象设置到Ingress中 


 更多技术文章请关注公众号:架构师Plus, 扫码添加 

在这里插入图片描述