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

教程:将 AKS 连接到 Azure OpenAI

本教程介绍如何将 Azure Kubernetes 服务 (AKS) 应用程序连接到 Azure OpenAI,并使用具有工作负荷标识身份验证的服务连接器。 你将通过部署与 Azure OpenAI 通信的示例 Python 应用程序来建立无凭据连接。

你将完成以下任务:

  • 使用 GPT-4 模型创建 AKS 群集和 Azure OpenAI 资源
  • 配置服务连接器以建立与工作负荷标识的连接
  • 克隆示例应用程序
  • 生成容器映像并将其推送到 Azure 容器注册表
  • 将应用程序部署到 AKS 并验证连接
  • 清理资源

先决条件

创建 Azure OpenAI 和 AKS 资源

通过创建几个 Azure 资源来开始本教程。

  1. 为本教程创建资源组。

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. 使用以下命令或参考 AKS 快速入门创建 AKS 群集。 在本教程中,我们将创建服务连接、Pod 定义,并将示例应用程序部署到此群集。

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1 \
        --generate-ssh-keys
    
  3. 使用 az aks get-credentials 命令连接到群集。

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. 使用 az cognitiveservices account create 命令创建 Azure OpenAI 资源。 (可选)请参阅本教程以获取更多说明。 Azure OpenAI 是 AKS 群集将连接到的目标服务。

    az cognitiveservices account create \
        --resource-group MyResourceGroup \
        --name MyOpenAI \
        --location eastus \
        --kind OpenAI \
        --sku s0 \
        --custom-domain myopenai \
        --subscription <SubscriptionID>
    
  5. 使用 az cognitiveservices deployment create 命令来部署模型。 该模型在示例应用程序中用于测试连接。

    az cognitiveservices account deployment create \
        --resource-group MyResourceGroup \
        --name MyOpenAI \
        --deployment-name MyModel \
        --model-name gpt-4 \
        --model-version 0613 \
        --model-format OpenAI \
        --sku-name "Standard" \
        --capacity 1
    
  6. 创建 Azure 容器注册表(ACR)来存储容器化示例应用程序。 使用 az acr create 命令,或参考 本教程

    az acr create \
        --resource-group MyResourceGroup \
        --name myregistry \
        --sku Standard
    
  7. 使用 az acr update 命令启用匿名拉取,以便 AKS 群集使用注册表中的映像。

    az acr update \
        --resource-group MyResourceGroup \
        --name myregistry \
        --anonymous-pull-enabled
    
  8. 使用 az identity create 命令或参考本教程创建用户分配的托管标识。 创建连接时,将使用用户分配的托管标识为 AKS 工作负荷启用 工作负荷标识

    az identity create \
        --resource-group MyResourceGroup \
        --name MyIdentity
    

创建从 AKS 到 Azure OpenAI 的服务连接

在 Azure 门户或 Azure CLI 中创建 AKS 群集与 Azure OpenAI 之间的服务连接。

请参阅 AKS 服务连接快速入门,获取创建新连接的说明,并参考下表中的示例填写设置。 将其他所有设置保留为其默认值。

  1. “基本信息”选项卡:

    设置 示例值 说明
    Kubernetes 命名空间 default Kubernetes 命名空间。
    服务类型 OpenAI 服务 目标服务类型。
    连接名称 openai_conn 使用服务连接器提供的连接名称或选择自己的连接名称。
    订阅 我的订阅 包含 Azure OpenAI 资源的 Azure 订阅。
    OpenAI MyOpenAI 要连接到的目标 Azure OpenAI 资源。
    客户端类型 Python 连接配置的编程语言或框架。
  2. “身份验证”选项卡:

身份验证设置 示例值 说明
身份验证类型 工作负载标识 将应用连接到 Azure OpenAI 的身份验证方法。 建议使用工作负荷标识增强安全性。 替代方法包括连接字符串和服务主体,需要凭据管理注意事项。
订阅 我的订阅 包含用户分配的托管标识的订阅。
用户分配的托管标识 myidentity 为 AKS 群集启用工作负荷标识身份验证的用户分配托管标识。

创建连接后,可以在“服务连接器”窗格中查看其详细信息。

克隆 Python 示例应用程序

  1. 克隆示例存储库:

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. 转到 Azure OpenAI 的存储库示例文件夹:

    cd serviceconnector-aks-samples/azure-openai-workload-identity
    
  3. <MyModel> 文件中的 app.py 占位符替换为部署的模型名称。

生成容器映像并将其推送到 Azure 容器注册表

  1. 使用 Azure CLI az acr build 命令生成映像并将其推送到容器注册表。

    az acr build --registry myregistry --image sc-demo-openai-identity:latest ./
    
  2. 使用 az acr repository list 命令查看容器注册表中的映像。

    az acr repository list --name myregistry --output table
    

将 AKS 部署到 Azure OpenAI 连接并测试

  1. 替换 pod.yaml 文件夹中 azure-openai-workload-identity 文件中的占位符。

    • 替换为 <YourContainerImage> 前面生成的映像的名称。 例如,<myregistry>.azurecr.io/<sc-demo-openai-identity>:<latest>
    • 替换为 <ServiceAccountCreatedByServiceConnector> 服务帐户名称。 可以在 Azure 门户的 “服务连接器 ”窗格中找到它。
    • 替换为 <SecretCreatedByServiceConnector> 机密名称。 可以在 Azure 门户的 “服务连接器 ”窗格中找到它。
  2. 使用 kubectl apply 命令将 Pod 部署到群集,该命令在 AKS 群集的默认命名空间中创建名为 sc-demo-openai-identity 的 Pod。 使用 kubectl 命令在本地安装 (如果尚未安装)。

    kubectl apply -f pod.yaml
    
  3. 使用 kubectl 查看 Pod,检查部署是否成功。

    kubectl get pod/sc-demo-openai-identity
    
  4. 使用 kubectl 查看日志,检查是否已建立连接。

    kubectl logs pod/sc-demo-openai-identity
    

清理资源

如果不再需要本教程中创建的资源,请通过删除资源组将其清除。

az group delete \
    --resource-group MyResourceGroup