Skip to main content

Azureでのデプロイ

デプロイ前の準備

提供が必要なリソース

  • 製品デプロイ専用の新しいサブスクリプションを用意し、そのサブスクリプションでOpenAI関連リソースの作成が可能であることを確認してください。
  • Azure ADアカウント。このアカウントは該当サブスクリプションのOwner権限を持っている必要があります。
    • 既存のAADアカウントをゲストとしてテナントに追加し権限を付与することも、デプロイ専用のAADアカウントを新規作成することも可能です。
    • このアカウントはAADアプリ登録の作成・構成が可能である必要があります(例:Application Developerロールの付与)。

インストールが必要なツール

習得しておくべき知識(推奨)

製品デプロイアーキテクチャおよびリソース一覧

Terraformスクリプトでは2種類のデプロイオプションを提供しています。必要に応じて選択してください。

標準デプロイアーキテクチャ

Private Endpointデプロイアーキテクチャ。Private Endpoint/Vnetを利用して内部リソースのネットワーク分離を実現し、セキュリティをさらに強化します。

tip

Private Endpointを利用する場合、基本的な従量課金に加え、追加のネットワークトラフィック料金が発生します。

各コンポーネントの用途説明

種類カスタム名用途説明
Azure Front DoorCDN(オプション)コンテンツ配信ネットワーク。静的リソースのアクセスを高速化
Azure Front DoorAPI Acceleration(オプション)APIアクセラレーション。APIアクセスを高速化
API ManagementAPI EndpointAPI管理エンドポイント。APIの管理用
App ServiceAPI ServiceAPIサービス。APIリクエストの処理用
App ServiceJob Serviceジョブサービス。高負荷タスクや定期タスクの実行用
Azure OpenAI ServiceLLM-Primaryメイン大規模言語モデル。Agent Q&Aの主モデル(例:gpt-4o)
Azure OpenAI ServiceLLM-Secondaryサブ大規模言語モデル。ドキュメント処理の補助モデル(例:gpt-4o-mini)
Azure OpenAI ServiceEmbeddingベクトル埋め込み。ベクトルデータ処理用
Azure OpenAI ServiceText to Imageテキスト画像生成。テキストから画像生成タスク用
Azure OpenAI ServiceWhisper音声認識。音声認識タスク用
Azure AI Document IntelligenceDocument OCRドキュメントOCR認識。ドキュメントOCRタスク用
Azure AI servicesDocument Translateドキュメント翻訳。ドキュメント翻訳タスク用
Azure SQL DatabaseDataデータストレージ。メインDB。システムの大部分のデータを格納
Azure Database for PostgreSQLIndexインデックスDB。主にドキュメント関連のインデックスデータを格納
Azure Cache for RedisCacheキャッシュサービス。データキャッシュ用
Storage AccountsFilesファイルストレージ。ユーザーアップロードファイルの保存用
Key Vault-キー管理。キーの保存用
Azure Monitor-(オプション)リソース監視サービス。リソースのメトリクス収集・分析
Application Insights-(オプション)アプリ監視サービス。アプリパフォーマンス監視・問題診断用
Vnet/Subnet-(オプション)Azureリソースの論理分離ネットワーク・サブネット定義
Private Endpoint-(オプション)プライベートIPでAzureサービスに安全に接続
Private DNS Zone-(オプション)プライベートDNS。サービスのFQDNをプライベートIPに解決
Managed Identity-(オプション)マネージドID。リソース間通信の認証情報
Public IP-(オプション)パブリックIPアドレス。Private Endpointデプロイ時、Standard tierのAPI Managementに必要
Network Security Group-(オプション)ネットワークセキュリティグループ。リソースのネットワークアクセス制御用

参考構成

tip

上記構成は参考用です。実際の負荷状況に応じて調整してください。

製品デプロイの実施

デプロイフロー

  • デプロイ実行
    • AADアプリ登録の作成
    • デプロイパッケージの準備
    • Azureアカウントへのログイン、サブスクリプション切替
    • デプロイの実行
    • AADアプリ登録の更新
  • リソースパッケージのアップロード、システム起動
    • フロントエンドデプロイパッケージ、フォントパッケージ、アイコンリソースのインストール
    • ライセンスのインストール
    • システム起動、正常起動の確認
  • システムチェック
    • 管理者によるシステムログイン
    • システム機能の正常動作テスト
  • 設定の最適化
    • システム設定の変更
    • Agent設定
    • スペース設定
    • ドキュメントアップロードのテスト

Terraformデプロイ

AADアプリ登録の作成

Azure Entra IDでAADアプリ登録を作成し、client_idを取得します。

命名規則:appreg-[app-name]-[environment]

例:appreg-serviceme-trial

デプロイパッケージの準備

tip

最新のデプロイパッケージ(Terraformデプロイパッケージ、フォントパッケージ、アイコンリソース、Webフロントエンドデプロイパッケージ、モバイルデプロイパッケージ、ブラウザ拡張パッケージ)は製品チームにお問い合わせください。

Terraformデプロイパッケージ内のREADME.mdファイルを参照し、記載の手順に従ってvariables.tfファイルの各パラメータを設定してください。

Private Endpoint機能を有効化する場合は、variables.tfファイルのdeploy_private_network変数をtrueに設定してください。VnetおよびsubnetのIPアドレス設定はnetwork.tfファイルで行ってください。

enable_public_network_access変数について:

  • この変数はAPIM以外の全リソースのパブリックアクセス権限を制御します
  • すべてのデプロイが完了した後にこのオプションをfalseに設定することを推奨します
  • 早期に無効化すると、Terraformスクリプトの正常実行に影響する可能性があります
  • 一度無効化すると、vnet外からkeyvaultやデータベースなどのリソースにアクセスできなくなります。VPN Gatewayやジャンプサーバーのデプロイが必要です

Azureアカウントへのログイン、サブスクリプション切替

デプロイパッケージの作業ディレクトリでpowershellを開き、以下のコマンドでAzureにログインします。TENANT_IDはお客様提供のテナントIDです。

Global Cloud ログインコマンド

az login --tenant TENANT_ID

Global Cloud以外の場合は--cloudパラメータを指定してください。例:

China Cloud ログインコマンド

az login --tenant TENANT_ID --cloud AzureChinaCloud

サブスクリプションIDの設定。[subscriptionId]はお客様提供のサブスクリプションIDです。

az account set --subscription "[subscriptionId]"

現在のサブスクリプションを確認し、正しいサブスクリプションにログインしていることを確認します。

az account show

デプロイの実行

まず、これから実行される変更内容が期待通りか確認します。

terraform plan
+ 新規リソース追加
- リソース削除
~ リソース更新

問題なければ、正式に変更を適用します。Terraformは再度変更内容をチェック・出力しますので、内容を確認後yesと入力して確定してください。

terraform apply

デプロイ完了までお待ちください(約20~60分、APIMのデプロイは時間がかかります)。

エラーがなければ、Terraformは作成されたリソース数を表示し、デプロイ成功となります。

エラーが発生した場合は、エラーメッセージに従って原因を調査してください。よくある問題は以下の通りです:

  • 実行中にnetwork errorやrequest timeoutなどのエラーが発生
    • Terraform applyを再実行することで解決する場合が多いです
  • 実行中にResource already existsなどのエラーが発生
    • Azure Portalで該当リソースが既に存在するか確認し、存在する場合はAzure Portalで削除してください(一部リソースはPurge Protectionが有効なため、専用のaz cliコマンドで削除が必要な場合があります)
  • OpenAIリソース作成失敗、quota不足のエラー
    • OpenAIリソースの該当リージョンでのクォータが十分か確認し、不足している場合は他リージョンを利用してください

AADアプリ登録の更新

APIMのURLをAADアプリ登録に追加します(ルール:$APIM_GATEWAY_URL + "/"、例:https://xxx-apim.azure-api.net/ )。access token、ID tokenのチェックを忘れずに。

リソースパッケージのアップロード、システム起動

フロントエンドデプロイパッケージ、フォントパッケージ、アイコンリソースのインストール

以下のリソースをAzure Storage Accountの対応するコンテナにアップロードします。Azure Storage Explorerまたはaz cliコマンドでアップロード可能です。

  • フォントパッケージをbackend-core-fontsコンテナにアップロード
  • アイコンリソースをiconsコンテナにアップロード
  • Webフロントエンドデプロイパッケージをstatic-siteコンテナにアップロード(既存のconfig.jsファイルは上書きしないでください)
  • ブラウザ拡張デプロイパッケージをextensionコンテナにアップロード(存在しない場合は手動で作成)
  • モバイルデプロイが必要な場合は、static-siteコンテナ内にmobileフォルダを作成し、モバイルデプロイパッケージのconfig.jsを設定後、そのフォルダにアップロード

対応するPowerShellコマンド例(バージョン3.2_u4以前は、スクリプト実行ユーザーにStorageアクセス権限を付与する必要があります)

$Env:AZCOPY_AUTO_LOGIN_TYPE="AZCLI" 

azcopy copy 'https://stservicemedeployassets.blob.core.windows.net/icons' 'https://xxx.blob.core.windows.net/icons' --recursive=true --overwrite=ifSourceNewer

azcopy copy 'https://stservicemedeployassets.blob.core.windows.net/frontend/3.2.41/*' 'https://xxx.blob.core.windows.net/static-site' --recursive=true --overwrite=ifSourceNewer --exclude-path 'config.js'

azcopy copy 'https://stservicemedeployassets.blob.core.windows.net/fonts' 'https://xxx.blob.core.windows.net/backend-core-fonts' --recursive=true --overwrite=ifSourceNewer

ライセンスのインストール

ライセンスファイルをAzure Storage Accountのstatic-siteコンテナにアップロードします。

システム起動とデプロイ状態の検証

  1. 設定を変更してアプリサービスを有効化

    • variables.tfファイルを開く
    • enable_app_service変数の値をtrueに更新
  2. 設定変更を適用

    • terraform applyコマンドを実行
    • デプロイ完了まで待機
  3. サービス稼働状況の確認

    • Azure Portalにログイン
    • 以下サービスのMonitorログをそれぞれ確認:
      • api_app_service
      • scheduler_app_service
      • pythoncore_app_service
    • すべてのサービスが正常に起動していることを確認
tip

サービス起動に異常がある場合は、エラーログをよく確認し、具体的なエラー内容に応じて調査・修正してください。

tip

Private Endpointデプロイ環境の場合、以下の点にご注意ください:

  1. デプロイ完了後、パブリックアクセスを制限したい場合はenable_public_network_access変数をfalseに設定してください
  2. この設定により、APIM以外の全リソースのパブリックアクセスが無効化され、システムのセキュリティが向上します
  3. パブリックアクセスを無効化した場合の注意点:
    • TerraformからkeyvaultやStorageリソースに直接アクセスできなくなります
    • そのため、以降のterraform apply操作が失敗する可能性があります
    • 解決策:
      • 案1:一時的にパブリックアクセスを有効化し、terraform apply実行後に再度無効化
      • 案2:ジャンプサーバーやVPN Gateway経由でvnetに接続しスクリプトを実行

システムチェック

管理者によるシステムログイン

APIMのURLからシステムにログインします。デフォルト管理者アカウントはservicemeadmin、デフォルトパスワードはデプロイパッケージのREADME.mdファイルに記載されています。

システム機能の正常動作テスト

設定の最適化

Agent設定

AgentのQ&Aの精度や回答内容の形式は、Promptや関連パラメータの影響を大きく受けます。

以下のリンクではAgent設定のサンプルを提供しています。お客様のシナリオに合わせてカスタマイズしてください。

Agentを最終ユーザーに提供する前に、十分なテストを行い、関連スキルが正しく呼び出されること、Q&Aの精度や回答内容の形式がユーザー要件を満たしていることを確認してください。

システム設定ベストプラクティスを参照

スペース設定

スペースやドキュメント属性の設定は、ドキュメントの前処理段階での分割戦略に影響します。状況に応じて最適な設定を選択し、より高いドキュメント精度を目指してください。

tip

設定を変更した場合は、関連ドキュメントのインデックスを再生成してください。そうしないと設定は新規アップロードドキュメントにのみ適用されます。

システム設定ベストプラクティスを参照

ドキュメントアップロードのテスト

サンプルドキュメントやお客様提供のドキュメントをシステムにアップロードし、前処理完了後にAgent Q&Aでテストしてください。

システム設定の変更

必要に応じてシステムのロゴやタイトルを変更してください。