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

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