首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法到达ArgoCD入口

无法到达ArgoCD入口
EN

Stack Overflow用户
提问于 2022-07-15 12:36:12
回答 3查看 1.1K关注 0票数 1

我正在尝试使用helm在EKS集群中设置argocd。我想用ALB作为负载平衡器。UI可以通过http://node_ip:8080访问,但不能通过创建的ALB或LB访问。

这是我的配置:

代码语言:javascript
运行
复制
  ingress:
    enabled: true
    annotations:
      kubernetes.io/ingress.class: alb
      alb.ingress.kubernetes.io/backend-protocol: HTTPS
      alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
      alb.ingress.kubernetes.io/scheme: internal
      alb.ingress.kubernetes.io/target-type: IP
      alb.ingress.kubernetes.io/certificate-arn: "${cert}"
      alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-FS-1-2-Res-2020-10

下面是创建的入口:

代码语言:javascript
运行
复制
kubectl get ing -n argocd

NAME            CLASS    HOSTS                         ADDRESS                                                          PORTS   AGE
argocd-server   <none>   eks-test-alb-argocd.abc.com   internal-k8s-argocd-argocdse-111.222.us-east-1.elb.amazonaws.com   80      9h

下面是我尝试使用DNS或LB地址时得到的信息:

代码语言:javascript
运行
复制
curl internal-k8s-argocd-argocdse-111-222.us-east-1.elb.amazonaws.com

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

有什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-20 14:03:46

嗯,我发现了这个问题,它比我想象的简单得多。

由于豆荚正在监听端口80,所以我所要做的就是将backend-protocol更改为HTTP。就这样。

票数 1
EN

Stack Overflow用户

发布于 2022-07-19 12:08:46

从下面看,你的入口似乎没有把443转发到服务部门

代码语言:javascript
运行
复制
kubectl get ing -n argocd

NAME            CLASS    HOSTS                         ADDRESS                                                          PORTS   AGE
argocd-server   <none>   eks-test-alb-argocd.abc.com   internal-k8s-argocd-argocdse-111.222.us-east-1.elb.amazonaws.com   80      9h

在您的掌舵值中,可以将server.ingress.https设置为true吗?

票数 0
EN

Stack Overflow用户

发布于 2022-07-19 19:24:16

您是否为argocd-server创建了第二个服务?根据医生的说法:

这是必要的,因为我们需要告诉ALB将GRPC流量发送到不同的目标组,然后是UI流量,因为后端协议是HTTP2而不是HTTP1。

代码语言:javascript
运行
复制
apiVersion: v1
kind: Service
metadata:
  annotations:
    alb.ingress.kubernetes.io/backend-protocol-version: HTTP2 #This tells AWS to send traffic from the ALB using HTTP2. Can use GRPC as well if you want to leverage GRPC specific features
  labels:
    app: argogrpc
  name: argogrpc
  namespace: argocd
spec:
  ports:
  - name: "443"
    port: 443
    protocol: TCP
    targetPort: 8080
  selector:
    app.kubernetes.io/name: argocd-server
  sessionAffinity: None
  type: NodePort

您在入口定义中缺少的另一件事是注释中的以下条件:

代码语言:javascript
运行
复制
alb.ingress.kubernetes.io/conditions.argogrpc: |
        [{"field":"http-header","httpHeaderConfig":{"httpHeaderName": "Content-Type", "values":["application/grpc"]}}]

这是将所有应用程序/grpc流量路由到先前创建的HTTP2后端。

参考资料:

  1. https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#aws-application-load-balancers-albs-and-classic-elb-http-mode
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72994100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档