kubernetes解决ingress代理前后端分离pod之间的跨域问题——<09>

问题前ingress的配置:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
    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:
  backend:
    serviceName: my-nginx
    servicePort: 8080
  rules:
    - host: xxx.xxxxx.com
      http:
        paths:
        - path: /
          backend:
            serviceName: my-nginx
            servicePort: 8080

修改后配置:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: "/"
    nginx.ingress.kubernetes.io/add-base-url: "true"
    nginx.ingress.kubernetes.io/secure-backends: "true"
spec:
  backend:
    serviceName: my-nginx
    servicePort: 8080
  rules:
    - host: xxx.xxxxx.com
      http:
        paths:
        - path: /
          backend:
            serviceName: my-nginx
            servicePort: 8080

前提条件:本身前后端项目脱离集群本身跨域问题解决,但是在集群中创建服务由于配置问题产生这种跨域错误。如果是前后端只是一个项目,也可直接指定域名参考如下修改annotations配置:

  annotations:
    kubernetes.io/ingress.class: "nginx"
    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: 'http://www.xx.xx.com'
    Vary: Origin
    nginx.ingress.kubernetes.io/enable-cors: 'true'
    nginx.ingress.kubernetes.io/service-weight: ''

补充:Ingress注意自己所需要代理的命名空间的问题

kubernetes知识图谱

ingress-nginx代理配置

上一篇:kubernetes解决pod中的日期与服务器不一致的情况——<08>
下一篇:kubernetes安装metrics-server监控cpu和内存使用情况——<10>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是指在浏览器中,前页面的请求访问不同名、不同协议、不同口的资源时,由于安全机制的限制而出现的问题解决问题Kubernetes(简称k8s)中,可以通过以下两种方式来实现前后分离访问: 1. 通过服务转发:在后服务器上设置代理,将前请求的请求转发到不同名的后服务器上。这样,前页面直接请求同名的资源,再由后服务器去请求不同名的资源,以此实现访问。这种方式相对简单,但会消耗额外的服务器资源和带宽。 2. 配置请求策略:通过在后服务器的响应头中添加特定的请求策略,允许不同名的前页面可以访问后资源。常用的请求策略包括CORS(资源共享)和JSONP(JSON with Padding)等。一般来说,在后服务器中增加响应头的配置就可以实现请求策略,具体的配置方式可以根据具体的后框架和需求来决定。 无论使用哪种方式,都需要注意在保障安全性的前提下进行访问,以防止恶意攻击和数据泄露。此外,还可以考虑使用反向代理、WebSocket等技术来进一步优化访问的性能和安全性。总之,k8s可以通过灵活的配置和选择合适的方案来支持前后分离时的访问。 ### 回答2: Kubernetes(简称为K8s)是一个开源的容器编排平台,可以用于自动化部署、扩展和管理应用程序容器。而前后分离则是一种软件架构模式,将前与后分离开发,前负责展示,后负责数据处理和业务逻辑。 在前后分离开发中,由于前代码和后代码是分别运行在不同的名或口上,因此就涉及到问题是指在浏览器中,一种Web页面中的脚本发起了一个与另一个名、协议、口号中任意一个不同)的网络请求。而问题是由浏览器的同源策略所引起的。 为了解决问题,可以在K8s中进行如下配置: 1. 在K8s集群中,可以通过配置Ingress规则来实现访问控制。Ingress是K8s的一种资源对象,用于配置集群中的HTTP和HTTPS路由,通过Ingress控制器,可以实现将请求路由到不同的后服务,并在转发过程中添加自定义的头部信息(例如Access-Control-Allow-Origin、Access-Control-Allow-Methods等)来控制访问。 2. 另外一种解决方案是使用K8s的服务代理功能,例如使用Istio作为服务网格集成框架。Istio可以通过Envoy代理对入站和出站的HTTP流量进行控制和管理,包括访问控制。通过配置Istio的虚拟服务规则和网关,可以实现向后服务添加头部信息,并实现流量控制和路由转发。 总之,K8s提供了各种方式来解决前后分离中的问题,可以根据具体的需求和使用场景选择合适的方式来进行配置和管理。 ### 回答3: k8s(Kubernetes)是一种用于管理容器化应用的开源平台。它提供了一种方便、可靠的方式来部署、扩展和管理应用程序。而前后分离是在开发Web应用时常见的两个概念。 前后分离是指将前应用(通常是以HTML、CSS和JavaScript编写的用户界面)与后应用(通常是以某种编程语言编写的服务器逻辑)分离开发和部署的方法。通过前后分离,可以更好地实现逻辑、职责的分离,使得前后开发人员可以并行开发,提高开发效率。 是指在浏览器的同源策略下,不同名、不同口或不同协议之间的网页请求受到限制。当前应用程序在一个名下运行,而与之交互的后应用程序在另一个名下时,就会出现问题解决问题的常见方法包括使用代理服务器或在服务器设置响应头。 在使用k8s进行前后分离的部署时,可以采取以下方法解决问题: 1. 使用Ingress Controller:k8s的Ingress资源可以用来管理入站网络流量,包括请求路由和TLS终止。通过配置Ingress资源,可以设置反向代理服务器或负载均衡器,将前请求转发到后应用程序。在反向代理服务器中设置响应头,可以解决问题。 2. 使用API网关:可以在k8s集群中部署一个API网关,作为前和后之间的中间件。API网关可以统一管理和处理前请求,并在转发请求到后应用程序之前,修改响应头以解决问题。 3. 后配置响应头:在后应用程序中,可以通过设置响应头来解决问题。常见的设置包括Access-Control-Allow-Origin、Access-Control-Allow-Methods和Access-Control-Allow-Headers等。 总之,通过合理配置网络流量管理和设置响应头,可以在k8s前后分离的部署中解决问题,保证应用程序的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值