Gérer le cycle de vie des applications sur un cluster géré à l’aide de Azure Resource Manager

Vous avez plusieurs options pour déployer des applications Azure Service Fabric sur votre cluster managé Service Fabric. Nous vous recommandons d’utiliser Azure Resource Manager. Si vous utilisez Resource Manager, vous pouvez décrire les applications et les services au format JSON, puis les déployer dans le même modèle Resource Manager que votre cluster. Contrairement à l’utilisation de PowerShell ou d’Azure CLI pour déployer et gérer des applications, si vous utilisez Resource Manager, vous n’avez pas besoin d’attendre que le cluster soit prêt. L’inscription, le provisionnement et le déploiement d’applications peuvent tous être réalisés en une seule étape. L’utilisation de Resource Manager est la meilleure façon de gérer le cycle de vie des applications dans votre cluster. Pour plus d’informations, consultez Meilleures pratiques : Infrastructure en tant que code.

La gestion de vos applications en tant que ressources dans Resource Manager peut vous aider à obtenir des améliorations dans les domaines suivants :

  • Piste d’audit : Resource Manager effectue l’audit de chaque opération et conserve un journal d’activité détaillé. Un journal d’activité peut vous aider à suivre toutes les modifications apportées aux applications et à votre cluster.
  • Contrôle d’accès en fonction du rôle : vous pouvez gérer l’accès aux clusters et aux applications déployées sur le cluster en utilisant le même modèle Resource Manager.
  • Efficacité de la gestion : Resource Manager vous fournit un emplacement unique (le portail Azure) pour la gestion de votre cluster et des déploiements d’applications critiques.

Dans ce document, découvrez comment :

  • Déployer des ressources d’application à l’aide de Resource Manager.
  • Mettez à niveau les ressources des applications de la structure de service en utilisant le Resource Manager.
  • Supprimez les ressources d'application du tissu de services.

Déployer les ressources applicatives de Service Fabric

La procédure générale à suivre pour déployer une application et ses services à l’aide du modèle de ressource d’application Resource Manager est la suivante :

  1. Empaquetez le code de l’application.
  2. Chargez le package.
  3. Référencez l’emplacement du package dans un modèle Resource Manager en tant que ressource d’application.

Pour plus d’informations, consultez Empaqueter une application.

Ensuite, vous créez un modèle Resource Manager, vous mettez à jour le fichier de paramètres avec les détails de l’application et vous déployez le modèle sur le cluster Service Fabric. Explorez des exemples.

Créez un compte de stockage.

Pour déployer une application à partir d’un modèle Resource Manager, vous devez disposer d’un compte de stockage. Le compte de stockage permet d’effectuer une copie intermédiaire de l’image d’application.

Vous pouvez réutiliser un compte de stockage existant ou créer un nouveau compte de stockage pour la copie intermédiaire de vos applications. Si vous utilisez un compte de stockage existant, vous pouvez ignorer cette étape.

Create a storage account

Attention

L’accès public anonyme aux données d’objets blob dans votre compte de stockage présente un risque de sécurité. Lorsque vous créez un compte de stockage, nous vous recommandons de désactiver l’accès public anonyme aux données d’objets blob au niveau du compte, en définissant la propriété AllowBlobPublicAccess sur faux. Pour plus d’informations, consultez Corriger l’accès en lecture public anonyme aux données blob (déploiements Azure Resource Manager).

Configurer votre compte de stockage

Après avoir créé le compte de stockage, vous créez un conteneur d’objets blob dans lequel vous pouvez effectuer une copie intermédiaire des applications. Dans le portail Azure, accédez au compte de Stockage Azure où vous souhaitez stocker vos applications. Sélectionnez Objets blob>Ajouter un conteneur.

Vous pouvez accorder l’accès au conteneur de l’une des manières suivantes :

  • Vous pouvez attribuer un rôle RBAC Azure qui accorde des autorisations au conteneur à un principal de sécurité, afin que ce principal de sécurité puisse accéder aux données du conteneur via une autorisation Microsoft Entra. Pour plus d’informations, consultez Autoriser l’accès aux objets blob avec Microsoft Entra ID.
  • Vous pouvez déléguer l’accès au conteneur avec une signature d’accès partagé pour accorder à un client l’accès aux objets blob dans le conteneur pendant une période limitée et avec des autorisations spécifiques. Pour plus d’informations, consultez Accorder un accès limité aux ressources du Stockage Azure à l’aide des signatures d’accès partagé (SAS).
  • Vous pouvez utiliser les clés d’accès de compte pour autoriser l’accès aux données d’objets blob. Cette approche est la moins sécurisée et elle n’est donc pas recommandée.

Effectuer une copie intermédiaire de l’application dans votre compte de stockage

Avant de pouvoir déployer une application, vous devez effectuer une copie intermédiaire de l’application dans le stockage d’objets blob. Dans ce tutoriel, nous allons créer manuellement le package d’application. Gardez à l’esprit que cette étape peut être automatisée. Pour plus d’informations, consultez Empaqueter une application.

Dans ce tutoriel, nous utilisons l’exemple d’application de vote.

  1. Dans Visual Studio, cliquez avec le bouton droit sur le projet Vote, puis sélectionnez Package.

    Package Application

  2. Accédez au répertoire .\service-fabric-dotnet-quickstart\Voting\pkg\Debug. Compressez le contenu dans un fichier nommé Voting.zip. Le fichier ApplicationManifest.xml doit se trouver à la racine dans le fichier zip.

    Zip Application

  3. Renommez le fichier pour remplacer l’extension .zip par .sfpkg.

  4. Dans le portail Azure, dans le conteneur applications de votre compte de stockage, sélectionnez Charger, puis chargez Voting.sfpkg.

    Upload App Package

La copie intermédiaire de l’application est désormais réalisée et vous pouvez créer le modèle Resource Manager pour déployer l’application.

Créer le modèle Resource Manager

L’exemple d’application contient des modèles Azure Resource Manager que vous pouvez utiliser pour déployer l’application. Les noms des fichiers modèles sont UserApp.json et UserApp.Parameters.json.

Notes

Le fichier UserApp.Parameters.json doit être mis à jour avec le nom de votre cluster.

Paramètre Description Exemple Commentaires
clusterName Le nom du cluster de déploiement sf-cluster123
application Nom de l’application Vote
version ID de ressource, type d’application et version de l’application. /providers/Microsoft.ServiceFabric/managedClusters/sf-cluster-123/applicationTypes/VotingType/versions/1.0.0 Doit correspondre à ApplicationManifest.xml
serviceName Nom du service VotingWeb Doit être au format ServiceType
serviceTypeName Le nom du type de service VotingWebType Doit correspondre à ServiceManifest.xml
appPackageUrl L’URL du stockage Blob de l’application https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg L’URL du package d’application dans le stockage d’objets blob (la procédure de définition de l’URL est décrite ultérieurement dans cet article)
{
    "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')]"
}

Déployer l’application Service Fabric

Exécutez l’applet de commande New-AzResourceGroupDeployment pour déployer l’application dans le groupe de ressources qui contient votre cluster :

New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose

Mettre à niveau l’application Service Fabric à l’aide de Resource Manager

Important

Tout service déployé via le modèle Azure Resource Manager (ARM) doit être supprimé de la section DefaultServices du fichier ApplicationManifest.xml correspondant.

Vous pouvez mettre à niveau une application qui est déjà déployée sur un cluster Service Fabric pour l’une des raisons suivantes :

  • Un nouveau service est ajouté à l’application. Une définition de service doit être ajoutée aux fichiers service-manifest.xml et application-manifest.xml quand un service est ajouté à l’application. Pour refléter une nouvelle version d’une application, vous devez également modifier la version du type d’application de 1.0.0 à 1.0.1 dans UserApp.Parameters.json :

    "applicationTypeVersion": {
        "value": "1.0.1"
    },
    "serviceName2": {
        "value": "VotingData"
    },
    "serviceTypeName2": {
        "value": "VotingDataType"
    }
    
  • Une nouvelle version d’un service existant est ajoutée à l’application. Des exemples incluent des modifications du code de l’application et des mises à jour de la version et du nom du type d’application. Pour cette mise à niveau, mettez à jour UserApp.Parameters.json comme suit :

     "applicationTypeVersion": {
        "value": "1.0.1"
    }
    

Supprimer les ressources de l'application Service Fabric

Notes

Les applications ne doivent pas être supprimées via le modèle Azure Resource Manager (ARM), car il n’existe pas de méthode déclarative pour nettoyer les ressources individuelles

Pour supprimer une application qui a été déployée à l’aide du modèle de ressources de l’application dans Resource Manager :

  1. Utilisez l’applet de commande Get-AzResource pour obtenir l’ID de ressource de l’application :

    Get-AzResource  -Name <String> | f1
    
  2. Pour supprimer les ressources de l'application, utilisez l’applet de commande Remove-AzServiceFabricApplication :

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

Migration d’un cluster classique vers un cluster managé

Si vous effectuez la migration d’une ou plusieurs applications d’un cluster classique vers un cluster managé, vous devez vérifier que les types sont correctement spécifiés pour ne pas rencontrer d’erreurs.

Les points suivants sont mentionnés en raison de leur fréquence d’utilisation, mais ils ne sont pas censés constituer une liste exhaustive de différences.

  • upgradeReplicaSetCheckTimeout est désormais un entier pour le SFRP managé, mais une chaîne dans le SFRP classique.

Pour connaître la liste complète des propriétés et des types, consultez Types de ressources des applications de clusters managés.

Étapes suivantes

En savoir plus sur le déploiement d’applications de cluster managé :