對於基於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問題
<code>nginx.ingress.kubernetes.io/proxy-body-size: "1024m"/<code>
以下部分為解決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
閱讀更多 愛踢人生 的文章