kubernetes 成功在GKE FastAPI服务中设置HTTPS但返回502

g52tjvyc  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(169)

我有一个GKE集群与FastAPI服务,我试图安装证书与“谷歌托管证书”,所以我可以通过https访问它.证书安装按预期工作,我可以使用https访问它,但当我尝试访问我的API时遇到问题,它返回502并显示以下错误:
服务器错误服务器遇到临时错误,无法完成您的请求。请在30秒后重试。
我已经等了很长时间,但它只是没有固定,我的东西有一些错误的路由,但我已经尝试了很多事情,仍然困惑,为什么它仍然没有工作。我也已经尝试了从谷歌Using Google-managed SSL certificates提供的文档,但仍然得到502。
下面是我所有与这个案例相关的yaml文件:
deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: noctis-stg
spec:
  replicas: 1
  selector:
    matchLabels:
      app: noctis-stg
  template:
    metadata:
      labels:
        app: noctis-stg
    spec:
      containers:
      - name: noctis-stg
        image: asia-southeast1-docker.pkg.dev/#####/######/#######:#####
        ports:
        - containerPort: 80
        volumeMounts:
        - name: noctis-stg-env
          mountPath: /code/.env
          subPath: .env
      volumes:
      - name: noctis-stg-env
        configMap:
          name: noctis-stg-env

字符串
service.yaml

apiVersion: v1
kind: Service
metadata:
  name: noctis-stg
spec:
  type: NodePort
  selector:
    app: noctis-stg
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80


managed-cert.yaml

apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: managed-cert-stg
spec:
  domains:
    - stg.noctis.test-domain.com


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:
  tls:
  - secretName: tls-secret-stg
  rules:
  - host: stg.noctis.test-domain.com
    http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
              name: noctis-stg
              port:
                number: 80


如果有人能帮我解决这个问题,那就太好了。

dz6r00yl

dz6r00yl1#

此错误主要发生在Ingress后端为unhealthyfailed to pick backend时,您可以在日志中找到,下面的故障排除步骤可以帮助您解决问题:
1.创建GKE入口时,将服务类型更改为NodePort
2.检查防火墙规则是否配置正确。
对于入口遵循此documentation,如果您使用外部入口遵循外部入口产生HTTP 502错误.
如果您找到错误backend_connection_closed_before_data_sent_to_client的日志,
您必须配置后端使用的Web服务器软件,使其保持活动超时时间超过600秒,以防止后端过早关闭连接。请参阅描述外部HTTP(S)负载平衡有两种不同类型的超时的文档,以及关于日志中的消息的其他文档。
有关502错误的更多故障排除步骤,请参阅此官方文档。

相关问题