このチュートリアルでは、ワークロード 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 アカウント。 無料でアカウントを作成できます。
-
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
- コンテナー イメージと Kubernetes リソースを管理するための Docker と kubectl。
- コンテナーと AKS の基本的な理解。 AKS 用のアプリケーションの準備から開始します。
- Azure OpenAI リソースを作成し、モデルをデプロイするためのアクセス許可。
Azure OpenAI と AKS リソースを作成する
このチュートリアルは、いくつかの 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 リソースを作成します。 必要に応じて、詳細な手順についてはこのチュートリアルを参照してください。 Azure OpenAI は、AKS クラスターが接続するターゲット サービスです。
az cognitiveservices account create \ --resource-group MyResourceGroup \ --name MyOpenAI \ --___location eastus \ --kind OpenAI \ --sku s0 \ --custom-___domain myopenai \ --subscription <SubscriptionID>
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
コンテナー化されたサンプル アプリケーションを格納する Azure Container Registry (ACR) を作成します。 az acr create コマンドを使用するか、このチュートリアルを参照してください。
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
AKS から Azure OpenAI へのサービス接続を作成する
Azure portal または Azure CLI で、AKS クラスターと Azure OpenAI の間にサービス接続を作成します。
新しい接続を作成し、次の表の例を参照して設定を入力する手順については、AKS サービス接続のクイックスタートを参照してください。 その他の設定はすべて既定値のままにします。
[基本] タブ:
設定 値の例 説明 Kubernetes の名前空間 default Kubernetes 名前空間。 サービスの種類 OpenAI サービス ターゲット サービスの種類。 接続名 openai_conn Service Connector によって提供される接続名を使用するか、独自の接続名を選択します。 サブスクリプション 自分のサブスクリプション Azure OpenAI リソースを含む Azure サブスクリプション。 OpenAI MyOpenAI 接続先の Azure OpenAI リソース。 クライアントの種類 Python 接続構成のプログラミング言語またはフレームワーク。 [認証] タブ
認証設定 | 値の例 | 説明 |
---|---|---|
認証の種類 | ワークロード ID | アプリを Azure OpenAI に接続するための認証方法。 セキュリティを強化するために、ワークロード ID を使用することをお勧めします。 別の方法には、接続文字列とサービス プリンシパルが含まれており、資格情報の管理に関する考慮事項が必要です。 |
サブスクリプション | 自分のサブスクリプション | ユーザー割り当てマネージド ID を含むサブスクリプション。 |
ユーザー割り当てマネージド ID | myidentity | AKS クラスターのワークロード ID 認証を有効にするユーザー割り当てマネージド ID。 |
接続が作成されたら、[サービス コネクタ] ペインでその詳細を表示できます。
Python サンプル アプリケーションの複製
サンプル リポジトリをクローンします。
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
Azure OpenAI のリポジトリのサンプル フォルダーに移動します。
cd serviceconnector-aks-samples/azure-openai-workload-identity
<MyModel>
ファイルのapp.py
プレースホルダーを、デプロイしたモデル名に置き換えます。
コンテナー イメージをビルドして Azure Container Registry にプッシュする
Azure CLI az acr build コマンドを使用して、イメージをビルドしてコンテナー レジストリにプッシュします。
az acr build --registry myregistry --image sc-demo-openai-identity:latest ./
az acr repository list コマンドを使用して、コンテナー レジストリ内のイメージを表示します。
az acr repository list --name myregistry --output table
AKS から Azure OpenAI への接続をデプロイしてテストする
プレースホルダーを
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 ] ウィンドウにあります。
-
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