首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用重写目标注释后无法访问入口k8s资源

使用重写目标注释后无法访问入口k8s资源
EN

Stack Overflow用户
提问于 2022-11-29 19:59:00
回答 1查看 25关注 0票数 0

我有一个K8s集群,有两个服务--一个服务服务前端静态文件,另一个服务后端服务。为了区分这两者,我使用一个入口和一个对xyz.com/的rest调用指向前端服务,而对xyz.com/ rest /abc的rest调用指向后端服务(它是一个api网关和它后面的服务集合)。在创建入口时,如果使用重写目标注释将xyz.com/rest/abc重写为xyz/com/abc,则在尝试访问前端服务时会出现错误。我所面对的错误是

代码语言:javascript
复制
Did not parse stylesheet .... because non css mime types are not allowed in strict mode
Syntax error: Unexpected token < (while parsing bundle.js)

但是,如果我没有使用重写注释,那么所有文件都会被传输,而不会出现任何问题,并且页面将按其应有的方式呈现。

正在使用的注释:

代码语言:javascript
复制
nginx.ingress.kubernetes.io/rewrite-target: /$2

使用nginx ingress controller

不知道为什么会发生这种情况,有人能帮上忙吗?任何指示,或者我正在犯的任何错误。

我没有将path:"/"用于前端服务,而是尝试给出一个更精确的路径"/ui",但它仍然给出了相同的问题。

K8s和ingress都是新手,所以被困在这里,不知道该怎么办。

入口->

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: sample-ingress
  labels:
    name: sample-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
  - host: xyz.com
    http:
      paths:
      - pathType: Prefix
        path: /rest(/|$)(.*)
        backend:
          service:
            name: backend-service
            port:
              number: 8080
      - pathType: Prefix
        path: /()
        backend:
          service:
            name: frontend-service
            port: 
              number: 3000
EN

回答 1

Stack Overflow用户

发布于 2022-11-29 21:08:41

对我来说,还不清楚想要的行为是什么。如果你想

代码语言:javascript
复制
/rest/restpath -> backend-service/restpath

代码语言:javascript
复制
/uipath -> frontend-service/uipath

那么你的入口看起来就像这样:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: sample-ingress
  labels:
    name: sample-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
  - host: xyz.com
    http:
      paths:
      - pathType: Prefix
        path: /rest/(.*)
        backend:
          service:
            name: backend-service
            port:
              number: 8080
      - pathType: Prefix
        path: /(.*)
        backend:
          service:
            name: frontend-service
            port: 
              number: 3000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74619621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档