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

如何在AWS EKS中将Nginx Ingress暴露至公网可访问的公共URL?

EKS Ingress公网暴露操作步骤

EKS集群默认未内置Ingress控制器,你当前创建的Ingress资源仅定义了路由规则,必须部署对应的控制器消费规则,才会自动生成公网访问入口,具体操作如下:

1. 部署AWS Load Balancer Controller

AWS官方维护的AWS Load Balancer Controller(原ALB Ingress Controller)是EKS场景最常用的Ingress控制器,会自动根据Ingress配置创建AWS公网应用负载均衡(ALB)作为访问入口:

  • 先为控制器配置IAM权限,推荐使用IAM角色关联服务账户(IRSA)方案,也可直接给EKS节点角色绑定AWS Load Balancer Controller对应的官方IAM权限策略
  • 安装控制器后,执行以下命令验证控制器运行正常:
    kubectl get pods -n kube-system | grep aws-load-balancer-controller
    输出的Pod状态为Running即为部署成功

2. 补全Ingress资源配置

你当前的Ingress配置缺少AWS控制器识别所需的标注,需要修改annotations配置,同时建议升级老旧的apiVersion:

# 旧版extensions/v1beta1已在高版本K8S废弃,推荐使用稳定版api
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations:
    # 指定Ingress由AWS Load Balancer Controller处理
    kubernetes.io/ingress.class: alb
    # 声明创建公网可访问的ALB
    alb.ingress.kubernetes.io/scheme: internet-facing
    # 目标类型:Service为ClusterIP类型填ip,NodePort类型填instance
    alb.ingress.kubernetes.io/target-type: ip
    # 保留原有的重写规则
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: example.com
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: my-service-example
              port:
                number: 80

3. 验证公网地址生成

修改配置后执行kubectl apply -f <你的Ingress配置文件名.yaml>提交更新,等待2-5分钟后执行kubectl get ingress,输出结果的ADDRESS列会展示自动创建的ALB公网域名,即为Ingress的公共访问URL。

4. 配置域名解析

将你使用的example.com域名的CNAME记录解析到上述ALB公网域名,即可通过域名正常访问后端服务。

注意事项

  • 请确保ALB关联的安全组放通了80/443端口的公网入方向访问权限
  • 请确保EKS节点或Pod关联的安全组放通了来自ALB的入方向访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:24:03