Kubernetes學習之Ingress

對於基於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等其他類型。


Kubernetes學習之Ingress

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


分享到:


相關文章: