Azure Kubernetes 服务 – 第三天 – 将 ASP.NET Core 应用程序部署到 Azure Kubernetes 服务

作者 : 慕源网 本文共2858个字,预计阅读时间需要8分钟 发布时间: 2021-11-8 共480人阅读

介绍

随着应用程序开发和部署范式从单体到微服务再到更高级的不断变化,自动化的需求出现了,其中包括将微组件自动调度到我们的服务器、自动配置、监督和故障处理。不仅部署组合数量增加,而且组件的相互依赖性也增加。这需要负责自动调度、配置、监控、错误处理和扩展的自动化。在容器中托管微服务解决了这个目的,但随之而来的是编排问题。如果微服务需要托管在容器中,它还需要容器的编排。

这正是 Kubernetes 出现的地方。

Kubernetes 不仅使开发团队在应用程序部署方面受益,而且对 DevOps 团队来说也是一个福音,有助于监控和错误处理。Kubernetes 提供了一个抽象层,DevOps 不必担心关注单个应用程序,而是管理和监督 Kubernetes 和其他相关基础设施。

在上两篇文章中,我们学习了如何创建 ASP.NET Core 应用程序并对其进行 dockerize,然后将其部署到本地 Kubernetes 集群上。

在本文中,我们将学习如何将已创建的 dockerized ASP.NET Core 应用程序部署到 Azure Kubernetes 集群。我们还将探索 Azure 容器注册表 (ACR)。

论文

在本文中,我们将演示如何使用 Docker 和 Azure Kubernetes 服务协调整个 ASP.NET Core 应用程序的部署和扩展。整篇文章将分为以下三个部分。

从上一篇文章开始,应用程序的 Docker 镜像已经准备就绪,是时候将镜像推送到注册表了。如果需要,我们将使用可与其他开发人员共享的Azure 容器注册表

是时候使用 Azure CLI。使用az login命令登录到 Azure 。

创建名称为 aksgroup 且位置为 australiaeast 的资源组。

运行az acr create命令,指定名称为 learningaksacr,资源组为 aksgroup,位置为 australiaeast,sku 为标准。

创建容器注册中心后,需要推送镜像。使用az acr login命令并指定我们的注册表名称,即 learningaksacr。

登录成功后,在推送之前,使用容器注册中心的登录服务器名称标记本地镜像。键入az acr list -o table命令。复制登录服务器名称并随身携带。要列出这台机器上可用的 Docker 镜像,我们可以使用docker image list命令。我们有 aks:local image,需要使用登录服务器名称对其进行标记。

现在,运行 docker tag 命令,指定本地镜像名称,即 aks:local;指定新名称,即登录服务器名称;然后是镜像名称和标签,即 aks:v1。

通过 docker image list 命令验证这一点,我们看到成功标记的镜像。本地镜像和标记镜像共享相同的镜像 ID。

现在使用 docker push 命令将标记的镜像推送到注册表。

推送后,使用带有 list 参数的az acr repository 命令,指定注册表的名称,并以表格格式显示输出。命令的结果显示我们已成功将映像推送到 Azure 容器注册表 (ACR)。

此映像现在可由任何其他 Docker 机器使用或访问,或者 AKS 群集可以轻松地从注册表中提取此映像。

部署 Azure Kubernetes 服务 (AKS) 群集

我们在本地部署了 Kubernetes 集群,现在是使用 Azure Kubernetes 服务 (AKS) 部署到 Azure 的时候了。使用 AKS,可以轻松配置生产级 Kubernetes 集群。在继续之前,创建服务主体,即将应用程序注册到 Azure Active Directory (AD) 并为其创建标识。如果需要将应用程序公开给其他 Azure 服务,则需要它。此身份称为服务主体。通过使用az ad sp create-for-rbac –skip-assignment创建服务主体,使用 Azure CLI创建服务主体。创建后,您将获得如下图所示的详细信息。

将 appId 和密码放在手边,现在是时候向服务主体授予从 ACR 中提取镜像的权限了。我在这里使用 PowerShell 窗口。使用az acr show命令获取 ACR 资源 ID 。然后,将读取器角色授予 AKS 群集,以便它可以使用az role assignment create命令读取存储在 ACR 中的镜像。使用之前复制的应用 ID,并将范围设置为 ACR 的资源 ID,该 ID 是从az acr show命令获取的。

现在,使用az aks create命令创建我们的 AKS 集群,如下图所示。提供一个名称,即资源组。对于节点数,使其成为单个工作节点。使用 generate-ssh-keys 生成 SSH 公钥和私钥文件。指定 service-principal 和 client-secret,即之前复制的应用程序 ID 和密码。运行命令。

部署完成后,要从客户端计算机连接到我们的 AKS 集群,请使用 kubectl 命令行界面。

如下图所示,位于用户位置的 .kube 文件包含设置为在端口 6445 上运行的本地服务器的服务器设置。

获取我们的 AKS 集群的凭据,即刚刚使用az aks get-credentials命令部署的凭据,指定名称和资源组名称。

现在,返回 .kube\config 并注意服务器现在反映了 Azure 中运行的 AKS 集群。

要进行验证,请执行kubectl get nodes命令。

因此,我们可以看到一个单节点工作器确认我们的 Azure Kubernetes 服务集群已成功配置。

将 ASP.NET Core 应用程序部署到 AKS

集群已全部设好,现在将应用程序部署到其中。

打开应用程序根目录下的 aksdeploy.yml 文件。

截至目前,该映像指的是本地 Docker 映像。我们需要更改它以引用我们推送到 Azure 容器注册表的映像。

因此,代替 aks:local,在服务器上提供带有标签的镜像名称,如下图所示。

之前我们将此应用部署到本地集群,并使用服务类型为 NodePort。现在我们正在将它们部署到 Azure 等云服务,我们可以将类型更改为 LoadBalancer。

保存文件。同样,使用kubectl apply命令进行部署。

这将创建定义的 Kubernetes 对象,其中包括部署和服务。创建的服务将应用程序公开给 Internet。

要监控部署进度,请使用带有–watch参数的kubectl get service命令。最初,aks 部署服务的外部 IP 显示为待处理。一旦外部 IP 从待定更改为 IP 地址,请复制该 IP。

要测试您的应用程序,请浏览到外部 IP 地址。

我们可以看到我们的应用程序在 AKS 集群内的工作节点上运行。

结论

本文是了解如何容器化 ASP.NET 应用程序并将其部署到本地 Kubernetes 和 Azure Kubernetes 服务的端到端文章。我们还在文章中探讨了 Azure 容器注册表的作用。


慕源网 » Azure Kubernetes 服务 – 第三天 – 将 ASP.NET Core 应用程序部署到 Azure Kubernetes 服务

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录