无法通过UI运行Argo Workflow,求AWS EKS环境下公网部署方案
在AWS EKS集群中实现Argo Workflows公网访问的方案
方案一:修正LoadBalancer Service配置(快速直接)
如果之前修改install.yaml没生效,大概率是配置未改对或负载均衡器安全组未开放端口,直接修改运行中的服务更可靠:
- 编辑Argo Server的Service:
kubectl edit service argo-server -n argo - 将
spec.type修改为LoadBalancer,若需指定AWS负载均衡器类型(如NLB),可添加注解:metadata: annotations: service.beta.kubernetes.io/aws-load-balancer-type: "nlb" # 可选,默认是Classic LB - 保存退出后,等待AWS创建负载均衡器,执行以下命令查看公网地址:
kubectl get service argo-server -n argo - 最后检查负载均衡器的安全组,确保入站规则开放
2746端口(Argo Server默认端口),允许公网访问(或指定IP范围)。
方案二:使用AWS ALB Ingress(推荐,支持HTTPS与域名)
这种方式更灵活,适合生产环境,需先在EKS集群中部署AWS Load Balancer Controller(原ALB Ingress Controller):
- 创建Ingress资源文件
argo-ingress.yaml:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: argo-server-ingress namespace: argo annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip # 可选:配置HTTPS,替换为你的ACM证书ARN alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-1:你的账号ID:certificate/证书ID alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]' alb.ingress.kubernetes.io/redirect-to-https: "true" spec: ingressClassName: alb rules: - host: argo.your-domain.com # 替换为你的域名 http: paths: - path: / pathType: Prefix backend: service: name: argo-server port: number: 2746 - 应用Ingress配置:
kubectl apply -f argo-ingress.yaml - 等待AWS创建ALB,执行以下命令查看ALB的DNS地址:
kubectl get ingress argo-server-ingress -n argo - 将你的域名解析到该ALB的DNS地址即可通过域名访问。
方案三:NodePort + EC2节点公网IP(临时测试用)
适合快速测试,不推荐生产环境:
- 编辑Argo Server的Service,将
spec.type改为NodePort,可指定固定端口(如30000):spec: type: NodePort ports: - name: web port: 2746 nodePort: 30000 # 可选,范围30000-32767 - 打开EKS节点的安全组,添加入站规则,允许
30000端口的公网访问。 - 使用节点的公网IP + NodePort访问:
http://<节点公网IP>:30000
排查之前修改install.yaml无效的原因
- Argo Workflows控制器可能会覆盖Service配置,直接修改运行中的Service比修改install.yaml更可靠。
- 未等待负载均衡器完全创建(AWS创建LB通常需要1-2分钟)。
- 负载均衡器的安全组未开放
2746端口的入站规则,导致无法访问。
内容的提问来源于stack exchange,提问作者Miloš Milutinov
相关产品推荐
相关产品推荐

