繁体   English   中英

如何将 Visual Studio 2019 解决方案部署到 Azure AKS

[英]How to Deploy Visual Studio 2019 Solution to Azure AKS

我开发了一个基于 DDD 的建模工具,该工具将 .Net Core 3.x Web API 服务作为单个 VS 2019 解决方案中的单独项目进行代码生成。 我的建模工具使我能够快速捕获业务领域,并从那里生成满足每个业务领域所需的尽可能多的领域服务。

我创建了一个测试域,它创建了三个 .Net Core Web API 服务(微服务),我一直在 Docker 内为 Windows 部署和调试,效果很好。 为此,我在生成的 VS 2019 解决方案文件夹中添加了一个 docker-compose 文件,因此我可以通过选择 Docker Compose 调试选项来运行和调试所有服务。 奇迹般有效!

现在我想将我的整个解决方案作为一个整体部署到 Azure AKS 中。 我创建了一个 AKS 实例并启用了 Azure Dev Spaces。

在 VS 2019 中,我为每个 Web API 项目添加了对 Kube.nettes 的容器支持,这在每个 Web API 项目文件夹中创建了一个图表文件夹。 注意:我没有编辑图表文件夹中的任何文件。

我为我的第一个 API 服务创建了一个 azure 开发空间,然后运行 AZDS Prep,然后运行 AZDS UP,它运行了所有 29 个步骤并成功构建了容器镜像,随后显示消息 Waiting for container...
其次是服务“api”端口 80 (http) 可通过端口转发在http://localhost:58512 获得
按 Ctrl+C 分离

当我的服务尝试连接到 EventStore 时出现未处理的异常。 这非常有意义,因为我没有将 EventStore 添加到我的 AKS 集群。

因此,似乎我必须在每个 API 服务上运行此 AZDS Prep 及更高版本,这似乎是任务密集型的,因为一次执行此步骤一个服务可能适用于这个简单的示例,但当我有更多 web 时将不实用api 个项目(微服务)。

我觉得我应该利用 Azure Dev Ops CI/CD 来处理每个微服务的所有这些,但我找不到任何教程来说明如何从 VS2019 解决方案的角度进行设置。

我发现的所有示例似乎都基于部署到 AKS 的单个 Web 或 Web API 项目,而不是基于具有多个 Web API 项目并且依赖于第三方图像/容器的解决方案。

我想要一个教程,向我展示如何将我整个 Repo 的服务价值包括任何依赖项(例如我的 EventStore)部署到 AKS 中,这不需要我成为 Helm 专家,也许一些可以利用 docker compose 的工具文件。

如果您知道一些可以告诉我如何设置它的教程,请告诉我。

您不需要一次将所有内容部署到您的集群。 使用 DevSpaces,根空间将包含所有微服务的稳定版本。 当您想要处理给定服务时,您可以将本地开发环境附加到子空间

自动发布到根开发空间看起来像这样:

  1. 设置一个 Azure DevOps 管道,它将构建解决方案中的所有项目并将其推送到 Azure Container Registry。 您将需要多个buildAndPush任务,一个用于您的解决方案生成的每个容器。 为您的容器镜像提供独特的标签(我喜欢将构建 ID 与提交哈希连接在一起)。
  2. 使用kompose 将您的 docker-compose.yml 转换为 kube.netes 资源定义 yaml 文件。 您可能需要微调 output,为图像标签添加一些模板等。将 output 添加到您的 repo。
  3. 使用kubectl apply task(s)扩展步骤 1 中的 AzDO 管道,将 k8s yaml 文件应用到您的 AKS 集群。
  4. 如果您只想构建和部署在给定提交时发生更改的微服务,则需要将 k8s yaml 文件拆分为每个项目,并在管道触发器上使用路径过滤器

我会将 EventStore 服务与我的代码构建和部署管道分开提供——通常像 EventStore 这样的共享服务将在任何依赖服务之前和之后运行。 如果需要,您可以通过另一个管道自动执行此操作。 一些指南可用于将 EventStore 部署到 AKS - 请注意,目前,这不是推荐的配置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM