将 eShopOnContainers 部署到 Azure

小窍门

此内容摘自电子书《为 Azure 架构云原生 .NET 应用程序》,可在 .NET 文档 查阅或下载免费的 PDF 离线阅读。

Azure 平台的云原生 .NET 应用电子书封面缩略图。

eShopOnContainers 应用程序可以部署到各种 Azure 平台。 建议的方法是将应用程序部署到 Azure Kubernetes 服务(AKS)。 Helm 是 Kubernetes 部署工具,可用于降低部署复杂性。 (可选)开发人员可以实施适用于 Kubernetes 的 Azure Dev Spaces 来简化其开发过程。

Azure Kubernetes 服务

若要在 AKS 中托管 eShop,第一步是创建 AKS 群集。 为此,可以使用 Azure 门户,该门户将引导你完成所需的步骤。 还可以从 Azure CLI 创建群集,并小心启用 Role-Based 访问控制(RBAC)和应用程序路由。 eShopOnContainers 的文档详细介绍了创建自己的 AKS 群集的步骤。 创建后,可以从 Kubernetes 仪表板访问和管理群集。

现在可以使用 Helm 将 eShop 应用程序部署到群集。

使用 Helm 在 Azure Kubernetes 服务中进行部署

Helm 是直接适用于 Kubernetes 的应用程序包管理器工具。 它有助于定义、安装和升级 Kubernetes 应用程序。 虽然可以使用自定义 CLI 脚本或简单的部署文件将简单应用部署到 AKS,但复杂的应用可以包含许多 Kubernetes 对象并从 Helm 中受益。

使用 Helm 时,应用程序包括基于文本的配置文件(称为 Helm 图表),以声明方式描述 Helm 包中的应用程序和配置。 图表使用标准 YAML 格式的文件来描述一组相关的 Kubernetes 资源。 它们与所描述的应用程序代码一起进行版本控制。 Helm 图表的范围从简单到复杂,具体取决于它们描述的安装要求。

Helm 由命令行客户端工具组成,该工具使用 helm 图表并将命令启动到名为 Tiller 的服务器组件。 Tiller 与 Kubernetes API 通信,以确保正确预配容器化工作负载。 Helm 由云原生计算基金会维护。

以下 yaml 文件提供 Helm 模板:

apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.app.svc.marketing }}
  labels:
    app: {{ template "marketing-api.name" . }}
    chart: {{ template "marketing-api.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app: {{ template "marketing-api.name" . }}
    release: {{ .Release.Name }}

请注意模板如何描述一组动态键/值对。 当模板被调用时,被大括号括住的值将从其他基于 YAML 的配置文件中提取。

你将在 /k8s/helm 文件夹目录中找到 eShopOnContainers helm 图表。 图 2-6 显示了如何将应用程序的不同组件组织到 helm 用来定义和管理部署的文件夹结构中。

eShopOnContainers helm 文件夹图 2-6。 eShopOnContainers helm 文件夹。

每个组件都使用命令 helm install 进行安装。 eShop 包含一个“全部部署”脚本,该脚本会遍历各个 helm 图表并安装组件。 结果是使用源代码管理中的应用程序进行版本控制的可重复过程,团队中的任何人都可以使用单行脚本命令部署到 AKS 群集。

注释

Helm 版本 3 正式消除了 Tiller 服务器组件的需求。 有关此增强功能的详细信息,请参阅 Helm 3 中为什么缺少 Tiller?

Azure 函数和逻辑应用程序(无服务器)

eShopOnContainers 示例包括对跟踪在线营销活动的支持。 Azure 函数用于跟踪给定市场活动 ID 的详细信息。 与其创建完整的微服务,单个 Azure 函数更加简单且足够。 Azure Functions 具有简单的生成和部署模型,尤其是在配置为在 Kubernetes 中运行时。 部署函数是使用 Azure 资源管理器 (ARM) 模板和 Azure CLI 编写脚本的。 此营销服务不直接面向客户,并且仅调用单个操作,使其成为 Azure Functions 的理想选择。 该函数需要最少的配置,包括数据库连接字符串数据和映像基 URI 设置。 在 Azure 门户中配置 Azure Functions。