Node.js “部署问题”;“快捷网关”;使用入口服务类型创建Google Kubernetes引擎
我正在向GKE部署一个microservices nodejs express应用程序,我成功地部署了这些服务(一个作为静态IP@的入口服务,另一个作为不会暴露于Internet的NodePort服务) 现在,我正在尝试部署api网关,它是一个express gateway应用程序,我第一次将其作为负载平衡器服务进行部署,它正在工作,下面是我的服务代码: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
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中很容易跟踪,如果你点击不健康的后端服务,它会带你去那里。