16.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等其他類型。

在這裏插入圖片描述

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章