我目前正在开发一个设计为微服务 API 的 Node.js 项目。它由在我的计算机上本地运行的多个 Docker 容器组成。该项目的主要目的是使用物联网控制水培塔,采用各种传感器和 ESP32 微控制器。微服务使用 Skaffold 部署并通过 Kubernetes 进行管理。目前,我有四个运行中的微服务:身份验证服务、设备服务(处理每个设备的详细信息,例如单个水培塔)、邮件服务和使用 Next.js 和 React 构建的客户端界面。所有微服务都使用 Express,我使用 Ingress NGINX 进行服务间通信。
当我将所有 IoT 设备连接到同一网络并向本地 PC 发出 API 请求时,测试设置时出现了问题。我已将 /etc/hosts 文件配置为将“greenhive.io”(我创建的域)重定向到 127.0.0.1。我知道从另一台设备访问我的 PC 的 IP 允许通过端口 80 与我的本地设置进行通信。但是,当使用来自其他设备的 IP 地址时,我遇到“找不到 NGINX”错误。这表明问题出在我的 Ingress NGINX 部署中。这是我的 Ingress NGINX 的 YAML 文件:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-srv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
rules:
- host: 'greenhive.io'
http:
paths:
- path: /api/users/?(.*)
pathType: ImplementationSpecific
backend:
service:
name: auth-srv
port:
number: 3000
- path: /api/devices/?(.*)
pathType: ImplementationSpecific
backend:
service:
name: devices-srv
port:
number: 3000
- path: /api/logs/?(.*)
pathType: ImplementationSpecific
backend:
service:
name: logs-srv
port:
number: 3000
- path: /api/readings/?(.*)
pathType: ImplementationSpecific
backend:
service:
name: readings-srv
port:
number: 3000
- path: /?(.*)
pathType: ImplementationSpecific
backend:
service:
name: client-srv
port:
number: 3000
我尝试将 hosts 文件上的 IP 更改为本地网络为我的 PC 提供的本地 IP。此外,我还尝试将我的 PC 的端口 80 转发到入口 pod 的端口 80。