你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本教程介绍如何将 Azure Kubernetes 服务 (AKS) 应用程序连接到 Azure OpenAI,并使用具有工作负荷标识身份验证的服务连接器。 你将通过部署与 Azure OpenAI 通信的示例 Python 应用程序来建立无凭据连接。
你将完成以下任务:
- 使用 GPT-4 模型创建 AKS 群集和 Azure OpenAI 资源
- 配置服务连接器以建立与工作负荷标识的连接
- 克隆示例应用程序
- 生成容器映像并将其推送到 Azure 容器注册表
- 将应用程序部署到 AKS 并验证连接
- 清理资源
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
-
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 使用和管理 Azure CLI 中的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
- 用于 管理容器映像和 Kubernetes 资源的 Docker 和 kubectl 。
- 基本了解容器和 AKS。 从为 AKS 准备应用程序开始。
- 用于 创建 Azure OpenAI 资源和部署模型的访问权限。
创建 Azure OpenAI 和 AKS 资源
通过创建几个 Azure 资源来开始本教程。
为本教程创建资源组。
az group create \ --name MyResourceGroup \ --location eastus使用以下命令或参考 AKS 快速入门创建 AKS 群集。 在本教程中,我们将创建服务连接、Pod 定义,并将示例应用程序部署到此群集。
az aks create \ --resource-group MyResourceGroup \ --name MyAKSCluster \ --enable-managed-identity \ --node-count 1 \ --generate-ssh-keys使用 az aks get-credentials 命令连接到群集。
az aks get-credentials \ --resource-group MyResourceGroup \ --name MyAKSCluster使用 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>使用 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创建 Azure 容器注册表(ACR)来存储容器化示例应用程序。 使用 az acr create 命令,或参考 本教程。
az acr create \ --resource-group MyResourceGroup \ --name myregistry \ --sku Standard使用 az acr update 命令启用匿名拉取,以便 AKS 群集使用注册表中的映像。
az acr update \ --resource-group MyResourceGroup \ --name myregistry \ --anonymous-pull-enabled使用 az identity create 命令或参考本教程创建用户分配的托管标识。 创建连接时,将使用用户分配的托管标识为 AKS 工作负荷启用 工作负荷标识 。
az identity create \ --resource-group MyResourceGroup \ --name MyIdentity
创建从 AKS 到 Azure OpenAI 的服务连接
在 Azure 门户或 Azure CLI 中创建 AKS 群集与 Azure OpenAI 之间的服务连接。
请参阅 AKS 服务连接快速入门,获取创建新连接的说明,并参考下表中的示例填写设置。 将其他所有设置保留为其默认值。
“基本信息”选项卡:
设置 示例值 说明 Kubernetes 命名空间 default Kubernetes 命名空间。 服务类型 OpenAI 服务 目标服务类型。 连接名称 openai_conn 使用服务连接器提供的连接名称或选择自己的连接名称。 订阅 我的订阅 包含 Azure OpenAI 资源的 Azure 订阅。 OpenAI MyOpenAI 要连接到的目标 Azure OpenAI 资源。 客户端类型 Python 连接配置的编程语言或框架。 “身份验证”选项卡:
| 身份验证设置 | 示例值 | 说明 |
|---|---|---|
| 身份验证类型 | 工作负载标识 | 将应用连接到 Azure OpenAI 的身份验证方法。 建议使用工作负荷标识增强安全性。 替代方法包括连接字符串和服务主体,需要凭据管理注意事项。 |
| 订阅 | 我的订阅 | 包含用户分配的托管标识的订阅。 |
| 用户分配的托管标识 | myidentity | 为 AKS 群集启用工作负荷标识身份验证的用户分配托管标识。 |
创建连接后,可以在“服务连接器”窗格中查看其详细信息。
克隆 Python 示例应用程序
克隆示例存储库:
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git转到 Azure OpenAI 的存储库示例文件夹:
cd serviceconnector-aks-samples/azure-openai-workload-identity将
<MyModel>文件中的app.py占位符替换为部署的模型名称。
生成容器映像并将其推送到 Azure 容器注册表
使用 Azure CLI az acr build 命令生成映像并将其推送到容器注册表。
az acr build --registry myregistry --image sc-demo-openai-identity:latest ./使用 az acr repository list 命令查看容器注册表中的映像。
az acr repository list --name myregistry --output table
将 AKS 部署到 Azure OpenAI 连接并测试
替换
pod.yaml文件夹中azure-openai-workload-identity文件中的占位符。- 替换为
<YourContainerImage>前面生成的映像的名称。 例如,<myregistry>.azurecr.io/<sc-demo-openai-identity>:<latest>。 - 替换为
<ServiceAccountCreatedByServiceConnector>服务帐户名称。 可以在 Azure 门户的 “服务连接器 ”窗格中找到它。 - 替换为
<SecretCreatedByServiceConnector>机密名称。 可以在 Azure 门户的 “服务连接器 ”窗格中找到它。
- 替换为
使用
kubectl apply命令将 Pod 部署到群集,该命令在 AKS 群集的默认命名空间中创建名为sc-demo-openai-identity的 Pod。 使用kubectl命令在本地安装 (如果尚未安装)。kubectl apply -f pod.yaml使用
kubectl查看 Pod,检查部署是否成功。kubectl get pod/sc-demo-openai-identity使用
kubectl查看日志,检查是否已建立连接。kubectl logs pod/sc-demo-openai-identity
清理资源
如果不再需要本教程中创建的资源,请通过删除资源组将其清除。
az group delete \
--resource-group MyResourceGroup