チュートリアル: ワークロード ID を使用して AKS の Azure OpenAI Service に接続する (プレビュー)

このチュートリアルでは、ワークロード ID とサービス コネクタを使用して Azure OpenAI Service と通信する、Azure Kubernetes (AKS) クラスター内にポッドを作成する方法を学習します。 このチュートリアルでは、次のタスクを実行します。

  • gpt-4 モデル デプロイを使用して AKS クラスターと Azure OpenAI Service を作成します。
  • サービス コネクタを使用して、AKS クラスターと Azure OpenAI の間に接続を作成します。
  • AKS クラスターから Azure OpenAI Service と通信するサンプル アプリケーションを複製します。
  • AKS クラスター内のポッドにアプリケーションを配置し、接続をテストします。
  • リソースをクリーンアップする。

前提条件

Azure リソースを作成する

このチュートリアルは、いくつかの 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 Service リソースを作成します。 必要に応じて、詳細な手順についてはこのチュートリアルを参照してください。 Azure OpenAI Service は、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 ポッド定義が使用するサンプル アプリケーションのコンテナー イメージをホストします。

    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
    

Service Connector を使用して AKS でサービス接続を作成する (プレビュー)

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

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

  1. [基本] タブ:

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

    認証設定 値の例 説明
    認証の種類 ワークロード ID Service Connector 認証の種類。
    サブスクリプション <MySubscription> ユーザー割り当てマネージド ID を含むサブスクリプション。
    ユーザー割り当てマネージド ID <MyIdentity> ワークロード ID を有効にするには、ユーザー割り当てマネージド ID が必要です。

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

サンプル アプリケーションを複製する

  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> を、接続の作成後に Service Connector によって作成されたサービス アカウントに置き換えます。 サービス アカウント名は、Azure portal の [サービス コネクタ] ペインで確認できます。
    • <SecretCreatedByServiceConnector> を、接続の作成後に Service Connector によって作成されたシークレットに置き換えます。 シークレット名は、Azure portal の [サービス コネクタ] ペインで確認できます。
  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

次のステップ

サービス コネクタの概念と、それを使って AKS をサービスに接続する方法について詳しくは、次の記事をご覧ください。