Kubernetes基于Ingress进行路由
1 说明
1.1 环境说明
- 集群说明:Kubernetes之Ingress Controller 这篇文章介绍了在Kubernetes集群中安装Nginx Ingress Controller的过程,以及简单的使用Ingress进行路由,本文在此基础之上,主要介绍Nginx Ingress的常用路由规则的使用。
- 端口说明:本文的Nginx Ingress Service是通过NodePort的方式把宿主机的30080端口和30443端口分别映射到Nginx Ingress Service的80端口和443端口,其中Nginx Ingress Service的80端口用于接收HTTP协议的请求,443端口用于接收HTTPS协议的请求,因此,后文中所有的请求中使用的端口是30080或30443。
1.2 服务说明
- 后端服务:本文示例中涉及到的三个后端服务的名称分别为:service-gateway、service-provider、service-consumer,这三个服务都部署在了Kubernetes集群中,由于本文中主要是介绍Nginx Ingress路由规则的使用,所以不给出这三个后端服务的源码。
2 路由规则
2.1 基于域名进行路由
-
Ingress示例:基于域名进行路由即是把对不同域名的请求路由到不同的服务进行处理。
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: host-ingress namespace: default spec: rules: - host: gateway.kubernetes.com http: paths: - backend: serviceName: service-gateway servicePort: 8080 - host: consumer.kubernetes.com http: paths: - backend: serviceName: service-consumer servicePort: 8080 - host: provider.kubernetes.com http: paths: - backend: serviceName: service-provider servicePort: 8080
-
URL示例:
# 路由到service-gateway服务进行处理,路由后的路径为 /consumer-api/consumer/consume http://gateway.kubernetes.com:30080/consumer-api/consumer/consume # 路由到service-gateway服务进行处理,路由后的路径为 /provider-api/provider/provide http://gateway.kubernetes.com:30080/provider-api/provider/provide # 路由到service-consume