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

在EKS中部署Airflow Helm Chart时如何复用现有AWS ELB作为Ingress?

在EKS上复用现有ELB部署Airflow Ingress的方案

明确结论:可以复用已有AWS ELB来创建Airflow的Ingress,官方Helm Chart本身没有直接配置项,但可通过Kubernetes Ingress/Service的自定义注解实现,同时能避免删除Helm Release时误删ELB,具体方案如下:

一、复用已有ELB的核心配置方式

AWS Load Balancer Controller(原ALB Ingress Controller)支持通过注解绑定已有负载均衡器,分两种ELB类型处理:

1. 复用已有Application Load Balancer(ALB)

直接在Ingress资源中通过注解指定已有ALB的ARN,步骤如下:

  • 先禁用Airflow Helm Chart自带的Ingress创建:
    在values.yaml中设置:
    ingress:
      enabled: false
    
  • 通过Chart的extraObjects字段注入自定义Ingress,绑定已有ALB:
    extraObjects:
      - apiVersion: networking.k8s.io/v1
        kind: Ingress
        metadata:
          name: airflow-ingress
          annotations:
            # 绑定已有ALB的ARN
            alb.ingress.kubernetes.io/load-balancer-arn: arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-existing-alb/abcdef123456
            alb.ingress.kubernetes.io/scheme: internet-facing
            # 按需添加其他ALB配置注解,比如安全组、监听协议等
        spec:
          ingressClassName: alb # 确保使用AWS Load Balancer Controller的IngressClass
          rules:
            - host: airflow.your-domain.com
              http:
                paths:
                  - path: /
                    pathType: Prefix
                    backend:
                      service:
                        name: airflow-webserver
                        port:
                          number: 8080
    

2. 复用已有Network Load Balancer(NLB)或Classic Load Balancer(CLB)

需先创建绑定已有LB的Service,再让Ingress指向该Service:

  • 同样先禁用Chart自带Ingress,然后通过extraObjects注入自定义Service和Ingress:
    extraObjects:
      # 绑定已有NLB/CLB的Service
      - apiVersion: v1
        kind: Service
        metadata:
          name: airflow-external-lb-service
          annotations:
            service.beta.kubernetes.io/aws-load-balancer-arn: arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/net/my-existing-nlb/abcdef123456
        spec:
          type: LoadBalancer
          selector:
            app: airflow-webserver
          ports:
            - port: 80
              targetPort: 8080
      # 指向该Service的Ingress
      - apiVersion: networking.k8s.io/v1
        kind: Ingress
        metadata:
          name: airflow-ingress
        spec:
          rules:
            - host: airflow.your-domain.com
              http:
                paths:
                  - path: /
                    pathType: Prefix
                    backend:
                      service:
                        name: airflow-external-lb-service
                        port:
                          number: 80
    

二、避免删除Helm Release时删除ELB

  • 若采用上述绑定已有ELB的方式,该ELB并非由Helm创建的资源,删除Release时Kubernetes不会触发ELB删除操作。
  • 若之前是通过Chart自动创建ELB、现在需要保留它:
    1. 导出当前Ingress/Service的YAML配置,移除Helm管理标签(如app.kubernetes.io/managed-by: Helm)
    2. 重新应用该资源,使其脱离Helm管控
    3. 修改Helm的values.yaml禁用自动创建Ingress/Service,改用自定义资源绑定已有ELB

注意事项

  • 确保EKS集群已正确部署AWS Load Balancer Controller,且控制器拥有访问目标ELB的IAM权限
  • 已有ELB的安全组、子网配置需允许集群节点与ELB通信,端口规则需与Ingress/Service配置匹配
  • 复用ALB时,需确认已有ALB的监听配置与Ingress的路径规则兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:30:41