Airflow配置前缀后在EKS Fargate环境下出现404问题求助
问题原因及解决方案
404错误的核心原因
你的ALB Ingress当前会将带有/airflow-dev/前缀的请求完整路径转发给Airflow Webserver,但Airflow默认仅监听根路径/下的端点。当Webserver收到/airflow-dev/dags这类带前缀的请求时,找不到对应的路由,因此返回404。
修改BASE_URL后Pod重启的原因
你设置的AIRFLOW__WEBSERVER__BASE_URL为localhost:8080/airflow-dev/存在两个致命问题:
localhost:8080是Pod内部的本地地址,Airflow Webserver启动时会验证地址有效性,或因内部路由配置冲突导致启动失败。- 仅修改
BASE_URL不足以让Airflow适配前缀路径,缺少ENABLE_PROXY_FIX等关键配置,会导致Webserver初始化异常,触发Pod重启。
正确配置步骤
1. 调整Ingress实现路径重写
ALB Ingress需要通过注解剥离路径前缀,将/airflow-dev/*的请求转发到Airflow服务的/*路径。修改Ingress YAML如下:
spec: ingressClassName: alb annotations: alb.ingress.kubernetes.io/rewrite-target: /$1 # 若使用HTTPS,可添加以下注解(按需启用) # alb.ingress.kubernetes.io/scheme: internet-facing # alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]' # alb.ingress.kubernetes.io/ssl-redirect: '443' rules: - http: paths: - path: /airflow-dev(/|$)(.*) pathType: ImplementationSpecific backend: service: name: airflow-dev-nodeport port: number: 8080
rewrite-target: /$1:将/airflow-dev/xxx格式的请求转发为/xxx,匹配Airflow默认的根路径路由。pathType: ImplementationSpecific:适配ALB的路径重写规则。
2. 修正Airflow环境变量配置
设置正确的外部访问地址,并开启代理修复以识别ALB转发的请求:
extraEnv: | - name: "AIRFLOW_VAR_FOO" value: "Develp_foo" - name: "AIRFLOW__WEBSERVER__BASE_URL" value: "https://your-actual-ingress-url/airflow-dev/" # 替换为你的Ingress实际URL - name: "AIRFLOW__WEBSERVER__ENABLE_PROXY_FIX" value: "true" - name: "AIRFLOW__WEBSERVER__SERVER_NAME" value: "your-actual-ingress-url" # 替换为你的Ingress域名或IP
ENABLE_PROXY_FIX:让Airflow信任ALB发送的X-Forwarded-*请求头,正确识别外部请求的路径和地址。SERVER_NAME:确保Webserver启动时绑定到外部可访问的地址,避免域名解析异常。
3. 应用配置并验证
- 应用Ingress修改:
kubectl apply -f your-ingress.yaml - 更新Airflow部署(Helm方式):
helm upgrade airflow-dev apache-airflow/airflow -f your-values.yaml - 等待Pod重启完成后,访问
https://your-ingress-url/airflow-dev/即可正常打开Airflow UI。
内容的提问来源于stack exchange,提问作者tkansara
相关产品推荐
相关产品推荐

