对于基于HTTP的服务来说,不同的URL地址经常对应到不同的后端服务或者虚拟服务器,这些应用层的转发机制仅通过Kubernetes的Service机制是无法实现的。从Kubernetes v1.1版本开始新增Ingress资源对象,用于将不同URL访问请求转发到后端不同的Service,以实现HTTP层的业务路由机制。Kubernetes使用一个Ingress策略定义和一个具体的Ingress Controller,两者结合并实现一个完整的Ingress负载均衡器。
使用Ingress进行负载分发时,Ingress Controller通过api-server监听ingress和service的变化,将基于Ingress策略将客户端请求直接转发到Service对应的后端Endpoint上,这样会跳过kube-proxy的转发功能。
- 未配置ingress:
集群外部 --> NodePort --> k8s Service - 配置ingress:
集群外部 --> Ingress --> k8s Service
Ingress Controller 除了traefik,还有Haproxy、Linkerd、nginx等其他类型。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: JOB_BASE_NAME
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "1024m"
nginx.ingress.kubernetes.io/cors-allow-headers: >-
DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
nginx.ingress.kubernetes.io/cors-allow-methods: 'PUT, GET, POST, OPTIONS'
nginx.ingress.kubernetes.io/cors-allow-origin: '*'
nginx.ingress.kubernetes.io/enable-cors: 'true'
nginx.ingress.kubernetes.io/service-weight: ''
spec:
rules:
- host: HOST_HEADER.xxx.cn
http:
paths:
- backend:
serviceName: JOB_BASE_NAME
servicePort: 8080
这部分解决body_size,413问题
nginx.ingress.kubernetes.io/proxy-body-size: "1024m"
以下部分为解决nginx反代ingress跨域问题
nginx.ingress.kubernetes.io/cors-allow-headers: >-
DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
nginx.ingress.kubernetes.io/cors-allow-methods: 'PUT, GET, POST, OPTIONS'
nginx.ingress.kubernetes.io/cors-allow-origin: '*'
nginx.ingress.kubernetes.io/enable-cors: 'true'
nginx.ingress.kubernetes.io/service-weight: ''
跨域配置参考链接
https://blog.csdn.net/u012375924/article/details/94360425