如何将 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 项目添加了对 Kubernettes 的容器支持,这在每个 Web API 项目文件夹中创建了一个图表文件夹。注意:我没有编辑图表文件夹中的任何文件。
我为我的第一个 API 服务创建了一个 azure dev space,然后 运行 AZDS Prep 然后 AZDS UP 运行 通过所有 29 个步骤并成功构建容器图像
其次是
等待容器的消息...
其次是
服务 'api' 端口 80 (http) 可通过 http://localhost:58512.
的端口转发获得
按 Ctrl+C 分离
当我的服务尝试连接到 EventStore 时出现未处理的异常。这非常有意义,因为我没有将 EventStore 添加到我的 AKS 集群。
所以我似乎必须 运行 每个 API 服务上的 AZDS Prep 和更高版本,这似乎是任务密集型的,因为一次执行此步骤一个服务可能适用于这个简单的例如,但是当我有更多的网络 api 项目(微服务)时就不实用了。
我觉得我应该利用 Azure Dev Ops CI/CD 来处理每个微服务的所有这些,但我找不到任何教程来说明如何从 VS2019 解决方案的角度进行设置。
我发现的所有示例似乎都基于部署到 AKS 的单个 Web 或 Web API 项目,而不是基于具有多个 Web API 项目且依赖于第 3 方 images/containers.
我想要一个教程,向我展示如何将我整个 Repo 的服务价值包括任何依赖项(例如我的 EventStore)部署到 AKS 中,这不需要我成为 Helm 专家,也许是一些工具可以利用 docker 撰写文件。
如果您知道一些可以告诉我如何设置它的教程,请告诉我。
您不需要一次将所有内容部署到您的集群。使用 DevSpaces,根 space 将包含所有微服务的稳定版本。当您想在给定服务上工作时,您会 attach your local dev environment to a child space。
自动发布到 root dev space 看起来像这样:
- 设置 Azure DevOps 管道,该管道将构建解决方案中的所有项目并将其推送到 Azure 容器注册表。您将需要多个
buildAndPush
tasks, one for each container your solution generates. Give your container images unique tags(我喜欢构建 ID 与提交哈希连接)。
- 使用 kompose to translate your docker-compose.yml 到 kubernetes 资源定义 yaml 文件。您可能需要微调输出,为图像标签添加一些模板等。将输出添加到您的存储库。
- 使用 kubectl apply task(s).
扩展步骤 1 中的 AzDO 管道以将 k8s yaml 文件应用到您的 AKS 集群
- 如果您只想构建和部署在给定提交时发生更改的微服务,则需要将您的 k8s yaml 文件拆分为每个项目并且 use path filters on your pipeline triggers
我会从我的代码构建和部署管道中单独提供 EventStore 服务——通常像 EventStore 这样的共享服务将在任何依赖服务之前和之后运行。如果需要,您可以通过另一个管道自动执行此操作。有some guides available for deploying EventStore to AKS - please note that, at present, it is not a recommended configuration.
我开发了一个基于 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 项目添加了对 Kubernettes 的容器支持,这在每个 Web API 项目文件夹中创建了一个图表文件夹。注意:我没有编辑图表文件夹中的任何文件。
我为我的第一个 API 服务创建了一个 azure dev space,然后 运行 AZDS Prep 然后 AZDS UP 运行 通过所有 29 个步骤并成功构建容器图像
其次是
等待容器的消息...
其次是
服务 'api' 端口 80 (http) 可通过 http://localhost:58512.
的端口转发获得
按 Ctrl+C 分离
当我的服务尝试连接到 EventStore 时出现未处理的异常。这非常有意义,因为我没有将 EventStore 添加到我的 AKS 集群。
所以我似乎必须 运行 每个 API 服务上的 AZDS Prep 和更高版本,这似乎是任务密集型的,因为一次执行此步骤一个服务可能适用于这个简单的例如,但是当我有更多的网络 api 项目(微服务)时就不实用了。
我觉得我应该利用 Azure Dev Ops CI/CD 来处理每个微服务的所有这些,但我找不到任何教程来说明如何从 VS2019 解决方案的角度进行设置。
我发现的所有示例似乎都基于部署到 AKS 的单个 Web 或 Web API 项目,而不是基于具有多个 Web API 项目且依赖于第 3 方 images/containers.
我想要一个教程,向我展示如何将我整个 Repo 的服务价值包括任何依赖项(例如我的 EventStore)部署到 AKS 中,这不需要我成为 Helm 专家,也许是一些工具可以利用 docker 撰写文件。
如果您知道一些可以告诉我如何设置它的教程,请告诉我。
您不需要一次将所有内容部署到您的集群。使用 DevSpaces,根 space 将包含所有微服务的稳定版本。当您想在给定服务上工作时,您会 attach your local dev environment to a child space。
自动发布到 root dev space 看起来像这样:
- 设置 Azure DevOps 管道,该管道将构建解决方案中的所有项目并将其推送到 Azure 容器注册表。您将需要多个
buildAndPush
tasks, one for each container your solution generates. Give your container images unique tags(我喜欢构建 ID 与提交哈希连接)。 - 使用 kompose to translate your docker-compose.yml 到 kubernetes 资源定义 yaml 文件。您可能需要微调输出,为图像标签添加一些模板等。将输出添加到您的存储库。
- 使用 kubectl apply task(s). 扩展步骤 1 中的 AzDO 管道以将 k8s yaml 文件应用到您的 AKS 集群
- 如果您只想构建和部署在给定提交时发生更改的微服务,则需要将您的 k8s yaml 文件拆分为每个项目并且 use path filters on your pipeline triggers
我会从我的代码构建和部署管道中单独提供 EventStore 服务——通常像 EventStore 这样的共享服务将在任何依赖服务之前和之后运行。如果需要,您可以通过另一个管道自动执行此操作。有some guides available for deploying EventStore to AKS - please note that, at present, it is not a recommended configuration.