You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ALB Ingress Controller路径路由异常:仅/可用,/test报403

EKS ALB Ingress Controller 路径路由异常排查

问题现象

在EKS集群中使用ALB Ingress Controller配置路径路由时,根路径/可正常访问,但/test路径返回403错误。将test服务切换至/路径后可正常运行,说明非根路径的路由规则未生效。

相关Ingress配置

test-ui Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ui
  namespace: dev
  annotations:
    # Ingress core settings
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/load-balancer-name: test-dev
    alb.ingress.kubernetes.io/tags: project=test, env=dev
    alb.ingress.kubernetes.io/ssl-redirect: '443'
    alb.ingress.kubernetes.io/group.name: dev
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/group.order: 1000
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80,"HTTPS": 443}]'
    alb.ingress.kubernetes.io/certificate-arn: xxx
    alb.ingress.kubernetes.io/actions.response-403: >
      {"type":"fixed-response","fixedResponseConfig":{"contentType":"text/plain","statusCode":"403","messageBody":"403 External access to endpoint not allowed"}}
spec:
  rules:
  - host: "xxx.test.com"
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: test-ui
            port:
              number: 80

test Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test
  namespace: dev
  annotations:
    # Ingress core settings
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/load-balancer-name: test-dev
    alb.ingress.kubernetes.io/tags: project=test, env=dev
    alb.ingress.kubernetes.io/ssl-redirect: '443'
    alb.ingress.kubernetes.io/group.name: dev
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80,"HTTPS": 443}]'
    alb.ingress.kubernetes.io/certificate-arn: xxx
    alb.ingress.kubernetes.io/actions.response-403: >
      {"type":"fixed-response","fixedResponseConfig":{"contentType":"text/plain","statusCode":"403","messageBody":"403 External access to endpoint not allowed"}}
spec:
  rules:
  - host: "xxx.test.com"
    http:
      paths:
      - path: /test
        pathType: Prefix
        backend:
          service:
            name: test
            port:
              number: 8080

环境信息

  • AWS Load Balancer Controller版本:v2.6.1(Helm安装)
  • Kubernetes版本:1.27
  • EKS版本:1.27

排查与解决步骤

1. 适配后端服务路径规则

ALB默认会将完整请求路径(如/test/xxx)转发给后端服务,如果test服务仅监听根路径/的请求,就会返回403。需添加路径重写配置:
在test Ingress的metadata.annotations中加入:

alb.ingress.kubernetes.io/rewrite-target: /$1

同时修改spec.rules.http.paths中的路径:

paths:
- path: /test/*
  pathType: Prefix
  backend:
    service:
      name: test
      port:
        number: 8080

配置后ALB会将/test/xxx重写为/xxx转发给后端服务。

2. 验证ALB路由规则优先级

两个Ingress同属dev组,ALB会按路径长度匹配优先级处理请求(更长的Prefix路径优先级更高)。可通过AWS控制台查看ALB监听器规则,确认/test路径对应的规则是否正确指向test服务,而非被/的规则匹配拦截。

3. 检查服务端点可用性

确认test服务对应的Pod正常运行且端点就绪:

kubectl get svc test -n dev
kubectl get endpoints test -n dev

若Pod未就绪或端点为空,ALB会返回403/503错误,需先修复服务的运行状态。

4. 确认Ingress配置同步状态

查看Ingress资源的事件日志,确认Controller已成功将配置同步至ALB:

kubectl describe ingress test -n dev
kubectl describe ingress test-ui -n dev

若存在同步失败事件,根据提示调整配置(如注解格式错误、IAM权限不足等)。


内容的提问来源于stack exchange,提问作者rabioz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:35:01