【问题标题】:How to Deploy Visual Studio 2019 Solution to Azure AKS如何将 Visual Studio 2019 解决方案部署到 Azure AKS
【发布时间】:2020-05-17 16:43:14
【问题描述】:

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

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

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

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

我为我的第一个 API 服务创建了一个 azure 开发空间,然后运行 ​​AZDS Prep,然后运行 ​​AZDS UP,它运行了所有 29 个步骤并成功构建了容器映像 其次是 消息正在等待容器 ...
其次是 服务 '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 项目且依赖于第 3 方图像/容器的解决方案。

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

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

【问题讨论】:

    标签: azure-devops continuous-integration asp.net-core-webapi azure-aks visual-studio-2019


    【解决方案1】:

    您不需要一次将所有内容都部署到集群中。使用 DevSpaces,根空间将包含所有微服务的稳定版本。当你想处理给定的服务时,你可以attach your local dev environment to a child space

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

    1. 设置 Azure DevOps 管道,该管道将构建解决方案中的所有项目并将其推送到 Azure 容器注册表。您将需要多个buildAndPush tasks,一个用于您的解决方案生成的每个容器。给你的容器镜像unique tags(我喜欢将构建 ID 与提交哈希连接)。
    2. 使用kompose to translate your docker-compose.yml 来定义kubernetes 资源定义yaml 文件。您可能需要微调输出,为图像标签添加一些模板等。将输出添加到您的存储库中。
    3. 使用 kubectl apply task(s) 扩展步骤 1 中的 AzDO 管道,将 k8s yaml 文件应用到 AKS 群集。
    4. 如果您只想构建和部署在给定提交上发生更改的微服务,则需要将 k8s yaml 文件拆分为每个项目和use path filters on your pipeline triggers

    我会将 EventStore 服务与我的代码构建和部署管道分开配置 - 通常像 EventStore 这样的共享服务将在任何依赖服务之前和之后运行。如果需要,您可以通过另一个管道自动执行此操作。有some guides available for deploying EventStore to AKS - 请注意,目前是it is not a recommended configuration

    【讨论】:

    • 哇...这正是我要找的,点击@bdohall,再次感谢!我想我理解你推荐的步骤。顺便说一句,Kompose 方法效果很好。我还注意到 EventStore 到 AKS 指南不是推荐的方法。我的服务中的所有其他共享服务依赖项都有可接受的 SaaS 产品(Confluent Cloud Kafka、Elastic Cloud、Azure Cache for Redis 等)。目前唯一的例外是 EventStore,但他们正在开发新的云产品,所以希望很快就会推出。
    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    相关资源
    最近更新 更多