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

GKE中FastAPI配置Google托管HTTPS成功但返回502错误求助

GKE托管证书配置后HTTPS访问返回502错误的解决方法

问题核心原因

你的502错误主要来自Ingress配置的两处冲突,以及潜在的容器端口监听问题:

  1. 托管证书与手动TLS Secret冲突
    使用Google托管证书时,无需在spec.tls中手动指定secretName——GKE会自动为托管证书创建并维护对应的Secret。手动添加的secretName: tls-secret-stg会导致Ingress无法正确加载托管证书的配置,引发后端转发失败。

  2. Ingress Class注释的转义引号无效
    注释kubernetes.io/ingress.class: \"gce\"中的转义引号是错误写法,GKE无法正确识别Ingress控制器类型,导致Ingress配置异常。

  3. 容器内服务端口监听验证
    需要确认FastAPI服务确实在容器的80端口监听,而非默认的8000端口。若启动命令未指定--port 80,容器内服务实际运行端口与配置不匹配,会导致Service无法转发流量。

修正后的配置文件

修正后的managed-cert-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: managed-cert-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: global-noctis-stg
    networking.gke.io/managed-certificates: managed-cert-stg
    kubernetes.io/ingress.class: gce
spec:
  rules:
  - host: stg.noctis.test-domain.com
    http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
              name: noctis-stg
              port:
                number: 80

容器端口监听验证(Dockerfile示例)

确保FastAPI启动命令指定80端口:

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

后续验证步骤

  1. 应用修正后的Ingress配置:
    kubectl apply -f managed-cert-ingress.yaml
    
  2. 检查托管证书状态,确认已激活:
    kubectl describe managedcertificate managed-cert-stg
    
    查看Status.CertificateStatus是否为ACTIVE。
  3. 检查Ingress后端健康状态:
    kubectl describe ingress managed-cert-ingress
    
    确认Backend部分显示HEALTHY。
  4. 测试集群内服务连通性:
    kubectl run -it --rm test-pod --image=curlimages/curl -- curl http://noctis-stg:80
    
    若返回FastAPI默认页面或API响应,说明Service到Pod的连通正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:28:09