Condividi tramite


Gestire il ciclo di vita dell'applicazione in un cluster gestito con Azure Resource Manager

Sono disponibili più opzioni per la distribuzione di applicazioni di Azure Service Fabric nel cluster gestito 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 di Service Fabric usando Resource Manager.
  • Aggiornare le risorse dell'applicazione di Service Fabric usando Resource Manager.
  • Eliminare le risorse dell'applicazione di Service Fabric.

Nota

Questo documento è la quarta parte di una serie di esercitazioni in quattro parti, a partire dalla distribuzione di un cluster gestito di Service Fabric. Di conseguenza, è previsto che il cluster sia stato distribuito prima di questo passaggio. Tuttavia, se si intende distribuire il cluster e l'applicazione insieme, nello stesso modello arm o Bicep, tenere presente che versions deve avere una dipendenza da nodeType. In caso contrario, la distribuzione non riesce.

Distribuire le risorse dell'applicazione di Service Fabric

I passaggi generali da eseguire per distribuire un'applicazione e i relativi servizi usando il modello di risorse dell'applicazione Resource Manager sono:

  1. Creare il pacchetto del codice dell'applicazione.
  2. Caricare il pacchetto.
  3. 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 gestito 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.

Creare un account di archiviazione

Attenzione

L'accesso pubblico anonimo ai dati BLOB nell'account di archiviazione presenta un rischio per la sicurezza. Quando si crea un account di archiviazione, è consigliabile disabilitare l'accesso pubblico anonimo ai dati BLOB a livello di account impostando la proprietà AllowBlobPublicAccess su false. Per altre informazioni, vedere Correggere l'accesso in lettura pubblico anonimo ai dati BLOB (distribuzioni di Azure Resource Manager).

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.

È possibile concedere l'accesso al contenitore in uno dei modi seguenti:

  • È possibile assegnare un ruolo controllo degli accessi in base al ruolo di Azure che concede le autorizzazioni al contenitore a un'entità di sicurezza, in modo che l'entità di sicurezza possa accedere ai dati nel contenitore tramite l'autorizzazione Microsoft Entra. Per ulteriori informazioni, vedere Autorizzare l'accesso ai BLOB usando Microsoft Entra ID.
  • È possibile delegare l'accesso al contenitore con una firma di accesso condiviso per concedere a un client l'accesso ai BLOB nel contenitore per un periodo di tempo limitato e con autorizzazioni specifiche. Per altre informazioni, vedere Concedere accesso limitato alle risorse di Archiviazione di Azure tramite firme di accesso condiviso.
  • È possibile usare le chiavi di accesso dell'account per autorizzare l'accesso ai dati BLOB. Questo approccio è il meno sicuro e quindi non è consigliato.

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.

  1. In Visual Studio fare clic con il pulsante destro del mouse sul progetto Voting e quindi scegliere Pacchetto.

    Applicazione pacchetto

  2. 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.

    Applicazione ZIP

  3. Rinominare il file per modificare l'estensione da .zip a sfpkg.

  4. Nel portale di Azure, nel contenitore delle app per l'account di archiviazione selezionare Carica e quindi caricare Voting.sfpkg.

    Caricare il pacchetto dell'app

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
versione ID risorsa, tipo di applicazione e versione dell'app. /providers/Microsoft.ServiceFabric/managedClusters/sf-cluster-123/applicationTypes/VotingType/versions/1.0.0 Deve corrispondere ApplicationManifest.xml
serviceName Il nome del servizio VotingWeb Deve essere nel formato ServiceType
serviceTypeName Nome del tipo del servizio VotingWebType 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": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

Distribuire l'applicazione Service Fabric

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 un modello di Azure Resource Manager (ARM) deve essere rimosso dalla sezione DefaultServices del file di 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": "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 di Service Fabric

Nota

Le applicazioni non devono essere eliminate tramite un modello di Azure Resource Manager (ARM) perché non esiste un modo dichiarativo per pulire le singole risorse

Per eliminare un'applicazione di Service Fabric distribuita usando il modello di risorse dell'applicazione in Resource Manager:

  1. Usare il cmdlet Get-AzResource per ottenere l'ID risorsa per l'applicazione:

    Get-AzResource  -Name <String> | f1
    
  2. Usare il cmdlet Remove-AzServiceFabricApplication per eliminare le risorse dell'applicazione:

    Remove-AzServiceFabricApplication -ResourceId <String> [-Force]
    

Migrazione da cluster classici a cluster gestiti

Se si esegue la migrazione di applicazioni dalla versione classica ai cluster gestiti, è necessario assicurarsi di verificare che i tipi siano specificati correttamente o si verifichino errori.

Gli elementi seguenti vengono chiamati in modo specifico a causa della frequenza di utilizzo, ma non destinati a essere un elenco esclusivo di differenze.

  • upgradeReplicaSetCheckTimeout è ora un numero intero per la gestione, ma una stringa in SFRP classica.

Per un elenco completo delle proprietà e dei tipi, vedere Tipi di risorse di applicazioni cluster gestiti

Passaggi successivi

Altre informazioni sulla distribuzione di applicazioni cluster gestite: