Iniziare
Distribuzione
Gestione degli Avvisi
Gestione dei Casi
Gestione delle Attività
Verifiche
Distribuzione
Distribuzione su Azure
Distribuisci CaseBender su Microsoft Azure
Panoramica
Questa guida ti accompagna attraverso la distribuzione di CaseBender su Azure utilizzando immagini Docker precostruite con Azure Container Apps e servizi gestiti.
Prerequisiti
- Account Azure
- Azure CLI installato
- Docker installato
Passo 1: Configurazione Iniziale
Installa e Configura Azure CLI
Copy
# Usando Homebrew
brew install azure-cli
# Accedi ad Azure
az login
# Configura Docker per ACR
az acr login --name casebenderacr
Inizializza Progetto
Copy
# Imposta variabili
RESOURCE_GROUP="casebender-rg"
LOCATION="eastus"
# Crea gruppo di risorse
az group create --name $RESOURCE_GROUP --location $LOCATION
# Abilita servizi richiesti
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.Storage
Passo 2: Configura l’Infrastruttura Azure
Crea Account di Storage
Copy
# Crea account di storage
az storage account create \
--name casebenderstorage \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--sku Standard_LRS \
--encryption-services blob
# Crea container blob
az storage container create \
--name casebender \
--account-name casebenderstorage \
--auth-mode key \
--public-access off
# Ottieni chiave account di storage
STORAGE_KEY=$(az storage account keys list \
--account-name casebenderstorage \
--resource-group $RESOURCE_GROUP \
--query '[0].value' -o tsv)
# Crea identità gestita per accesso storage
az identity create \
--name casebender-storage-identity \
--resource-group $RESOURCE_GROUP
# Ottieni ID identità gestita
IDENTITY_ID=$(az identity show \
--name casebender-storage-identity \
--resource-group $RESOURCE_GROUP \
--query id -o tsv)
# Assegna ruolo 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)
Configura Azure Database per PostgreSQL
Copy
# Crea server 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
# Crea database
az postgres flexible-server db create \
--resource-group $RESOURCE_GROUP \
--server-name casebender-db \
--database-name casebender
Configura Azure Cache per Redis
Copy
# Crea cache Redis
az redis create \
--resource-group $RESOURCE_GROUP \
--name casebender-redis \
--sku Basic \
--vm-size c0 \
--location $LOCATION
Passo 3: Crea e Configura Container Registry
Copy
# Crea Azure Container Registry
az acr create \
--resource-group $RESOURCE_GROUP \
--name casebenderacr \
--sku Standard \
--admin-enabled true
# Ottieni credenziali registry
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)
# Scarica immagini CaseBender
docker pull casebender/casebender:latest
docker pull casebender/workflow-processor:latest
docker pull casebender/misp-processor:latest
# Tagga immagini per 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
# Carica immagini su 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
Passo 4: Distribuisci Servizi
Crea Ambiente Container Apps
Copy
# Crea ambiente Container Apps
az containerapp env create \
--name casebender-env \
--resource-group $RESOURCE_GROUP \
--location $LOCATION
# Crea applicazione principale
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"
# Crea processore workflow
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>"
# Crea processore 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>"
Passo 5: Configura Azure Front Door
Copy
# Crea profilo Front Door
az afd profile create \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP \
--sku Standard_AzureFrontDoor
# Crea endpoint
az afd endpoint create \
--endpoint-name casebender \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP
# Crea gruppo di origine
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
# Aggiungi origine
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
Passo 6: Configura Dominio Personalizzato (Opzionale)
Copy
# Aggiungi dominio personalizzato a 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
# Abilita HTTPS
az afd custom-domain enable-https \
--custom-domain-name casebender-domain \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP
Monitoraggio e Manutenzione
Configura Application Insights
Copy
# Crea Application Insights
az monitor app-insights component create \
--app casebender-insights \
--location $LOCATION \
--resource-group $RESOURCE_GROUP \
--application-type web
# Ottieni chiave di strumentazione
az monitor app-insights component show \
--app casebender-insights \
--resource-group $RESOURCE_GROUP \
--query instrumentationKey \
--output tsv
Configura Avvisi
Copy
# Crea gruppo di azioni
az monitor action-group create \
--name casebender-alerts \
--resource-group $RESOURCE_GROUP \
--action email admin email@yourdomain.com
# Crea regola di avviso
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>
Visualizza Log
Copy
# Visualizza log container app
az containerapp logs show \
--name casebender-app \
--resource-group $RESOURCE_GROUP \
--follow
Configurazione Scalabilità
Copy
# Configura regole di scalabilità
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
Backup e Disaster Recovery
Configura Backup Database
Copy
# Abilita backup automatici
az postgres flexible-server update \
--resource-group $RESOURCE_GROUP \
--name casebender-db \
--backup-retention 7
Configura Geo-Replicazione
Copy
# Crea risorse regione secondaria
az postgres flexible-server replica create \
--name casebender-db-secondary \
--source-server casebender-db \
--resource-group $RESOURCE_GROUP \
--location westus
Migliori Pratiche di Sicurezza
- Abilita Azure Defender per tutti i servizi
- Implementa Azure Private Link
- Usa Identità Gestite
- Valutazioni di sicurezza regolari
- Abilita logging diagnostico
Ottimizzazione dei Costi
- Usa piano consumption per Container Apps
- Implementa regole di auto-scaling
- Scegli livelli di servizio appropriati
- Monitora pattern di utilizzo
- Usa Istanze Riservate Azure
Prossimi Passi
- Configura CI/CD con Azure DevOps
- Implementa monitoraggio completo
- Configura disaster recovery
- Rivedi conformità di sicurezza
In questa pagina
- Panoramica
- Prerequisiti
- Passo 1: Configurazione Iniziale
- Installa e Configura Azure CLI
- Inizializza Progetto
- Passo 2: Configura l’Infrastruttura Azure
- Crea Account di Storage
- Configura Azure Database per PostgreSQL
- Configura Azure Cache per Redis
- Passo 3: Crea e Configura Container Registry
- Passo 4: Distribuisci Servizi
- Crea Ambiente Container Apps
- Passo 5: Configura Azure Front Door
- Passo 6: Configura Dominio Personalizzato (Opzionale)
- Monitoraggio e Manutenzione
- Configura Application Insights
- Configura Avvisi
- Visualizza Log
- Configurazione Scalabilità
- Backup e Disaster Recovery
- Configura Backup Database
- Configura Geo-Replicazione
- Migliori Pratiche di Sicurezza
- Ottimizzazione dei Costi
- Prossimi Passi
Assistente
Responses are generated using AI and may contain mistakes.