如何在 Docker 桌面/Minikube 上公开 Web 应用程序
How to expose web application on Docker Desktop / Minikube
我使用 Docker Desktop with Kubernetes 部署了包含 3 个 pods 的简单 .NET Core 应用程序。
我的目标是在我的主机浏览器中公开可用的 Web 应用程序:
Fronend pod 中的我的 React 应用程序指向 appsettings.js 文件中的后端集群 IP 服务以从后端获取数据。当我在 Frontend pod 中时,这正常工作,fetch 工作。
使用 NodePort 服务公开 Fronend Pod,可以访问应用程序,但我的问题是对后端 pod 的请求失败 - 请求指向后端 ClusterIP 服务,我的主机无法解析它们。
如何在 Docker 桌面或 Minikube 等单节点环境中完成?
如果我想在我的前端应用程序中使用多个不同的后端 api,它也应该可以工作。
感谢帮助!
在您的情况下,前端和后端都需要可以从集群外部访问。所以后端服务的类型必须是 NodePort
或 LoadBalancer
.
原因是前端不与后端服务交互(在集群中)。浏览器仅使用 Frontend pod 来下载您的 React 应用程序。然后浏览器 运行s 你的 React 应用程序。此应用程序 - 在您的集群 运行 中不存在 - 必须使用后端服务。这就是后端服务必须可从外部访问的原因。
对我来说,最简单的方法是将 minikube 与 Ingress Controller 一起使用 -
https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
我使用 Docker Desktop with Kubernetes 部署了包含 3 个 pods 的简单 .NET Core 应用程序。 我的目标是在我的主机浏览器中公开可用的 Web 应用程序:
Fronend pod 中的我的 React 应用程序指向 appsettings.js 文件中的后端集群 IP 服务以从后端获取数据。当我在 Frontend pod 中时,这正常工作,fetch 工作。
使用 NodePort 服务公开 Fronend Pod,可以访问应用程序,但我的问题是对后端 pod 的请求失败 - 请求指向后端 ClusterIP 服务,我的主机无法解析它们。
如何在 Docker 桌面或 Minikube 等单节点环境中完成? 如果我想在我的前端应用程序中使用多个不同的后端 api,它也应该可以工作。
感谢帮助!
在您的情况下,前端和后端都需要可以从集群外部访问。所以后端服务的类型必须是 NodePort
或 LoadBalancer
.
原因是前端不与后端服务交互(在集群中)。浏览器仅使用 Frontend pod 来下载您的 React 应用程序。然后浏览器 运行s 你的 React 应用程序。此应用程序 - 在您的集群 运行 中不存在 - 必须使用后端服务。这就是后端服务必须可从外部访问的原因。
对我来说,最简单的方法是将 minikube 与 Ingress Controller 一起使用 - https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/