チュートリアル: ワークロード 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 Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
- コンテナー イメージと Kubernetes リソースを管理するために、Docker と kubectl をインストールします。
- コンテナーと AKS の基本的な理解。 AKS 用のアプリケーションの準備から開始します。
- ワークロード ID の基本的な理解。
- Azure OpenAI リソースを作成し、モデルをデプロイするためのアクセス許可。
Azure リソースを作成する
このチュートリアルは、いくつかの Azure リソースを作成することから始めます。
このチュートリアル用のリソース グループを作成します。
az group create \ --name MyResourceGroup \ --location eastus
次のコマンドを使用するか、AKS クイック スタートを参照して、AKS クラスターを作成します。 このチュートリアルでは、サービス接続とポッド定義を作成し、このクラスターにサンプル アプリケーションをデプロイします。
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 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>
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
az acr create コマンドを使用して Azure Container Registry (ACR) リソースを作成するか、このチュートリアルを参照してください。 レジストリは、AKS ポッド定義が使用するサンプル アプリケーションのコンテナー イメージをホストします。
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 コマンドを使用するか、このチュートリアルを参照して、ユーザー割り当てマネージド ID を作成します。 接続が作成されると、ユーザー割り当てマネージド ID は、AKS ワークロードのワークロード ID を有効にするために使用されます。
az identity create \ --resource-group MyResourceGroup \ --name MyIdentity
Service Connector を使用して AKS でサービス接続を作成する (プレビュー)
Azure portal または Azure CLI で、AKS クラスターと Azure OpenAI Service の間にサービス接続を作成します。
新しい接続を作成し、次の表の例を参照して設定を入力する手順については、AKS サービス接続のクイックスタートを参照してください。 その他の設定はすべて既定値のままにします。
[基本] タブ:
設定 値の例 説明 Kubernetes の名前空間 default Kubernetes 名前空間。 サービスの種類 OpenAI Service ターゲット サービスの種類。 接続名 openai_conn Service Connector によって提供される接続名を使用するか、独自の接続名を選択します。 サブスクリプション <MySubscription>
Azure OpenAI Service に使用されるサブスクリプション。 OpenAI <MyOpenAIService>
接続先のターゲット Azure OpenAI Service。 クライアントの種類 Python ターゲット サービスに接続するために使用するコード言語またはフレームワーク。 [認証] タブ
認証設定 値の例 説明 認証の種類 ワークロード ID Service Connector 認証の種類。 サブスクリプション <MySubscription>
ユーザー割り当てマネージド ID を含むサブスクリプション。 ユーザー割り当てマネージド ID <MyIdentity>
ワークロード ID を有効にするには、ユーザー割り当てマネージド ID が必要です。
接続が作成されたら、[サービス コネクタ] ペインでその詳細を表示できます。
サンプル アプリケーションを複製する
サンプル リポジトリをクローンします。
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
Azure OpenAI のリポジトリのサンプル フォルダーに移動します。
cd serviceconnector-aks-samples/azure-openai-workload-identity
app.py
ファイルの<MyModel>
プレースホルダーを、デプロイしたモデル名に置き換えます。
コンテナー イメージをビルドしてプッシュする
Azure CLI az acr build コマンドを使用して、イメージをビルドして ACR にプッシュします。
az acr build --registry <MyRegistry> --image sc-demo-openai-identity:latest ./
az acr repository list コマンドを使用して、ACR インスタンス内のイメージを表示します。
az acr repository list --name <MyRegistry> --output table
アプリケーションを実行し接続をテストする
プレースホルダーを
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 の [サービス コネクタ] ペインで確認できます。
kubectl apply
コマンドを使用してポッドをクラスターにデプロイします。これにより、AKS クラスターの既定の名前空間にsc-demo-openai-identity
という名前のポッドが作成されます。kubectl
がインストールされていない場合は、az aks install-cli コマンドを使用して、ローカルにインストールします。kubectl apply -f pod.yaml
kubectl
でポッドを表示して、デプロイが成功したことを確認します。kubectl get pod/sc-demo-openai-identity
kubectl
でログを表示して接続が確立されていることを確認します。kubectl logs pod/sc-demo-openai-identity
リソースをクリーンアップする
このチュートリアルで作成したリソースが不要になったら、リソース グループを削除してクリーンアップしてください。
az group delete \
--resource-group MyResourceGroup
次のステップ
サービス コネクタの概念と、それを使って AKS をサービスに接続する方法について詳しくは、次の記事をご覧ください。