本教學課程示範如何使用服務連接器搭配工作負載身分識別驗證,將 Azure Kubernetes Service (AKS) 應用程式連線到 Azure OpenAI。 您將藉由部署與 Azure OpenAI 通訊的範例 Python 應用程式來建立無認證連線。
您將完成下列工作:
- 使用 GPT-4 模型建立 AKS 叢集和 Azure OpenAI 資源
- 設定服務連接器以建立與工作負載身分識別的連線
- 複製範例應用程式
- 建置容器映像並將其推送至 Azure Container Registry
- 將應用程式部署至 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。
- Docker 和 kubectl 來管理容器映像和 Kubernetes 資源。
- 容器和 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 命名空間 預設值 Kubernetes 命名空間。 服務類型 OpenAI 服務 目標服務類型。 連線名稱 openai_conn 使用服務連接器所提供的連線名稱,或選擇您自己的連線名稱。 訂用帳戶 我的訂閱 包含 Azure OpenAI 資源的 Azure 訂用帳戶。 OpenAI 我的OpenAI 您想要連線的目標 Azure OpenAI 資源。 用戶端類型 Python 連線配置的程式設計語言或架構。 [驗證] 索引標籤:
| 驗證設定 | 範例值 | 描述 |
|---|---|---|
| 驗證類型 | 工作負載身分識別 | 將應用程式連線到 Azure OpenAI 的驗證方法。 建議使用工作負載身分識別以增強安全性。 替代方法包括連接字串和服務主體,而且需要認證管理考量。 |
| 訂用帳戶 | 我的訂閱 | 包含使用者指派受控識別的訂用帳戶。 |
| 使用者指派的受控識別 | 我的身分 | 使用者指派的受控識別,可啟用 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 Container Registry
使用 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