You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP Kubernetes中cert-manager HTTP-01校验404错误求助

解决GCP Kubernetes中cert-manager HTTP-01挑战404问题

核心排查与修复步骤

1. 检查自动生成的挑战Ingress状态

cert-manager会为HTTP-01挑战创建临时Ingress,先确认其基本运行状态:

  • 列出backend命名空间下的Ingress,定位cm-acme-http-solver-开头的条目:
    kubectl get ingress -n backend
    
    检查ADDRESS列是否有分配GCP负载均衡IP,若为空则说明Ingress未成功创建,需排查GCP负载均衡配额或cert-manager权限。
  • 查看该Ingress的详细配置,验证路径规则与后端关联:
    kubectl describe ingress <自动Ingress名称> -n backend
    
    确认Rules包含/.well-known/acme-challenge/*的路径,Backend关联到cm-acme-http-solver-开头的Service,同时检查对应Pod状态:
    kubectl get pods -n backend | grep cm-acme-http-solver
    

2. 确认域名DNS解析指向正确IP

HTTP-01挑战要求域名必须解析到挑战Ingress的IP:

  • 用dig验证域名解析结果:
    dig api.lumiwealth.com
    
    对比返回的IP与挑战Ingress的ADDRESS,若不一致,需在域名服务商处将api.lumiwealth.com的A记录修改为该Ingress的IP(GCP Ingress创建后会自动分配负载均衡IP,需手动更新DNS)。

3. 检查GCP防火墙规则

GCP Ingress-GCE需要开放80端口的入站流量:

  • 登录GCP控制台,进入VPC网络 > 防火墙规则,查找k8s-fw-开头的规则,确认其允许tcp:80端口的入站流量,目标为集群节点标签(如gke-<集群名>-<节点池名>-*),来源为0.0.0.0/0。
  • 若缺失该规则,手动创建:
    • 名称:allow-http-acme-challenge
    • 目标标签:通过kubectl get nodes --show-labels获取集群节点标签
    • 协议端口:tcp:80
    • 来源IP范围:0.0.0.0/0
    • 行动:允许

4. 修正ClusterIssuer的Ingress类配置

GKE 1.19+版本推荐使用ingressClassName字段,更新ClusterIssuer配置:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata: 
  name: letsencrypt-prod
spec: 
  acme: 
    email: "rob@lumiwealth.com"
    privateKeySecretRef: 
      name: letsencrypt-prod
    server: "https://acme-v02.api.letsencrypt.org/directory"
    solvers:
      - http01:
          ingress:
            ingressClassName: ingress-gce  # 替换原class字段

应用更新:

kubectl apply -f cluster-issuer.yaml

5. 验证cert-manager权限

确保cert-manager服务账号有权限在backend命名空间创建资源:

kubectl auth can-i create ingress -n backend --as=system:serviceaccount:cert-manager:cert-manager

若返回no,需检查cert-manager安装时的RBAC配置,确保包含backend命名空间的权限。

重置挑战流程

修正配置后,删除现有证书触发重新挑战:

kubectl delete certificate test-certificate -n backend
kubectl apply -f test-certificate.yaml

查看cert-manager日志跟踪挑战状态:

kubectl logs -n cert-manager -l app=cert-manager -f

内容的提问来源于stack exchange,提问作者Rob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:55:13