次の方法で共有


チュートリアル: AKS を Azure OpenAI に接続する

このチュートリアルでは、ワークロード ID 認証で Service Connector を使用して Azure Kubernetes Service (AKS) アプリケーションを Azure OpenAI に接続する方法について説明します。 Azure OpenAI サービスと通信するサンプル Python アプリケーションをデプロイすることで、資格情報のない接続を確立します。

次のタスクを完了します。

  • GPT-4 モデルを使用して AKS クラスターと Azure OpenAI リソースを作成する
  • Service Connector を構成してワークロード ID との接続を確立する
  • サンプル アプリケーションを複製する
  • コンテナー イメージをビルドして Azure Container Registry にプッシュする
  • アプリケーションを AKS にデプロイし、接続を確認する
  • リソースをクリーンアップする

前提条件

Azure OpenAI と AKS リソースを作成する

このチュートリアルは、いくつかの Azure リソースを作成することから始めます。

  1. このチュートリアル用のリソース グループを作成します。

    az group create \
        --name MyResourceGroup \
        --___location eastus
    
  2. 次のコマンドを使用するか、AKS クイック スタートを参照して、AKS クラスターを作成します。 このチュートリアルでは、サービス接続とポッド定義を作成し、このクラスターにサンプル アプリケーションをデプロイします。

    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 Container Registry (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 コマンドを使用するか、このチュートリアルを参照して、ユーザー割り当てマネージド ID を作成します。 接続が作成されると、ユーザー割り当てマネージド ID を使用して、AKS ワークロードのワークロード ID が 有効になります。

    az identity create \
        --resource-group MyResourceGroup \
        --name MyIdentity
    

AKS から Azure OpenAI へのサービス接続を作成する

Azure portal または Azure CLI で、AKS クラスターと Azure OpenAI の間にサービス接続を作成します。

新しい接続を作成し、次の表の例を参照して設定を入力する手順については、AKS サービス接続のクイックスタートを参照してください。 その他の設定はすべて既定値のままにします。

  1. [基本] タブ:

    設定 値の例 説明
    Kubernetes の名前空間 default Kubernetes 名前空間。
    サービスの種類 OpenAI サービス ターゲット サービスの種類。
    接続名 openai_conn Service Connector によって提供される接続名を使用するか、独自の接続名を選択します。
    サブスクリプション 自分のサブスクリプション Azure OpenAI リソースを含む Azure サブスクリプション。
    OpenAI MyOpenAI 接続先の Azure OpenAI リソース。
    クライアントの種類 Python 接続構成のプログラミング言語またはフレームワーク。
  2. [認証] タブ

認証設定 値の例 説明
認証の種類 ワークロード ID アプリを Azure OpenAI に接続するための認証方法。 セキュリティを強化するために、ワークロード ID を使用することをお勧めします。 別の方法には、接続文字列とサービス プリンシパルが含まれており、資格情報の管理に関する考慮事項が必要です。
サブスクリプション 自分のサブスクリプション ユーザー割り当てマネージド ID を含むサブスクリプション。
ユーザー割り当てマネージド ID myidentity AKS クラスターのワークロード ID 認証を有効にするユーザー割り当てマネージド ID。

接続が作成されたら、[サービス コネクタ] ペインでその詳細を表示できます。

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 portal の [Service Connector ] ウィンドウにあります。
    • <SecretCreatedByServiceConnector>をシークレット名に置き換えます。 これは、Azure portal の [Service Connector ] ウィンドウにあります。
  2. kubectl apply コマンドを使用してポッドをクラスターにデプロイします。これにより、AKS クラスターの既定の名前空間に sc-demo-openai-identity という名前のポッドが作成されます。 kubectl がインストールされていない場合は、az aks install-cli コマンドを使用して、ローカルにインストールします。

    kubectl apply -f pod.yaml
    
  3. kubectl でポッドを表示して、デプロイが成功したことを確認します。

    kubectl get pod/sc-demo-openai-identity
    
  4. kubectl でログを表示して接続が確立されていることを確認します。

    kubectl logs pod/sc-demo-openai-identity
    

リソースをクリーンアップする

このチュートリアルで作成したリソースが不要になったら、リソース グループを削除してクリーンアップしてください。

az group delete \
    --resource-group MyResourceGroup