教學課程:使用工作負載身分識別連線到 AKS 中的 Azure OpenAI 服務 (預覽)

在本教學課程中,您會了解如何在 Azure Kubernetes (AKS) 叢集中建立 Pod,以使用工作負載身分識別和服務連接器與 Azure OpenAI 服務交談。 在本教學課程中,您會完成下列工作:

  • 建立具有 gpt-4 模型部署的 AKS 叢集和 Azure OpenAI 服務。
  • 使用服務連接器在 AKS 叢集與 Azure OpenAI 之間建立連線。
  • 複製可從 AKS 叢集與 Azure OpenAI 服務交談的應用程式範例。
  • 將應用程式部署至 AKS 叢集中的 Pod,並測試連線。
  • 清除資源。

必要條件

建立 Azure 資源

您可以藉由建立數個 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 MyOpenAIService \
        --location eastus \
        --kind OpenAI \
        --sku s0 \
        --custom-domain myopenaiservice \
        --subscription <SubscriptionID>
    
  5. 使用 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
    
  6. 使用 az acr create 命令建立 Azure Container Registry (ACR) 資源,或參考本教學課程。 登錄會裝載應用程式範例的容器映像,由 AKS Pod 定義取用。

    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 中建立服務連線 (預覽)

在 Microsoft Azure 入口網站或 Azure CLI 中,建立 AKS 叢集與 Azure OpenAI 服務之間的服務連線。

請參閱 AKS 服務連線快速入門,以取得建立新連線的指示,並參考下表中範例填入設定。 讓其他所有設定保留其預設值。

  1. [基本] 索引標籤:

    設定 範例值 描述
    Kubernetes 命名空間 預設值 Kubernetes 命名空間。
    服務類型 OpenAI 服務 目標服務類型。
    連線名稱 openai_conn 使用服務連接器所提供的連線名稱,或選擇您自己的連線名稱。
    訂用帳戶 <MySubscription> 用於 Azure OpenAI 服務的訂用帳戶。
    OpenAI <MyOpenAIService> 您想要與之連線的目標 Azure OpenAI 服務。
    用戶端類型 Python 您用來連線到目標服務的程式碼語言或架構。
  2. [驗證] 索引標籤:

    驗證設定 範例值 描述
    驗證類型 工作負載身分識別 服務連接器驗證類型。
    訂用帳戶 <MySubscription> 包含使用者指派受控識別的訂用帳戶。
    使用者指派的受控識別 <MyIdentity> 需要使用者指派的受控識別,才能啟用工作負載身分識別。

建立連線之後,您可以在 [服務連接器] 窗格中檢視連線的詳細資料。

建立應用程式範例

  1. 複製範例存放庫:

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. 移至 Azure OpenAI 的存放庫範例資料夾:

    cd serviceconnector-aks-samples/azure-openai-workload-identity
    
  3. 以我們部署的模型名稱取代 app.py 檔案中的 <MyModel> 預留位置。

建置和推送容器映像

  1. 使用 Azure CLI az acr build 命令來建立映像,並將其推送至 ACR。

    az acr build --registry <MyRegistry> --image sc-demo-openai-identity:latest ./
    
  2. 使用 az acr repository list 命令來檢視 ACR 執行個體中的映像。

    az acr repository list --name <MyRegistry> --output table
    

執行應用程式和測試連線

  1. 取代 azure-openai-workload-identity 資料夾中 pod.yaml 檔案的預留位置。

    • <YourContainerImage> 取代為我們稍早建置的映像名稱。 例如: <MyRegistry>.azurecr.io/sc-demo-openai-identity:latest
    • <ServiceAccountCreatedByServiceConnector> 取代為建立連線之後,服務連接器所建立的服務帳戶。 您可以在 Azure 入口網站的 [服務連接器] 窗格中查看服務帳戶名稱。
    • <SecretCreatedByServiceConnector> 取代為建立連線之後,服務連接器所建立的祕密。 您可以在 Azure 入口網站的 [服務連接器] 窗格中查看祕密名稱。
  2. 使用 kubectl apply 命令將 Pod 部署至叢集,以在 AKS 叢集的預設命名空間中建立名為 sc-demo-openai-identity 的 Pod。 如果未安裝,請使用 az aks install-cli 命令在本機安裝 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

下一步

請閱讀下列文章,以深入了解服務連接器概念,以及其如何協助 AKS 連線到服務。