クイックスタート: Azure Resource Manager または Bicep テンプレートを使用して Dapr アプリケーションを Azure Container Apps にデプロイする
Dapr (分散型アプリケーション ランタイム) は、開発者が回復性がある信頼性の高いマイクロサービスを構築するのに役立ちます。 このクイック スタートでは、Azure Blob Storage 状態ストアに格納されたメッセージを生成して使用する 2 つのコンテナー アプリと共に Dapr サイドカーを実行できるようにします。 Azure Resource Manager または Bicep テンプレートのいずれかを使用して、次の作業を実施します。
- Azure CLI コマンドを実行して、マイクロサービスの実行に必要なものをすべて起動するテンプレートをデプロイします。
- Azure portal で 2 つのマイクロサービス間の相互作用を確認します。
このクイックスタートでは、オープンソースの Dapr Hello World クイックスタートでデプロイするアプリケーションを再現しています。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウントが必要です。 まだアカウントがない場合は、無料でアカウントを作成することができます。
- GitHub アカウント。 お持ちでない場合は、無料でサインアップしてください。
セットアップ
CLI から Azure にサインインするには、次のコマンドを実行し、プロンプトに従って認証プロセスを完了します。
az login
最新バージョンの CLI を実行していることを確認するには、upgrade コマンドを実行します。
az upgrade
次に、CLI 用の Azure Container Apps 拡張機能をインストールまたは更新します。
Azure CLI で az containerapp
コマンドを実行したとき、または Azure PowerShell で Az.App
モジュールからコマンドレットを実行したときに、パラメーターの不足に関するエラーが表示される場合は、最新バージョンの Azure Container Apps 拡張機能がインストールされていることを確認してください。
az extension add --name containerapp --upgrade
Note
2024 年 5 月以降、Azure CLI 拡張機能では、既定でプレビュー機能が有効になりません。 Container Apps のプレビュー機能にアクセスするには、--allow-preview true
を使用して Container Apps 拡張機能をインストールします。
az extension add --name containerapp --upgrade --allow-preview true
最新の拡張機能またはモジュールがインストールされたので、Microsoft.App
および Microsoft.OperationalInsights
名前空間を登録します。
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
環境変数を設定する
以下の環境変数を設定します。 <PLACEHOLDERS>
は、実際の値に置き換えます:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Azure リソース グループの作成
コンテナー アプリのデプロイに関連するサービスを整理するためのリソース グループを作成します。
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
GitHub リポジトリを準備する
ソリューションのデプロイに使う ARM と Bicep のテンプレートを保持しているリポジトリに移動します。
リポジトリの上部にある [フォーク] ボタンを選んで、リポジトリをアカウントにフォークします。
これで、フォークを複製してローカルで作業できるようになりました。
次の git コマンドを使って、フォークしたリポジトリを acadapr-templates ディレクトリにクローンします。
git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates
デプロイ
acadapr-templates ディレクトリに移動して、次のコマンドを実行します。
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.json \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
警告 (BCP081) が表示される場合があります。 この警告は、アプリケーションの正常なデプロイには影響しません。
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.bicep \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
このコマンドは、以下をデプロイします:
- Hello World Dapr ソリューションをホストするための Container Apps 環境と関連付けられた Log Analytics ワークスペース。
- Dapr 分散トレース用の Application Insights インスタンス。
- Dapr が有効にされ、次のものを使用して構成された、
targetPort: 3000
で実行されるnodeapp
アプリ サーバー。"appId": "nodeapp"
"appPort": 3000
- ストレージ データ投稿者ロールの割り当てを介して Azure Blob Storage にアクセスできるユーザー割り当て ID
nodeapp
によって状態の格納に使用するようにスコープが設定された"type": "state.azure.blobstorage"
の Dapr コンポーネント。- Dapr サービスの呼び出しを使用して
nodeapp
サービスを呼び出す Dapr 対応ヘッドレスpythonapp
。 - Blob storage への接続を確立するために Dapr コンポーネントが使用する Node.js アプリに対する Microsoft Entra ID ロールの割り当て。
結果を確認する
状態が正常に永続化されたことを確認する
Azure Storage アカウントのデータを表示すると、サービスが正常に動作していることを確認できます。
ブラウザーで Azure portal を開きます。
リソース グループ内で新しく作成したストレージ アカウントに移動します。
左側のメニューから [データ ストレージ]>[コンテナー] を選択します。
作成したコンテナーを選びます。
コンテナーに
order
という名前のファイルが表示されていることを確認します。ファイルを選択します。
[編集] タブを選択します。
[更新] ボタンを選択して、更新を確認します。
ログの表示
コンテナー アプリからのログは、Log Analytics ワークスペースの ContainerAppConsoleLogs_CL
カスタム テーブルに格納されます。 Azure portal または CLI を使用してログを表示できます。 テーブルがワークスペースに表示されるまでに、最初は少し遅延が発生することがあります。
Bash または PowerShell でログを表示するには、次のコマンドを使用します。
LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`
az monitor log-analytics query \
--workspace "$LOG_ANALYTICS_WORKSPACE_CLIENT_ID" \
--analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | take 5" \
--out table
次の出力は、コマンドから返される応答の種類を示しています。
ContainerAppName_s Log_s TableName TimeGenerated
-------------------- ------------------------------- ------------- ------------------------
nodeapp Got a new order! Order ID: 61 PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Got a new order! Order ID: 62 PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Got a new order! Order ID: 63 PrimaryResult 2021-10-22T22:45:44.618Z
リソースをクリーンアップする
pythonapp
は、構成された状態ストアに永続化されるメッセージを使用して nodeapp
を継続的に呼び出します。そのため、継続的な課金対象の操作を回避するために、これらのクリーンアップ手順を完了することが重要です。
このチュートリアルの一環として作成したリソースを削除したい場合は、次のコマンドを実行します。
az group delete \
--resource-group $RESOURCE_GROUP
ヒント
問題がある場合は、 GitHub の Azure Container Apps リポジトリでイシューを開いて、お知らせください。