你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Stack Edge Pro GPU 的启用了 Azure Arc 的 Kubernetes 群集上部署具有 Redis 的 PHP Guestbook 无状态应用程序

适用于:对于 Pro GPU SKU 是必需的Azure Stack Edge Pro - GPU对于 Pro 2 SKU 是必需的Azure Stack Edge Pro 2对于 Pro R SKU 是必需的Azure Stack Edge Pro R对于 Mini R SKU 是必需的Azure Stack Edge Mini R

本文介绍并展示如何使用 Kubernetes 和 Azure Arc 生成和部署简单的多层 Web 应用。本示例包括以下组成部分:

  • 一个单实例 Redis 主机,用于存储 guestbook 条目
  • 多个复制的 Redis 实例,用于提供读取服务
  • 多个 Web 前端实例

部署是在 Azure Stack Edge Pro 设备上启用了 Azure Arc 的 Kubernetes 群集上使用 GitOps 完成的。

此过程适用于已阅读 Azure Stack Edge Pro 设备上的 Kubernetes 工作负载一文且熟悉什么是已启用 Azure Arc 的 Kubernetes(预览版)中的概念的用户。

注意

本文包含对术语“从属”的引用,这是 Microsoft 不再使用的术语。 在从软件中删除该术语后,我们会将其从本文中删除。

先决条件

在部署无状态应用程序之前,请确保设备和将用于访问该设备的客户端上已满足以下先决条件:

对于设备

  1. 你有单节点 Azure Stack Edge Pro 设备的登录凭据。

    1. 设备已激活。 请参阅激活设备
    2. 已通过 Azure 门户配置了设备的计算角色,并且设备具有 Kubernetes 群集。 请参阅配置计算
  2. 你已在设备上的现有 Kubernetes 群集上启用了 Azure Arc,并在 Azure 门户中具有相应的 Azure Arc 资源。 有关详细步骤,请参阅在 Azure Stack Edge Pro 设备上启用 Azure Arc

对于访问设备的客户端

  1. 你有一个将用于访问 Azure Stack Edge Pro 设备的 Windows 客户端系统。

    • 客户端运行 Windows PowerShell 5.0 或更高版本。 若要下载最新版 Windows PowerShell,请转到安装 Windows PowerShell

    • 也可使用任何其他客户端,只要安装了受支持的操作系统即可。 本文介绍使用 Windows 客户端时的过程。

  2. 你已完成在 Azure Stack Edge Pro 设备上访问 Kubernetes 群集中所述的过程。 你已:

    • 在客户端上安装 kubectl

    • 确保 kubectl 客户端版本与 Azure Stack Edge Pro 设备上运行的 Kubernetes 主版本相差不超过一个版本。

      • 使用 kubectl version 检查在客户端上运行的 kubectl 的版本。 记下完整版本。
      • 在 Azure Stack Edge Pro 设备的本地 UI 中,转到“概述”,并记下 Kubernetes 软件编号。
      • 从支持的 Kubernetes 版本中提供的映射中验证这两个版本的兼容性。
  3. 你有一个可用于运行 Azure Arc 部署的 GitOps 配置。 在本示例中,你将使用以下 yaml 文件在 Azure Stack Edge Pro 设备上进行部署。

    • frontend-deployment.yaml
    • frontend-service.yaml
    • redis-master-deployment.yaml
    • redis-master-service.yaml
    • redis-slave-deployment.yaml
    • redis-slave-service.yaml

部署配置

按照以下步骤配置 Azure Arc 资源,以通过 Azure 门户部署 GitOps 配置:

  1. 在 Azure 门户中,转到在设备上的 Kubernetes 群集上启用 Azure Arc 时创建的 Azure Arc 资源。

    转到 Azure Arc 资源

  2. 转到“配置”并选择“+ 添加配置”

    屏幕截图显示启用了 Azure Arc 的 Kubernetes 群集,并且选择了“添加配置”。

  3. 指定 Flux 版本 1 扩展

  4. 在“添加 GitOps 配置”中,为字段输入适当的值,然后选择“添加”

    参数 说明
    配置名称 配置资源的名称。
    运算符实例名称 用于标识特定配置的运算符的实例名称。 名称是一个长度不超过 253 个字符的字符串,只能包含小写形式、字母数字字符、连字符和句点。
    运算符命名空间 设置为 demotestguestbook 以与部署 yaml 中指定的命名空间一致。
    字段定义安装运算符的命名空间。 名称是一个长度不超过 253 个字符的字符串,只能包含小写形式、字母数字字符、连字符和句点。
    存储库 URL
    Git 存储库的路径,采用 http://github.com/username/repogit://github.com/username/repo 格式,是 GitOps 配置所在的位置。
    运算符范围 选择“命名空间”
    此参数定义运算符的安装范围。 选择“命名空间”,在部署 yaml 文件中指定的命名空间中安装运算符。
    运算符类型 保留默认值。
    此参数指定运算符的类型,默认设置为 flux。
    运算符参数 将其留空。
    此参数包含要传递给 flux 运算符的参数。
    Helm 将此复选框留为未选中状态。
    如果你将会执行基于图表的部署,请启用此选项。

    添加配置

  5. 配置部署开始,“运算符状态”显示为“挂起”

    屏幕截图显示启用了 Azure Arc 的 Kubernetes 群集在刷新时处于挂起状态。

  6. 部署需要几分钟时间。 部署完成后,“运算符状态”显示为“已安装”

    屏幕截图显示处于“已安装”状态的启用了 Azure Arc 的 Kubernetes 群集。

验证部署

通过 GitOps 配置进行部署时,会创建一个 demotestguestbook 命名空间,该命名空间在位于 Git 存储库中的部署 yaml 文件中定义。

  1. 应用 GitOps 配置后,连接到设备的 PowerShell 接口

  2. 运行以下命令以列出与部署相对应的 demotestguestbook 命名空间中运行的 Pod。

    kubectl get pods -n <your-namespace>

    下面是一个示例输出。

    [10.128.44.240]: PS>kubectl get pods -n demotestguestbook
    NAME                            READY   STATUS    RESTARTS   AGE
    aseoperator1-5569658644-cqtb5   1/1     Running   0          91m
    frontend-6cb7f8bd65-4xb4f       1/1     Running   0          91m
    frontend-6cb7f8bd65-q9cxj       1/1     Running   0          91m
    frontend-6cb7f8bd65-xpzs6       1/1     Running   0          91m
    memcached-86bdf9f56b-5l2fq      1/1     Running   0          91m
    redis-master-7db7f6579f-2z29w   1/1     Running   0          91m
    redis-slave-7664787fbc-lgr2n    1/1     Running   0          91m
    redis-slave-7664787fbc-vlvzn    1/1     Running   0          91m
    [10.128.44.240]: PS>
    
  3. 在此示例中,前端服务被部署为 type:LoadBalancer。 你将需要查找此服务的 IP 地址以查看 guestbook。 运行以下命令。

    kubectl get service -n <your-namespace>

    [10.128.44.240]: PS>kubectl get service -n demotestguestbook
    NAME           TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
    frontend       LoadBalancer   10.96.79.38      10.128.44.245   80:31238/TCP   85m
    memcached      ClusterIP      10.102.47.75     <none>          11211/TCP      85m
    redis-master   ClusterIP      10.104.32.99     <none>          6379/TCP       85m
    redis-slave    ClusterIP      10.104.215.146   <none>          6379/TCP       85m
    [10.128.44.240]: PS>
    
  4. type:LoadBalancer 前端服务有一个外部 IP 地址。 这个 IP 来自你在设备上配置计算网络设置时为外部服务指定的 IP 地址范围。 使用此 IP 地址查看 guestbook,URL 为 https://<external-IP-address>

    查看留言簿

删除部署

要删除部署,可以从 Azure 门户中删除配置。 删除配置将删除已创建的对象,包括部署和服务。

  1. 在 Azure 门户中,转到“Azure Arc 资源”>“配置”。
  2. 找到要删除的配置。 选择“...”调用上下文菜单,然后选择“删除”删除配置

删除配置可能需要几分钟时间。

后续步骤

了解如何使用 Kubernetes 仪表板监视 Azure Stack Edge Pro 设备上的部署