共用方式為


教學課程:將 AKS 連線到 Azure OpenAI

本教學課程示範如何使用服務連接器搭配工作負載身分識別驗證,將 Azure Kubernetes Service (AKS) 應用程式連線到 Azure OpenAI。 您將藉由部署與 Azure OpenAI 通訊的範例 Python 應用程式來建立無認證連線。

您將完成下列工作:

  • 使用 GPT-4 模型建立 AKS 叢集和 Azure OpenAI 資源
  • 設定服務連接器以建立與工作負載身分識別的連線
  • 複製範例應用程式
  • 建置容器映像並將其推送至 Azure Container Registry
  • 將應用程式部署至 AKS 並驗證連線
  • 清除資源

必要條件

建立 Azure OpenAI 和 AKS 資源

您可以藉由建立數個 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 MyOpenAI \
        --location eastus \
        --kind OpenAI \
        --sku s0 \
        --custom-domain myopenai \
        --subscription <SubscriptionID>
    
  5. 使用 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
    
  6. 建立 Azure 容器登錄 (ACR) 來儲存容器化範例應用程式。 使用 az acr create 命令,或參閱 本教學課程

    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 到 Azure OpenAI 的服務連線

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

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

  1. [基本] 索引標籤:

    設定 範例值 描述
    Kubernetes 命名空間 預設值 Kubernetes 命名空間。
    服務類型 OpenAI 服務 目標服務類型。
    連線名稱 openai_conn 使用服務連接器所提供的連線名稱,或選擇您自己的連線名稱。
    訂用帳戶 我的訂閱 包含 Azure OpenAI 資源的 Azure 訂用帳戶。
    OpenAI 我的OpenAI 您想要連線的目標 Azure OpenAI 資源。
    用戶端類型 Python 連線配置的程式設計語言或架構。
  2. [驗證] 索引標籤:

驗證設定 範例值 描述
驗證類型 工作負載身分識別 將應用程式連線到 Azure OpenAI 的驗證方法。 建議使用工作負載身分識別以增強安全性。 替代方法包括連接字串和服務主體,而且需要認證管理考量。
訂用帳戶 我的訂閱 包含使用者指派受控識別的訂用帳戶。
使用者指派的受控識別 我的身分 使用者指派的受控識別,可啟用 AKS 叢集的工作負載身分識別驗證。

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

複製 Python 範例應用程式

  1. 複製範例存放庫:

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

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

建置容器映像並將其推送至 Azure Container Registry

  1. 使用 Azure CLI az acr build 命令建置映像並將其推送至容器登錄。

    az acr build --registry myregistry --image sc-demo-openai-identity:latest ./
    
  2. 使用 az acr repository list 命令檢視容器登錄中的映像。

    az acr repository list --name myregistry --output table
    

部署和測試 AKS 至 Azure OpenAI 連線

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

    • 取代 <YourContainerImage> 為您先前建置的映像名稱。 例如 <myregistry>.azurecr.io/<sc-demo-openai-identity>:<latest>
    • 取代 <ServiceAccountCreatedByServiceConnector> 為服務帳戶名稱。 您可以在 Azure 入口網站的 [ 服務連接器 ] 窗格中找到它。
    • 取代 <SecretCreatedByServiceConnector> 為秘密名稱。 您可以在 Azure 入口網站的 [ 服務連接器 ] 窗格中找到它。
  2. 使用 kubectl apply 命令將 Pod 部署至叢集,以在 AKS 叢集的預設命名空間中建立名為 sc-demo-openai-identity 的 Pod。 如果未安裝,請使用 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