はじめに
デプロイメント
Azureへのデプロイ
Microsoft AzureにCaseBenderをデプロイする
概要
このガイドでは、Azure Container Appsとマネージドサービスを使用して、事前に構築されたDockerイメージでCaseBenderをAzureにデプロイする方法を説明します。
前提条件
- Azureアカウント
- Azure CLIがインストールされていること
- Dockerがインストールされていること
ステップ1: 初期設定
Azure CLIのインストールと設定
Copy
# Homebrewを使用
brew install azure-cli
# Azureにログイン
az login
# ACR用のDockerの設定
az acr login --name casebenderacr
プロジェクトの初期化
Copy
# 変数の設定
RESOURCE_GROUP="casebender-rg"
LOCATION="eastus"
# リソースグループの作成
az group create --name $RESOURCE_GROUP --location $LOCATION
# 必要なサービスの有効化
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.Storage
ステップ2: Azureインフラストラクチャの設定
ストレージアカウントの作成
Copy
# ストレージアカウントの作成
az storage account create \
--name casebenderstorage \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--sku Standard_LRS \
--encryption-services blob
# Blobコンテナの作成
az storage container create \
--name casebender \
--account-name casebenderstorage \
--auth-mode key \
--public-access off
# ストレージアカウントキーの取得
STORAGE_KEY=$(az storage account keys list \
--account-name casebenderstorage \
--resource-group $RESOURCE_GROUP \
--query '[0].value' -o tsv)
# ストレージアクセス用のマネージドIDの作成
az identity create \
--name casebender-storage-identity \
--resource-group $RESOURCE_GROUP
# マネージドIDの取得
IDENTITY_ID=$(az identity show \
--name casebender-storage-identity \
--resource-group $RESOURCE_GROUP \
--query id -o tsv)
# Storage Blob Data Contributorロールの割り当て
az role assignment create \
--assignee-object-id $(az identity show --name casebender-storage-identity --resource-group $RESOURCE_GROUP --query principalId -o tsv) \
--role "Storage Blob Data Contributor" \
--scope $(az storage account show --name casebenderstorage --resource-group $RESOURCE_GROUP --query id -o tsv)
Azure Database for PostgreSQLのセットアップ
Copy
# PostgreSQLサーバーの作成
az postgres flexible-server create \
--resource-group $RESOURCE_GROUP \
--name casebender-db \
--admin-user superadmin \
--admin-password <your-secure-password> \
--sku-name Standard_B2s \
--storage-size 32 \
--version 14
# データベースの作成
az postgres flexible-server db create \
--resource-group $RESOURCE_GROUP \
--server-name casebender-db \
--database-name casebender
Azure Cache for Redisのセットアップ
Copy
# Redisキャッシュの作成
az redis create \
--resource-group $RESOURCE_GROUP \
--name casebender-redis \
--sku Basic \
--vm-size c0 \
--location $LOCATION
ステップ3: コンテナレジストリの作成と設定
Copy
# Azure Container Registryの作成
az acr create \
--resource-group $RESOURCE_GROUP \
--name casebenderacr \
--sku Standard \
--admin-enabled true
# レジストリの認証情報の取得
ACR_USERNAME=$(az acr credential show --name casebenderacr --query username -o tsv)
ACR_PASSWORD=$(az acr credential show --name casebenderacr --query "passwords[0].value" -o tsv)
# CaseBenderイメージのプル
docker pull casebender/casebender:latest
docker pull casebender/workflow-processor:latest
docker pull casebender/misp-processor:latest
# ACR用のイメージのタグ付け
docker tag casebender/casebender:latest casebenderacr.azurecr.io/casebender/app:latest
docker tag casebender/workflow-processor:latest casebenderacr.azurecr.io/casebender/workflow-processor:latest
docker tag casebender/misp-processor:latest casebenderacr.azurecr.io/casebender/misp-processor:latest
# イメージをACRにプッシュ
docker push casebenderacr.azurecr.io/casebender/app:latest
docker push casebenderacr.azurecr.io/casebender/workflow-processor:latest
docker push casebenderacr.azurecr.io/casebender/misp-processor:latest
ステップ4: サービスのデプロイ
Container Apps環境の作成
Copy
# Container Apps環境の作成
az containerapp env create \
--name casebender-env \
--resource-group $RESOURCE_GROUP \
--location $LOCATION
# メインアプリケーションの作成
az containerapp create \
--name casebender-app \
--resource-group $RESOURCE_GROUP \
--environment casebender-env \
--image casebenderacr.azurecr.io/casebender/app:latest \
--target-port 3000 \
--ingress external \
--registry-server casebenderacr.azurecr.io \
--registry-username $ACR_USERNAME \
--registry-password $ACR_PASSWORD \
--user-assigned-identity $IDENTITY_ID \
--env-vars \
AUTH_SECRET=<your-auth-secret> \
AUTH_SALT=<your-auth-salt> \
POSTGRES_PRISMA_URL="postgresql://superadmin:<password>@casebender-db.postgres.database.azure.com:5432/casebender" \
REDIS_URL="redis://casebender-redis.redis.cache.windows.net:6380?ssl=true&password=<redis-key>" \
AZURE_STORAGE_ACCOUNT="casebenderstorage" \
AZURE_STORAGE_CONTAINER="casebender" \
AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=casebenderstorage;AccountKey=${STORAGE_KEY};EndpointSuffix=core.windows.net"
# ワークフロープロセッサーの作成
az containerapp create \
--name workflow-processor \
--resource-group $RESOURCE_GROUP \
--environment casebender-env \
--image casebenderacr.azurecr.io/casebender/workflow-processor:latest \
--registry-server casebenderacr.azurecr.io \
--registry-username $ACR_USERNAME \
--registry-password $ACR_PASSWORD \
--min-replicas 1 \
--max-replicas 1 \
--env-vars \
POSTGRES_PRISMA_URL="postgresql://superadmin:<password>@casebender-db.postgres.database.azure.com:5432/casebender" \
REDIS_URL="redis://casebender-redis.redis.cache.windows.net:6380?ssl=true&password=<redis-key>"
# MISPプロセッサーの作成
az containerapp create \
--name misp-processor \
--resource-group $RESOURCE_GROUP \
--environment casebender-env \
--image casebenderacr.azurecr.io/casebender/misp-processor:latest \
--registry-server casebenderacr.azurecr.io \
--registry-username $ACR_USERNAME \
--registry-password $ACR_PASSWORD \
--min-replicas 1 \
--max-replicas 1 \
--env-vars \
POSTGRES_PRISMA_URL="postgresql://superadmin:<password>@casebender-db.postgres.database.azure.com:5432/casebender" \
REDIS_URL="redis://casebender-redis.redis.cache.windows.net:6380?ssl=true&password=<redis-key>"
ステップ5: Azure Front Doorの設定
Copy
# Front Doorプロファイルの作成
az afd profile create \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP \
--sku Standard_AzureFrontDoor
# エンドポイントの作成
az afd endpoint create \
--endpoint-name casebender \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP
# オリジングループの作成
az afd origin-group create \
--origin-group-name casebender-origin-group \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP \
--probe-path "/" \
--probe-protocol Http \
--probe-request-type GET
# オリジンの追加
az afd origin create \
--origin-group-name casebender-origin-group \
--origin-name casebender-origin \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP \
--host-name <your-container-app-url> \
--origin-host-header <your-container-app-url> \
--priority 1 \
--weight 1000 \
--enabled-state Enabled
ステップ6: カスタムドメインの設定(オプション)
Copy
# Front Doorにカスタムドメインを追加
az afd custom-domain create \
--custom-domain-name casebender-domain \
--host-name your-domain.com \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP \
--minimum-tls-version TLS12
# HTTPSの有効化
az afd custom-domain enable-https \
--custom-domain-name casebender-domain \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP
モニタリングとメンテナンス
Application Insightsの設定
Copy
# Application Insightsの作成
az monitor app-insights component create \
--app casebender-insights \
--location $LOCATION \
--resource-group $RESOURCE_GROUP \
--application-type web
# インストルメンテーションキーの取得
az monitor app-insights component show \
--app casebender-insights \
--resource-group $RESOURCE_GROUP \
--query instrumentationKey \
--output tsv
アラートの設定
Copy
# アクショングループの作成
az monitor action-group create \
--name casebender-alerts \
--resource-group $RESOURCE_GROUP \
--action email admin email@yourdomain.com
# アラートルールの作成
az monitor metrics alert create \
--name "high-cpu-usage" \
--resource-group $RESOURCE_GROUP \
--scopes <container-app-resource-id> \
--condition "avg CPU > 80" \
--window-size 5m \
--evaluation-frequency 1m \
--action <action-group-id>
ログの表示
Copy
# コンテナアプリのログの表示
az containerapp logs show \
--name casebender-app \
--resource-group $RESOURCE_GROUP \
--follow
スケーリング設定
Copy
# スケーリングルールの設定
az containerapp update \
--name casebender-app \
--resource-group $RESOURCE_GROUP \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name http-rule \
--scale-rule-type http \
--scale-rule-http-concurrency 50
バックアップと災害復旧
データベースバックアップの設定
Copy
# 自動バックアップの有効化
az postgres flexible-server update \
--resource-group $RESOURCE_GROUP \
--name casebender-db \
--backup-retention 7
地理レプリケーションの設定
Copy
# セカンダリリージョンリソースの作成
az postgres flexible-server replica create \
--name casebender-db-secondary \
--source-server casebender-db \
--resource-group $RESOURCE_GROUP \
--location westus
セキュリティのベストプラクティス
- すべてのサービスでAzure Defenderを有効化
- Azure Private Linkの実装
- マネージドIDの使用
- 定期的なセキュリティ評価
- 診断ログの有効化
コスト最適化
- Container Appsの消費プランを使用
- 自動スケーリングルールの実装
- 適切なサービスティアの選択
- 使用パターンのモニタリング
- Azure Reserved Instancesの使用
次のステップ
- Azure DevOpsでCI/CDを設定
- 包括的なモニタリングの実装
- 災害復旧の設定
- セキュリティコンプライアンスの確認
このページの内容
- 概要
- 前提条件
- ステップ1: 初期設定
- Azure CLIのインストールと設定
- プロジェクトの初期化
- ステップ2: Azureインフラストラクチャの設定
- ストレージアカウントの作成
- Azure Database for PostgreSQLのセットアップ
- Azure Cache for Redisのセットアップ
- ステップ3: コンテナレジストリの作成と設定
- ステップ4: サービスのデプロイ
- Container Apps環境の作成
- ステップ5: Azure Front Doorの設定
- ステップ6: カスタムドメインの設定(オプション)
- モニタリングとメンテナンス
- Application Insightsの設定
- アラートの設定
- ログの表示
- スケーリング設定
- バックアップと災害復旧
- データベースバックアップの設定
- 地理レプリケーションの設定
- セキュリティのベストプラクティス
- コスト最適化
- 次のステップ
アシスタント
Responses are generated using AI and may contain mistakes.