为什么 ArgoCD 将 GitHub.com 与我自己的 public IP 混淆?

Why is ArgoCD confusing GitHub.com with my own public IP?

我刚刚使用 kubeadm、Flannel 和 MetalLB 在裸机上设置了一个 kubernetes 集群。我的下一步是安装 ArgoCD。

我从“入门”页面安装了 ArgoCD yaml 并登录了。

添加我的 Git 存储库时,ArgoCD 给出了非常奇怪的错误消息: 错误消息似乎表明 ArgoCD 出于某种原因正在将 github.com 解析为我的 public IP 地址(我没有公开 SSH,因此连接被拒绝)。

我找不到它这样做的任何理由。当使用 https:// 而不是 SSH 时,我得到相同的结果,但在端口 443 上。

我将一个虚拟 pod 放在与 ArgoCD 相同的命名空间中,并进行了一些 DNS 查询。这些查询已正确解决。

是什么让 ArgoCD 认为 github.com 解析到我的 public IP 地址?

编辑:

我还检查了 argocd 命名空间中的网络策略,没有发现限制出口的策略。

我以前在同一网络中的集群上使用过这个,从那以后就没有更改过我的路由器防火墙。

看起来像 argoproj/argo-cd issue 1510,其中初始诊断是集群正在阻止到 GitHub 的出站连接。并建议检查出口配置。

然而,问题已通过入口规则配置解决:

need to define in values.yaml.
argo-cd default provide subdomain but in our case it was /argocd

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/backend-protocol: HTTP
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
  path: /argocd
  hosts:
    - www.example.com

and this I have defined under templates >> argocd-server-deployment.yaml

containers: 
  - name: argocd-server 
    image: {{ .Values.server.image.repository }}:{{ .Values.server.image.tag }} 
    imagePullPolicy: {{ .Values.server.image.pullPolicy }} 
    command: 
      - argocd-server 
      - --staticassets - /shared/app - --repo-server - argocd-repo-server:8081 - --insecure - --basehref - /argocd

同一个案例包含一个instance very similar to yours

无论如何,请检查您在 ArgoCD 集群中看到的 git 配置 (git config -l),以查找任何 insteadOf 会自动更改 github.com进入本地 URL (as seen here)

我的问题解决了!

我的 /etc/resolv.conf 有两行引起了麻烦:

domain <my domain>
search <my domain>

这些行是作为安装我的主机 OS 的一个步骤放在那里的,我没有意识到会以这种方式影响我。删除这些行后,现在一切正常。

很多人告诉我检查resolv.conf,但直到现在我才意识到这两行是做什么的。