Nginx-ingress-controller 无法加载应用程序的静态资源

问题描述 投票:0回答:1

我部署了一个 AWS EKS 集群,然后部署了一个 nginx-ingress-controller。

然后我尝试在集群上部署ArgoCD。入口似乎工作正常,当我尝试 myloadbalancerDNS.com/argo 时,对我的负载均衡器 DNS 主机名的请求返回 200

但是没有加载任何静态资源,我的路线/路径规则有问题。

这是我的入口

    alb.ingress.kubernetes.io/ssl-passthrough: "true"
    kubernetes.io/ingress.class: nginx
    meta.helm.sh/release-name: argocd
    meta.helm.sh/release-namespace: argo
    nginx.ingress.kubernetes.io/backend-protocol: HTTP
    nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: "true"
  creationTimestamp: "2024-02-27T17:22:38Z"
  generation: 7
  labels:
    app.kubernetes.io/component: server
    app.kubernetes.io/instance: argocd
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: argocd-server
    app.kubernetes.io/part-of: argocd
    app.kubernetes.io/version: v2.10.1
    helm.sh/chart: argo-cd-6.2.3
  name: argocd-server
  namespace: argo
  resourceVersion: "302643"
  uid: 09919fd3-d032-4dba-9fa7-0e693e797357
spec:
  ingressClassName: nginx
  rules:
  - host: a3d5ec6525a3642b1a50bc17d3e46b34-221545762.eu-west-1.elb.amazonaws.com
    http:
      paths:
      - backend:
          service:
            name: argocd-server
            port:
              number: 443
        path: /argo/?(.*)
        pathType: Exact

请注意,当我运行

curl a3d5ec6525a3642b1a50bc17d3e46b34-221545762.eu-west-1.elb.amazonaws.com/argo/assets/fonts.css
时它可以工作,但是当我在浏览器 a3d5ec6525a3642b1a50bc17d3e46b34-221545762.eu-west-1.elb.amazonaws.com/argo 上访问该页面时,它会为所有静态资产返回 404 错误

所以 TL;DR

当我访问 myLoadBalancer.com/argo 时,我希望我的 nginx-ingress-controller 从 myLoadBalancer.com/argo/assets/etc 加载资产,但它会直接查找 myLoadBalancer.com/assets

kubernetes routes nginx-ingress ingress-controller
1个回答
0
投票

您的问题似乎与 Nginx Ingress Controller 为您的 ArgoCD 实例重写路径的方式有关。

您当前的

pathType
Exact
,这意味着它只会匹配确切的路径
/argo/?(.*)
https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types。这可能不是您想要的,因为您需要处理
/argo
下的路径,例如
/argo/assets/fonts.css
。考虑将
pathType
更改为
Prefix
或调整路径正则表达式以正确处理子路径:

path: /argo(/|$)(.*)
pathType: Prefix

您可以使用

curl
测试各种路径,以确保入口按预期路由流量,并检查 Nginx 入口控制器的日志以查看请求的处理方式以及请求的转发位置。

© www.soinside.com 2019 - 2024. All rights reserved.