教程 - 将应用程序部署到 Azure Kubernetes 服务 (AKS)
Kubernetes 为容器化应用程序提供一个分布式平台。 你生成自己的应用程序和服务并将其部署到 Kubernetes 群集中,让群集管理可用性和连接性。
在本教程中(第 4 部分,共 7 部分),你要将示例应用程序会部署到 Kubernetes 群集中。 学习如何:
- 更新 Kubernetes 清单文件。
- 在 Kubernetes 中运行应用程序。
- 测试应用程序。
提示
借助 AKS,可以使用以下方法进行配置管理:
GitOps:让群集状态的声明可以自动应用于群集。 若要了解如何使用 GitOps 通过 AKS 群集部署应用程序,请参阅 [GitOps with Flux v2][gitops-flux-tutorial] 教程中的 [Azure Kubernetes 服务群集先决条件][gitops-flux-tutorial-aks]。
DevOps:让你可以利用持续集成 (CI) 和持续交付 (CD) 进行生成、测试和部署。 若要查看如何使用 DevOps 通过 AKS 群集部署应用程序的示例,请参阅使用 Azure Pipelines 生成并部署到 AKS 或用于部署到 Azure Kubernetes 服务的 GitHub Actions。
开始之前
在上一教程中,你已将应用程序打包到容器映像中、将映像更新到 Azure 容器注册表并且创建了 Kubernetes 群集。 必须先预创建 aks-store-quickstart.yaml
Kubernetes 清单文件,然后才能完成本教程。 此文件是从教程 1 - 准备 AKS 应用程序的应用程序源代码中下载的。
本教程需要 Azure CLI 2.0.53 或更高版本。 使用 az --version
检查版本。 若要安装或升级,请参阅安装 Azure CLI。
更新清单文件
在这些教程中,你的 Azure 容器注册表 (ACR) 实例存储示例应用程序的容器映像。 若要部署此应用程序,必须更新 Kubernetes 清单文件中的映像名称,使之包括你的 ACR 登录服务器名称。
使用
az acr list
命令获取登录服务器地址,并查询登录服务器。az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
确保你位于所克隆的 aks-store-demo 目录中,然后使用某个文本编辑器(例如
vi
)打开清单文件。vi aks-store-quickstart.yaml
通过将 ghcr.io/azure-samples 替换为 ACR 登录服务器名称来更新容器的
image
属性。containers: ... - name: order-service image: <acrName>.azurecr.cn/aks-store-demo/order-service:latest ... - name: product-service image: <acrName>.azurecr.cn/aks-store-demo/product-service:latest ... - name: store-front image: <acrName>.azurecr.cn/aks-store-demo/store-front:latest ...
保存并关闭该文件。 在
vi
中,使用:wq
。
运行应用程序
使用
kubectl apply
命令部署应用程序,该命令会分析清单文件并创建所定义的 Kubernetes 对象。kubectl apply -f aks-store-quickstart.yaml
下面的示例输出表明已成功在 AKS 群集中创建了资源:
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
通过查看具有
kubectl
的 Pod 来检查部署是否成功kubectl get pods
测试应用程序
应用程序运行时,Kubernetes 服务将向 Internet 公开应用程序前端。 此过程可能需要几分钟才能完成。
命令行
使用带有
--watch
参数的kubectl get service
命令来监视进度。kubectl get service store-front --watch
起初,store-front 服务的
EXTERNAL-IP
显示为“pending”:store-front LoadBalancer 10.0.34.242 <pending> 80:30676/TCP 5s
当
EXTERNAL-IP
地址从 pending 更改为实际公共 IP 地址时,请使用CTRL-C
停止kubectl
监视进程。以下示例输出显示向服务分配了有效的公共 IP 地址:
store-front LoadBalancer 10.0.34.242 52.179.23.131 80:30676/TCP 67s
通过打开 Web 浏览器并访问服务的外部 IP 地址来查看应用程序的实际效果。
如果应用程序未加载,可能是因为映像注册表存在授权问题。 若要查看容器的状态,请使用 kubectl get pods
命令。 如果无法拉取容器映像,请参阅使用 Azure 容器注册表从 Azure Kubernetes 服务进行身份验证。
Azure 门户
导航到 Azure 门户以查找部署信息。
在 Azure 门户中打开资源组
导航到群集的 Kubernetes 服务
在
Kubernetes Resources
下选择Services and Ingress
复制 Store-front 列中显示的外部 IP
将 IP 粘贴到浏览器中并访问商店页面
后续步骤
在本教程中,你已在 AKS 中将示例 Azure 应用程序部署到 Kubernetes 群集。 你已了解如何执行以下操作:
- 更新 Kubernetes 清单文件。
- 在 Kubernetes 中运行应用程序。
- 测试应用程序。
下一教程介绍如何在 Kubernetes 中使用 PaaS 服务处理有状态工作负荷。