ArgoCD入门教程添加示例应用报x509证书错误问题
问题根因
- HTTPS连接GitHub报x509证书不匹配:集群出口Traefik代理/网关错误拦截了发往github.com的出站请求,返回Traefik自身默认自签证书(签发域为
*.traefik.default后缀),ArgoCD校验GitHub域名证书时匹配失败,和ArgoCD本身逻辑无关。 - SSH连接报/tmp目录错误:ArgoCD的repo-server组件拉取Git仓库时,需要在系统临时目录初始化仓库副本,当前部署的repo-server要么被Pod安全策略、安全上下文限制了/tmp目录写入权限,要么/tmp目录挂载异常。
解决方案
优先修复HTTPS连接问题(推荐)
- 排查集群出口网关、Traefik转发规则、全局代理配置,取消对github.com地址的拦截,确保ArgoCD所在命名空间的Pod可以直接连通GitHub 443端口,不经过Traefik默认证书的代理层。
- 如果集群强制要求走代理访问公网,将代理的根CA证书通过ConfigMap挂载到
argocd-repo-server、argocd-server两个组件的/etc/ssl/certs目录下,重启对应Pod加载受信证书即可。 - 临时测试方案(禁止生产环境使用):给repo-server添加跳过TLS校验的启动参数,执行以下命令更新部署:
kubectl patch deployment argocd-repo-server -n argocd --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value":"--insecure-skip-server-verification"}]'
等待Pod滚动重启完成后,重新执行创建应用的命令即可。
修复SSH连接的临时目录问题
如果选择SSH方式连接仓库,先解决/tmp目录权限报错:
- 检查
argocd-repo-server的Pod安全上下文配置,确认运行用户对/tmp目录有读写权限,不要将/tmp设置为只读挂载。 - 如果集群启用了受限Pod安全策略,给repo-server添加emptyDir类型的/tmp卷挂载,在部署配置中添加如下字段:
spec: template: spec: volumes: - name: tmp-dir emptyDir: {} containers: - name: argocd-repo-server volumeMounts: - name: tmp-dir mountPath: /tmp
- 等待repo-server Pod重启完成后,再重新通过SSH方式添加仓库、创建应用。
内容的提问来源于stack exchange,提问作者prrlvr
相关产品推荐
相关产品推荐

