【问题标题】:How to setup communication between ASP.NET CORE Web and WebAPI containers for AKS and Helm如何为 AKS 和 Helm 设置 ASP.NET CORE Web 和 WebAPI 容器之间的通信
【发布时间】:2021-03-23 14:19:51
【问题描述】:

我有两个项目,一个在一个容器中的 ASP.NET Core MVC 中,另一个在一个单独的容器中的 ASP.NET Core WebAPI 中,两者都使用 Azure Kubernetes Service 和 Helm。

MVC 项目调用 WebAPI 项目。它通过使用localhost 在本地工作。

我的问题是如何设置它以使其在 AKS 上运行并接受公共请求。

【问题讨论】:

  • 这里遗漏了一些细节来给你一个准确的答案。 AKS 上的 2 个项目是如何安装的?它们是否在单独的 pod 中运行?如果是这种情况,您将需要一个允许它们相互访问的 k8s 服务对象,并通过 k8s dns 而不是 localhost 路由请求。
  • 感谢您的 cmets。我只需要一个展示使用 AKS 的最佳实践的 Hello World 示例。
  • 在本地使用“localhost”不是必须的。因为我是 AKS 和 HELM 的新手。我愿意接受最佳做法。
  • 这不是 AKS 或 Helm 问题,它与 kubernetes 在集群内路由通信的方式有关。您可以按照本指南了解更多关于 Kubernetes 是如何实现这些东西的 - kubernetes.io/docs/tasks/access-application-cluster/…
  • 感谢您的链接。它让我想起了这个链接。如何将它与可以在本地和 AKS 上运行的 ASP.NET CORE 应用程序一起使用,如我的 OP 中所述。

标签: azure asp.net-core-mvc asp.net-core-webapi kubernetes-helm azure-aks


【解决方案1】:

您可以阅读此document,它向您展示了 Kubernetes 中的网络,该网络在同一个 pod 中的容器之间进行通信,或者在同一个节点但不同的 pod 中,或者在不同的 pod 和不同的节点中。并且 Kubernetes 通常使用每个部署的服务在 pod 之间进行通信。

实现起来很简单。您只需为您的应用程序创建两个映像并使用这些映像来创建部署。确保每个部署的服务是什么。在您的代码中,当您想连接到另一个部署的 pod 时,您可以直接将它与部署的服务连接。

这里我给你看一个简单的计划:

deployment: frontend -> ASP.NET Core MVC, service: frontend-service
deployment: backend -> ASP.NET Core WebAPI, service: backend-service

在前端容器内,可以这样连接后端容器,我只是用shell命令做例子:

curl http://backend-service

这意味着您只需要将您期望的容器与其服务连接起来。

Helm 只需使用chart 为您管理所有事情。

【讨论】:

  • 感谢您的 cmets 和链接,它们很有帮助。但我仍然无法在没有代码的情况下将它们应用于 ASP.NET Core 应用程序。我可能需要谷歌它。
  • @Pingpong 那么你还在纠结什么?
  • 我需要先正确阅读。但首先,如何将这些应用到 ASP.NET CORE 以从另一个项目调用一个项目,并在本地和 AKS 上运行它。问题之一是如何以及在何处为两个项目定义 url。
  • 谢谢。我需要以编程方式连接到不同的容器,使用curl http://backend-service 安装。但有趣的是,如果我没有误解,我可以登录到容器并尝试一下。但是如何登录容器,我得自己弄清楚。
  • @Pingpong 如果是 Linux 容器,可以使用命令kubectl exec -it podName -- bash。你也可以在你的代码里面连接,不仅仅是curl命令,这只是一个例子。
猜你喜欢
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 2020-07-04
  • 2018-02-18
  • 2020-04-12
  • 1970-01-01
相关资源
最近更新 更多