教程 - 将应用程序部署到 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 目录中,然后使用文本编辑器打开
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 ...
保存并关闭该文件。
运行应用程序
使用
kubectl apply
命令部署应用程序,该命令会分析清单文件并创建所定义的 Kubernetes 对象。kubectl apply -f aks-store-quickstart.yaml
下面的示例输出表明已成功在 AKS 群集中创建了资源:
statefulset.apps/rabbitmq created configmap/rabbitmq-enabled-plugins 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 地址来查看应用程序的运作情况:
http://<external-ip>
。
如果应用程序未加载,可能是因为映像注册表存在授权问题。 若要查看容器的状态,请使用 kubectl get pods
命令。 如果无法拉取容器映像,请参阅使用 Azure 容器注册表从 Azure Kubernetes 服务进行身份验证。
Azure 门户
导航到 Azure 门户以查找部署信息。
清理资源
由于你已验证应用程序的功能,现在可以从应用程序中删除群集。 我们将在下一篇教程中再次部署该应用程序。
使用
kubectl delete
命令停止和删除容器实例和资源。kubectl delete -f aks-store-quickstart.yaml
使用
kubectl get pods
命令检查是否已删除所有应用程序 Pod。kubectl get pods
后续步骤
在本教程中,你已在 AKS 中将示例 Azure 应用程序部署到 Kubernetes 群集。 你已了解如何执行以下操作:
- 更新 Kubernetes 清单文件。
- 在 Kubernetes 中运行应用程序。
- 测试应用程序。
下一教程介绍如何在 Kubernetes 中使用 PaaS 服务处理有状态工作负荷。