Modello di risorse dell'applicazione di Service Fabric
Sono disponibili più opzioni per la distribuzione di applicazioni di Azure Service Fabric nel cluster di Service Fabric. È consigliabile usare Azure Resource Manager. Se si usa Resource Manager, è possibile descrivere applicazioni e servizi in JSON e quindi distribuirli nello stesso modello di Resource Manager del cluster. A differenza dell'uso di PowerShell o dell'interfaccia della riga di comando di Azure per distribuire e gestire le applicazioni, se si usa Resource Manager, non è necessario attendere che il cluster sia pronto; la registrazione, il provisioning e la distribuzione dell'applicazione possono essere eseguite in un unico passaggio. L'uso di Resource Manager è il modo migliore per gestire il ciclo di vita dell'applicazione nel cluster. Per altre informazioni, vedere Procedure consigliate: Infrastruttura come codice.
La gestione delle applicazioni come risorse in Resource Manager consente di ottenere miglioramenti in queste aree:
- Audit trail: Resource Manager controlla ogni operazione e mantiene un log attività dettagliato. Un log attività consente di tracciare le modifiche apportate alle applicazioni e al cluster.
- Controllo degli accessi in base al ruolo: è possibile gestire l'accesso ai cluster e alle applicazioni distribuite nel cluster usando lo stesso modello di Resource Manager.
- Efficienza di gestione: l'uso di Resource Manager offre un'unica posizione (il portale di Azure) per la gestione del cluster e delle distribuzioni critiche delle applicazioni.
In questo documento si apprenderà come:
- Distribuire le risorse dell'applicazione usando Resource Manager.
- Aggiornare le risorse dell'applicazione usando Resource Manager.
- Eliminare le risorse dell'applicazione.
Distribuire le risorse dell'applicazione
I passaggi generali da eseguire per distribuire un'applicazione e i relativi servizi usando il modello di risorse dell'applicazione Resource Manager sono:
- Creare il pacchetto del codice dell'applicazione.
- Caricare il pacchetto.
- Fare riferimento al percorso del pacchetto in un modello di Resource Manager come risorsa dell'applicazione.
Per altre informazioni, vedere Creare un pacchetto di un'applicazione.
Creare quindi un modello di Resource Manager, aggiornare il file dei parametri con i dettagli dell'applicazione e distribuire il modello nel cluster di Service Fabric. Esplorare gli esempi.
Creare un account di archiviazione
Per distribuire un'applicazione da un modello di Resource Manager, è necessario disporre di un account di archiviazione. L'account di archiviazione viene usato per preparare l'immagine dell'applicazione.
È possibile riutilizzare un account di archiviazione esistente oppure creare un nuovo account di archiviazione per la gestione temporanea delle applicazioni. Se si usa un account di archiviazione esistente, è possibile ignorare questo passaggio.
Configurare l'account di archiviazione
Dopo aver creato l'account di archiviazione, si crea un contenitore BLOB in cui è possibile preparare le applicazioni. Nella portale di Azure passare all'account Archiviazione di Azure in cui archiviare le applicazioni. Selezionare BLOB>Aggiungi contenitore.
Le risorse nel cluster possono essere protette impostando il livello di accesso pubblico su privato. È possibile concedere l'accesso in diversi modi:
- Concedere l'accesso ai dati blob e code di Azure usando il controllo degli accessi in base al ruolo di Azure nel portale di Azure.
- Delegare l'accesso usando una firma di accesso condiviso.
L'esempio riportato nello screenshot seguente usa l'accesso in lettura anonimo per i BLOB.
Preparare l'applicazione nell'account di archiviazione
Prima di poter distribuire un'applicazione, è necessario preparare l'applicazione nell'archiviazione BLOB. In questa esercitazione viene creato manualmente il pacchetto dell'applicazione. Tenere presente che questo passaggio può essere automatizzato. Per altre informazioni, vedere Creare un pacchetto di un'applicazione.
In questa esercitazione viene usata l'applicazione di esempio Voting.
In Visual Studio fare clic con il pulsante destro del mouse sul progetto Voting e quindi scegliere Pacchetto.
Passare alla directory .\service-fabric-dotnet-quickstart\Voting\pkg\Debug . Comprimere il contenuto in un file denominato Voting.zip. Il file ApplicationManifest.xml deve trovarsi nella radice del file ZIP.
Rinominare il file per modificare l'estensione da .zip a sfpkg.
Nel portale di Azure, nel contenitore delle app per l'account di archiviazione selezionare Carica e quindi caricare Voting.sfpkg.
A questo punto, l'applicazione è ora in fase di gestione temporanea ed è possibile creare il modello di Resource Manager per distribuire l'applicazione.
Creare il modello di Azure Resource Manager
L'applicazione di esempio contiene modelli di Azure Resource Manager che è possibile usare per distribuire l'applicazione. I nomi dei file modello sono UserApp.json e UserApp.Parameters.json.
Nota
Il file UserApp.Parameters.json deve essere aggiornato con il nome del cluster.
Parametro | Descrizione | Esempio | Commenti |
---|---|---|---|
clusterName | Nome del cluster in cui si esegue la distribuzione | sf-cluster123 | |
applicazione | Nome dell'applicazione | Operazioni di voto | |
applicationTypeName | Nome del tipo dell'applicazione | VotingType | Deve corrispondere ApplicationManifest.xml |
applicationTypeVersion | Versione del tipo di applicazione | 1.0.0 | Deve corrispondere ApplicationManifest.xml |
serviceName | Il nome del servizio | Voting~VotingWeb | Deve essere nel formato ApplicationName~ServiceType |
serviceTypeName | Nome del tipo del servizio | VotingWeb | Deve corrispondere ServiceManifest.xml |
appPackageUrl | URL di archiviazione BLOB dell'applicazione | https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg | URL del pacchetto dell'applicazione nell'archivio BLOB (la procedura per impostare l'URL è descritta più avanti nell'articolo) |
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications/services",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
"location": "[variables('clusterLocation')]"
}
Distribuire l'applicazione
Eseguire il cmdlet New-AzResourceGroupDeployment per distribuire l'applicazione nel gruppo di risorse che contiene il cluster:
New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose
Aggiornare l'applicazione di Service Fabric usando Resource Manager
Importante
Qualsiasi servizio distribuito tramite la definizione JSON arm deve essere rimosso dalla sezione DefaultServices del file ApplicationManifest.xml corrispondente.
È possibile aggiornare un'applicazione già distribuita in un cluster di Service Fabric per uno dei motivi seguenti:
All'applicazione viene aggiunto un nuovo servizio. È necessario aggiungere una definizione di servizio a service-manifest.xml e application-manifest.xml file quando un servizio viene aggiunto all'applicazione. Per riflettere una nuova versione di un'applicazione, è anche necessario modificare la versione del tipo di applicazione da 1.0.0 a 1.0.1 in UserApp.Parameters.json:
"applicationTypeVersion": { "value": "1.0.1" }, "serviceName2": { "value": "Voting~VotingData" }, "serviceTypeName2": { "value": "VotingDataType" }
All'applicazione viene aggiunta una nuova versione di un servizio esistente. Gli esempi includono modifiche al codice dell'applicazione e aggiornamenti alla versione e al nome del tipo di app. Per questo aggiornamento, aggiornare UserApp.Parameters.json simile al seguente:
"applicationTypeVersion": { "value": "1.0.1" },
Eliminare le risorse dell'applicazione
Per eliminare un'applicazione distribuita usando il modello di risorse dell'applicazione in Resource Manager:
Usare il cmdlet Get-AzResource per ottenere l'ID risorsa per l'applicazione:
Get-AzResource -Name <String> | f1
Usare il cmdlet Remove-AzResource per eliminare le risorse dell'applicazione:
Remove-AzResource -ResourceId <String> [-Force] [-ApiVersion <String>]
Domande e risposte comuni
Errore: "Application name must be a prefix of service name" Answer: Make sure the service name is formatted as follows: ProfileVetSF~CallTicketDataWebApi.
Passaggi successivi
Ottenere informazioni sul modello di risorse dell'applicazione: