将 eShopOnContainers 部署到 Azure
可以将 eShopOnContainers 应用程序部署到各种 Azure 平台。 推荐的方法是将应用程序部署到 Azure Kubernetes 服务 (AKS)。 Helm 是一种 Kubernetes 部署工具,可用于简化部署。 开发人员可根据需要实现 Azure Dev Spaces for Kubernetes 来简化开发过程。
Azure Kubernetes 服务
若要在 AKS 中托管 eShop,首先是创建一个 AKS 群集。 为此,你可使用 Azure 门户,它将指导你完成所需的步骤。 你还可从 Azure CLI 创建群集,请注意启用基于角色的访问控制 (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 用于定义和管理部署的文件夹结构中。
图 2-6。 eShopOnContainers helm 文件夹。
每个单独的组件都是使用 helm install
命令安装的。 eShop 包含一个“全部部署”脚本,该脚本循环遍历组件,并使用其各自的 helm 图表安装这些组件。 这会得到一个可重复的过程,它与应用程序一起在源代码管理中进行版本控制,团队中的任何人都可使用单行脚本命令将它部署到 AKS 群集。
请注意,Helm 3 官方消除了对 Tiller 服务器组件的需求。 有关这项增强功能的详细信息,可查看此处。
Azure 函数和逻辑应用(无服务器)
eShopOnContainers 示例包括对跟踪在线市场营销活动的支持。 Azure 函数用于跟踪给定活动 ID 的市场营销活动详细信息。 不用创建完整的微服务,单个 Azure 函数更简单,已经能够满足需求。 Azure 函数具有一个简单的生成和部署模型,尤其是在配置为在 Kubernetes 中运行时。 部署函数使用 Azure 资源管理器 (ARM) 模板和 Azure CLI 来编写脚本。 该活动服务并非面向客户,它调用单个操作,使其成为 Azure 函数的理想候选项。 函数需要最少的配置,包括数据库连接字符串数据和映像基 URI 设置。 在 Azure 门户中配置 Azure 函数。