教學課程:使用工作負載身分識別連線到 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 Container Registry (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 中建立服務連線 (預覽)
在 Microsoft Azure 入口網站或 Azure CLI 中,建立 AKS 叢集與 Azure OpenAI 服務之間的服務連線。
請參閱 AKS 服務連線快速入門,以取得建立新連線的指示,並參考下表中範例填入設定。 讓其他所有設定保留其預設值。
[基本] 索引標籤:
設定 範例值 描述 Kubernetes 命名空間 預設值 Kubernetes 命名空間。 服務類型 OpenAI 服務 目標服務類型。 連線名稱 openai_conn 使用服務連接器所提供的連線名稱,或選擇您自己的連線名稱。 訂用帳戶 <MySubscription>
用於 Azure OpenAI 服務的訂用帳戶。 OpenAI <MyOpenAIService>
您想要與之連線的目標 Azure 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 連線到服務。