Node.js “部署问题”;“快捷网关”;使用入口服务类型创建Google Kubernetes引擎

Node.js “部署问题”;“快捷网关”;使用入口服务类型创建Google Kubernetes引擎,node.js,express,kubernetes,kubernetes-ingress,Node.js,Express,Kubernetes,Kubernetes Ingress,我正在向GKE部署一个microservices nodejs express应用程序,我成功地部署了这些服务(一个作为静态IP@的入口服务,另一个作为不会暴露于Internet的NodePort服务) 现在,我正在尝试部署api网关,它是一个express gateway应用程序,我第一次将其作为负载平衡器服务进行部署,它正在工作,下面是我的服务代码: apiVersion: v1 kind: Service metadata: name: express-gateway-balancer

我正在向GKE部署一个microservices nodejs express应用程序,我成功地部署了这些服务(一个作为静态IP@的入口服务,另一个作为不会暴露于Internet的NodePort服务)

现在,我正在尝试部署api网关,它是一个express gateway应用程序,我第一次将其作为负载平衡器服务进行部署,它正在工作,下面是我的服务代码:

apiVersion: v1
kind: Service
metadata:
  name: express-gateway-balancer
spec:
  selector:
    app: express-gateway
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

现在我必须将trafic转换为HTTPS,以便能够调用API端点前端我的react前端应用程序,该应用程序使用HTTPS运行,因此我做了一项研究,方法是将API网关应用程序公开为入口,而不是负载平衡器

因此,我做了更改(与我的其他部署相同),并创建了一个静态IP@“网关IP”,通过入口将其公开:

这是我的service.yaml文件:

apiVersion: v1
kind: Service
metadata:
  name: express-gateway-service
spec:
  selector:
    app: express-gateway
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gateway-service-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "gateway-ip"
spec:
  backend:
    serviceName: express-gateway-service
    servicePort: 80
My Ingress.yaml文件:

apiVersion: v1
kind: Service
metadata:
  name: express-gateway-service
spec:
  selector:
    app: express-gateway
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gateway-service-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "gateway-ip"
spec:
  backend:
    serviceName: express-gateway-service
    servicePort: 80
这是我的部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: express-gateway
  labels:
    app: express-gateway
spec:
  selector:
    matchLabels:
      app: express-gateway
  replicas: 3
  template:
    metadata:
      labels:
        app: express-gateway
    spec:
      containers:
        - name:  express-gateway
          image: gcr.io/PROJECT_ID/apigatewayservice:v1
          ports:
            - name: gateway
              containerPort: 8080
            - name: admin
              containerPort: 9876
以下是我得到的错误截图:


有什么解决办法吗?谢谢

您是否有所有预定播客的默认端点?我是说“/”?Ingress内置健康检查准备就绪问题,检查“/”是否可访问。如果没有,它将宣布它不健康。
希望这有帮助。

嗨,我需要在入口端或快速网关端实现它?通过NodePort公开的后端pod需要有一个端点“/”。您说过您正在使用nodejs,所以如果您正在使用express或任何其他restapi库,那么在代码中保留一个默认端点-“/”。入口将对此进行访问,以验证后端服务是否正常。所以,您不需要在入口端进行此包含。在GCP中很容易跟踪,如果你点击不健康的后端服务,它会带你去那里。