快速启动AI之旅:使用Azure AI和AKS构建第一个智能应用——第2部分

目录

先决条件

将容器镜像推送到Azure容器注册表(ACR)

在Azure Kubernetes服务(AKS)上部署智能应用

在AKS上测试智能应用

后续步骤


上一篇文章中,我们探讨了如何创建智能应用,该应用利用Azure AI视觉的计算机视觉服务来分析图像和提取数据。我们学习了如何构建Python Web API以对上传的图像执行OCR,然后随后在本地测试此API

在本文中,我们将使用Azure Kubernetes 服务AKS)在Azure上的云中开发、发布和维护我们的应用。

让我们开始吧!

先决条件

若要按照本教程操作,请确保已完成快速启动AI之旅:使用Azure AI和AKS构建第一个智能应用(1)

将容器镜像推送到Azure容器注册表(ACR

首先,打开CLI或终端并键入以下命令:

az login

按照浏览器上显示的说明输入Azure凭据。

通过身份验证后,将在本地环境和Azure之间启动安全连接。此过程授予你对云服务和资源的访问权限。

接下来,在终端中键入以下命令,以设置新的Azure容器注册表(ACR)来存储容器镜像:

az acr create --resource-group computer-vision --name <name-of-azure-container-registry> --sku Basic

请记住替换<name-of-azure-container-registry>为容器注册表名称。该名称在Azure中必须是唯一的,并符合这些规则

上述命令在基本SKU 下的computer-vision资源组中创建 Azure容器注册表ACR)。此ACR是用于在Azure中存储容器镜像的安全专用存储库。

接下来,使用以下命令登录注册表:

az acr login -n <name-of-azure-container-registry>

通过上述az acr login命令,可以安全地进行身份验证和访问指定的ACR,而无需每次都提供Azure凭据。

现在,在终端中运行以下命令。它将显示要登录的终结点URL,并与ACR交互,以推送和拉取容器镜像。

az acr show --name <name-of-azure-container-registry> --query loginServer --output table

此命令返回以下终结点URL

Result
----------------------------------
<name-of-azure-container-registry>.azurecr.io

现在,运行以下命令以显示所有容器镜像、其存储库、标记和大小:

docker images

REPOSITORY        TAG       IMAGE ID       CREATED        SIZE
intelligent-app   latest    a7bf9f753617   16 hours ago   197MB

标记是将Docker镜像推送到远程注册表(如Azure容器注册表)所必需的。它们还可以让您区分同一镜像的不同版本,并上传或下载所需的镜像。

运行以下命令以标记Docker镜像:

docker tag intelligent-app <name-of-azure-container-registry>.azurecr.io/intelligent-app:v1

然后,再次运行docker images命令以检查标记的镜像:

docker images

REPOSITORY                                  TAG       IMAGE ID       CREATED              SIZE
intelligent-app                             latest    c52168039265   About a minute ago   197MB
<name-of-azure-container-registry>.azurecr.io/intelligent-app   v1        c52168039265   About a minute ago   197MB

现在运行以下命令,以便Docker可以安全地将镜像上传到Azure容器注册表:

docker push <name-of-azure-container-registry>.azurecr.io/intelligent-app:v1 

将镜像部署到容器注册表后,AKS可以在部署期间访问它。

Azure Kubernetes服务(AKS)上部署智能应用

在将智能应用部署到AKS之前,我们需要预配AKS群集并定义Kubernetes清单。

若要预配AKS群集以托管应用程序,请为群集指定所需的配置,例如节点数、节点大小和网络选项。但首先,下载并安装Kubernetes命令行工具(kubectl),这是一个实现Azure身份验证的客户端凭据插件:

az aks install-cli

如果您使用的是Linux请查看本教程。然后运行以下命令:

sudo az aks install-cli

接下来,在终端中运行以下命令,以启用对AzureMicrosoft.Network命名空间提供的与网络相关的资源和服务的访问:

az provider register --namespace Microsoft.Network

现在,我们必须创建一个AKS群集。运行以下命令,创建computer-vision资源组中命名为aks-intelligent-appAKS群集。

az aks create --resource-group computer-vision --name aks-intelligent-app --node-count 1 --generate-ssh-keys

上面的命令指定目标资源组:computer-vision节点池配置了一个虚拟机(VM),并自动生成用于安全节点访问的安全外壳(SSH)密钥。

接下来,运行以下命令,通过将AKS群集附加到ACR来更新创建的AKS群集。这样做允许AKS群集在将工作负载部署到群集时从指定的ACR拉取容器镜像。

az aks update -n aks-intelligent-app -g computer-vision --attach-acr <name-of-azure-container-registry>

然后,运行以下命令,将kubectl配置为使用computer-vision资源组中的AKS群集。

az aks get-credentials --resource-group computer-vision --name aks-intelligent-app

上述命令检索kubectlAKS群集通信所需的凭据和上下文信息。

我们仍然需要定义用YAML编写的Kubernetes清单,描述应用程序部署的所需状态,包括容器、网络和扩展规则。我们将准备这些清单(包括部署和服务配置),以定义应如何部署和公开应用程序。

首先,在根文件夹中创建一个名为 Deployment 的文件夹。

:在本例中,根文件夹是初学者项目模板/Microsoft_Series17-18_Code/intelligent-app-before文件夹。

然后,在Deployment文件夹中创建两个文件:deployment.ymlservice.yml

将以下配置添加到deployment.yml文件,将<name-of-azure-container-registry>占位符替换为注册表的名称:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: intelligent-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: intelligent-app
  template:
    metadata:
      labels:
        app: intelligent-app
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      containers:
        - name: intelligent-app
          image: <name-of-azure-container-registry>.azurecr.io/intelligent-app:v1
          resources:
            limits:
              memory: 512Mi
              cpu: "1"
            requests:
              memory: 256Mi
              cpu: "0.2"
          ports:
            - containerPort: 5000
          env:
            - name: FLASK_DEBUG
              value: "1"
            - name: VISION_KEY
              value: <THE-KEY-1-VALUE-FROM-YOUR-AZURE-AI-SERVICE>
            - name: VISION_ENDPOINT
              value: <THE-ENDPOINT-VALUE-FROM-YOUR-AZURE-AI-SERVICE>

此外,请根据Azure AI实例的API密钥和终结点编辑上述VISION_KEYVISION_ENDPOINT环境变量。

然后,将以下配置添加到service.yml文件:

apiVersion: v1
kind: Service
metadata:
  name: intelligent-app-service
spec:
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000
      name: port5000
  selector:
    app: intelligent-app

现在,我们将使用kubectl部署我们的应用程序。应用Kubernetes清单会创建必要的资源,并将容器化应用程序部署到AKS群集。

首先,将终端更改为部署文件夹:

cd Deployment

然后,执行以下命令,创建或更新deployment.yml文件中定义的Kubernetes资源:

kubectl apply -f deployment.yml

使用以下代码根据service.yml文件中定义的配置在Kubernetes集群中创建Kubernetes服务资源:

kubectl apply -f service.yml

应用deployment.yml  service.yml 文件中包含的资源定义和服务配置后,在Azure门户中打开aks-intelligent-app Kubernetes服务,在边栏上的Kubernetes资源下选择工作负载,然后找到名为intelligent-app的部署。它必须具有就绪1/1”状态。如果遇到此状态的问题,请查看这些故障排除资源

AKS上测试智能应用

若要在AKS上测试应用,请先运行以下命令:

kubectl get services

此命令列出服务及其相应的详细信息,包括服务名称、群集IP地址、外部IP和端口。

NAME                      TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
intelligent-app-service   LoadBalancer   10.0.77.60   20.121.76.153   80:30936/TCP   47s
kubernetes                ClusterIP      10.0.0.1     <none>          443/TCP        14m

上面的输出显示了一个名为intelligent-app-serviceKubernetes服务的类型设置为LoadBalancer。可以使用群集IP 10.0.77.60从群集内部访问它,并通过端口80(映射到端口30936)上的外部IP 20.121.76.153从外部访问它。

注意:您的IP地址集会有所不同。使用Postman进行测试时,请记住使用您唯一的外部IP地址。

若要测试已部署的应用,请转到Postman,将URL替换为刚刚部署的Kubernetes服务的外部IP,然后单击发送

正如我们所看到的,我们的智能应用已成功部署到AKS,并按预期在云上运行。

后续步骤

在这篇由两部分组成的文章中,我们探讨了如何创建利用Azure AI for Vision来分析图像和提取数据的智能应用。我们学习了如何生成Python Web API以对上传的图像执行OCR,然后通过Azure Kubernetes服务部署此API

除了OCR和图像分析之外,还可以继续探索Azure的许多服务,并通过将各种实际用途应用于智能应用来进一步试验Azure AIAKS,包括自然语言处理、语音识别和合成、客户反馈的情绪分析以及自动内容审核。

请转到本系列的下一部分,继续探索Azure的大量服务,并发现增强智能应用的更多方法。

https://www.codeproject.com/Articles/5370125/Jumpstart-Your-AI-Journey-Building-Your-First-Inte

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值