你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:使用工作负载标识连接到 AKS 中的 Azure OpenAI 服务(预览版)
本教程介绍如何在 Azure Kubernetes (AKS) 群集中创建 Pod,该群集使用工作负载标识和服务连接器与 Azure OpenAI 服务通信。 在本教程中,请完成以下任务:
- 使用
gpt-4
模型部署创建 AKS 群集和 Azure OpenAI 服务。 - 使用服务连接器在 AKS 群集与 Azure OpenAI 之间创建连接。
- 克隆一个示例应用程序,该应用程序从 AKS 群集与 Azure OpenAI 服务通信。
- 将应用程序部署到 AKS 群集中的 Pod 并测试连接。
- 清理资源。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
-
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 中的 Bash 快速入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
- 安装 Docker 和 kubectl,以管理容器映像和 Kubernetes 资源。
- 基本了解容器和 AKS。 从为 AKS 准备应用程序开始。
- 基本了解工作负载标识。
- 创建 Azure OpenAI 资源和部署模型的访问权限。
创建 Azure 资源
通过创建几个 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 MyOpenAIService \ --location eastus \ --kind OpenAI \ --sku s0 \ --custom-domain myopenaiservice \ --subscription <SubscriptionID>
使用 az cognitiveservices deployment create 命令来部署模型。 该模型在示例应用程序中用于测试连接。
az cognitiveservices account deployment create \ --resource-group MyResourceGroup \ --name MyOpenAIService --deployment-name MyModel \ --model-name gpt-4 \ --model-version 0613 \ --model-format OpenAI \ --sku-name "Standard" --capacity 1
使用 az acr create 命令或参考本教程创建 Azure 容器注册表 (ACR) 资源。 注册表托管示例应用程序的容器映像,该映像将由 AKS Pod 定义使用。
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 门户或 Azure CLI 在 AKS 群集与 Azure OpenAI 服务之间创建服务连接。
请参阅 AKS 服务连接快速入门,获取创建新连接的说明,并参考下表中的示例填写设置。 将其他所有设置保留为其默认值。
“基本信息”选项卡:
设置 示例值 说明 Kubernetes 命名空间 default Kubernetes 命名空间。 服务类型 OpenAI 服务 目标服务类型。 连接名称 openai_conn 使用服务连接器提供的连接名称或选择自己的连接名称。 订阅 <MySubscription>
用于 Azure OpenAI 服务的订阅。 OpenAI <MyOpenAIService>
要连接到的目标 OpenAI 服务。 客户端类型 Python 用于连接到目标服务的代码语言或框架。 “身份验证”选项卡:
身份验证设置 示例值 说明 身份验证类型 工作负载标识 服务连接器身份验证类型。 订阅 <MySubscription>
包含用户分配的托管标识的订阅。 用户分配的托管标识 <MyIdentity>
需要用户分配的托管标识才能启用工作负载标识。
创建连接后,可以在“服务连接器”窗格中查看其详细信息。
克隆示例应用程序
克隆示例存储库:
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
转到 Azure OpenAI 的存储库示例文件夹:
cd serviceconnector-aks-samples/azure-openai-workload-identity
将
app.py
文件中的<MyModel>
占位符替换为部署的模型名称。
生成并推送容器映像
使用 Azure CLI az acr build 命令生成映像并将其推送到 ACR。
az acr build --registry <MyRegistry> --image sc-demo-openai-identity:latest ./
使用 az acr repository list 命令查看 ACR 实例中的映像。
az acr repository list --name <MyRegistry> --output table
运行应用程序并测试连接
替换
azure-openai-workload-identity
文件夹中pod.yaml
文件中的占位符。- 将
<YourContainerImage>
替换为先前生成的映像的名称。 例如<MyRegistry>.azurecr.io/sc-demo-openai-identity:latest
。 - 将
<ServiceAccountCreatedByServiceConnector>
替换为在创建连接后由服务连接器创建的服务帐户。 可以在 Azure 门户的“服务连接器”窗格中查看服务帐户名称。 - 将
<SecretCreatedByServiceConnector>
替换为在创建连接后由服务连接器创建的机密。 可以在 Azure 门户的“服务连接器”窗格中查看机密名称。
- 将
使用
kubectl apply
命令将 Pod 部署到群集,该命令在 AKS 群集的默认命名空间中创建名为sc-demo-openai-identity
的 Pod。 使用 az aks install-cli 命令在本地安装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
后续步骤
阅读以下文章,详细了解服务连接器的概念以及它如何帮助 AKS 连接到服务。