配置Google Managed Certificates为ArgoCD提供SSL报FailedNotVisible如何解决
配置问题
- Argo CD Server默认启用TLS强制跳转,8080端口仅响应HTTPS请求,你当前配置中GKE负载均衡用HTTP协议请求8080端口,会收到3xx跳转响应,不符合GKE健康检查对200状态码的要求,直接判定后端不健康,流量无法正常转发。
- 你使用Cloudflare代理时开启了橙色云模式,Google Managed Certificate验证域名所有权时,解析到的是Cloudflare的边缘节点IP,而非你绑定到Ingress的GKE静态IP,导致域名验证失败,返回
FailedNotVisible错误。 - 未显式配置GKE Ingress的健康检查规则,默认使用
/路径做检查,Argo CD的健康检查专用路径为/healthz,路径不匹配也会导致健康检查失败。 - 你使用的Ingress API版本
networking.k8s.io/v1beta1已经在K8s 1.19+版本中废弃,可能存在兼容性问题。
解决方案(无需第三方工具)
步骤1:修改Argo CD Server启动参数,禁用强制TLS
编辑Argo CD Server的Deployment配置,在spec.template.spec.containers[0].args中添加--insecure参数,让8080端口支持HTTP请求:
apiVersion: apps/v1 kind: Deployment metadata: name: argocd-server spec: template: spec: containers: - name: argocd-server args: - /usr/local/bin/argocd-server - --insecure # 新增这一行 # 保留其他原有参数
修改后应用配置,等待Pod重启完成。
步骤2:更新Ingress配置,添加健康检查规则
将Ingress替换为稳定的v1版本,添加GKE健康检查注解,指定健康路径:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: argocd-ingress-1 annotations: kubernetes.io/ingress.global-static-ip-name: argocd-static-ip networking.gke.io/managed-certificates: gcp-managed kubernetes.io/ingress.class: "gce" # 新增健康检查配置 cloud.google.com/health-check-path: /healthz cloud.google.com/health-check-port: "80" spec: defaultBackend: service: name: argocd-service port: number: 80
应用修改后的Ingress配置。
步骤3:临时关闭Cloudflare代理完成证书验证
登录Cloudflare控制台,将subdomain.env.domain.com的A记录切换为灰色云(仅DNS解析),确保域名直接解析到你绑定的GKE静态IP。
等待10-30分钟,执行kubectl describe managedcertificate gcp-managed -n argocd查看状态,当Certificate Status变为Active后,你可以根据需求重新开启Cloudflare橙色云代理。
步骤4:验证配置是否生效
证书签发完成后,访问https://subdomain.env.domain.com即可正常打开Argo CD控制台,健康检查状态在GCP控制台的负载均衡页面也会显示为健康。
内容的提问来源于stack exchange,提问作者johnny68
相关产品推荐
相关产品推荐

