Skip to main content

Azureでのデプロイ

デプロイ前の準備

提供が必要なリソース

  • 製品デプロイ専用の新しいサブスクリプションを用意し、そのサブスクリプションでOpenAI関連リソースの作成が可能であることを確認してください。
  • Azure ADアカウント。このアカウントは該当サブスクリプションにContributor以上の権限を持っている必要があります。
    • 既存の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データストレージ。メインデータベース。システムの大部分のデータを格納
Azure Database for PostgreSQLIndexインデックスデータベース。主にドキュメント関連のインデックスデータを格納
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にパブリックIPが必要
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で該当リソースが既に存在していないか確認し、存在する場合は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を設定後、そのフォルダにアップロード

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

ライセンスファイルを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でテストしてください。

システム設定の変更

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