Ingress 七层路由
理解 Ingress 的作用与原理
掌握 Ingress 的配置方法
能实现域名路由、路径路由、TLS 配置
核心讲解
Service 是四层负载,Ingress 是七层路由,负责 HTTP/HTTPS 接入,实现域名、路径路由、SSL 终止、限流等功能。
(1)核心作用
统一公网入口,一个入口路由到多个服务
七层路由,根据域名、路径分发到不同后端服务
SSL 证书卸载,HTTPS 加密
虚拟主机、多域名共用一个公网 IP
(2)Ingress 控制器
Ingress 只是规则,真正执行的是 Ingress Controller。
主流实现:Ingress-NGINX(官方推荐,社区最活跃)
其他:Traefik、Kong、APISIX
(3)常用路由规则
主机路由:不同域名转发到不同服务
路径路由:不同路径转发到不同服务
重写、限流、跨域、白名单
操作步骤
# 1. 安装 Ingress-NGINX 控制器
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
# 验证控制器运行
kubectl get pods -n ingress-nginx
# ingress-demo.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host: nginx.demo.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-svc
port:
number: 80
# 创建 ingress 规则
kubectl apply -f ingress-demo.yaml
# 查看
kubectl get ingress
# 本地测试:修改 hosts 文件指向节点IP
# 浏览器访问 http://nginx.demo.com:节点端口 验证
常见误区
创建 Ingress 就生效:必须先安装 Ingress Controller,不然只有规则没人执行
Ingress 是负载均衡器:是七层路由控制器,本身不是负载均衡器,前面还要配 LB
路径匹配默认精确:默认 Prefix 前缀匹配,不是精确匹配
只能路由一个服务:可以配置多主机、多路径,路由到几十个服务都可以
课后练习
安装 Ingress-NGINX 控制器
配置 Ingress 规则,用域名访问 nginx 服务
配置两个不同路径路由到不同服务
思考:Ingress 和 Service 的区别是什么?

