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データストレージ。メインデータベース。システムの大部分のデータを保存
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で該当リソースが既に存在するか確認し、存在する場合はAzure Portalで削除してください(一部リソースはPurge Protectionがあるため、専用のaz cliコマンドで削除が必要な場合があります)
  • OpenAIリソースの作成に失敗し、quota不足のエラーが表示される
    • 該当Regionの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でテストしてください。

システム設定の変更

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