Dela via


Hantera programlivscykeln i ett hanterat kluster med Hjälp av Azure Resource Manager

Du har flera alternativ för att distribuera Azure Service Fabric-program i ditt Service Fabric-hanterade kluster. Vi rekommenderar att du använder Azure Resource Manager. Om du använder Resource Manager kan du beskriva program och tjänster i JSON och sedan distribuera dem i samma Resource Manager-mall som klustret. Till skillnad från att använda PowerShell eller Azure CLI för att distribuera och hantera program behöver du inte vänta tills klustret är klart om du använder Resource Manager. programregistrering, etablering och distribution kan ske i ett enda steg. Att använda Resource Manager är det bästa sättet att hantera programmets livscykel i klustret. Mer information finns i Metodtips: Infrastruktur som kod.

Att hantera dina program som resurser i Resource Manager kan hjälpa dig att få förbättringar inom följande områden:

  • Spårningslogg: Resource Manager granskar varje åtgärd och behåller en detaljerad aktivitetslogg. En aktivitetslogg kan hjälpa dig att spåra ändringar som gjorts i programmen och i klustret.
  • Rollbaserad åtkomstkontroll: Du kan hantera åtkomst till kluster och till program som distribueras i klustret med hjälp av samma Resource Manager-mall.
  • Hanteringseffektivitet: Om du använder Resource Manager får du en enda plats (Azure-portalen) för att hantera klustret och kritiska programdistributioner.

I det här dokumentet får du lära dig att:

  • Distribuera service fabric-programresurser med hjälp av Resource Manager.
  • Uppgradera service fabric-programresurser med hjälp av Resource Manager.
  • Ta bort service fabric-programresurser.

Kommentar

Det här dokumentet är del fyra i en självstudieserie i fyra delar, som börjar med att distribuera ett Service Fabric-hanterat kluster. Därför förväntas du distribuera klustret före det här steget. Men om du tänker distribuera klustret och programmet tillsammans, i samma ARM- eller Bicep-mall, vet du att det versions måste ha ett beroende av nodeType. Annars misslyckas distributionen.

Distribuera Service Fabric-programresurser

De övergripande steg du vidtar för att distribuera ett program och dess tjänster med hjälp av Resource Manager-programresursmodellen är:

  1. Paketera programkoden.
  2. Ladda upp paketet.
  3. Referera till paketets plats i en Resource Manager-mall som en programresurs.

Mer information finns i Paketera ett program.

Sedan skapar du en Resource Manager-mall, uppdaterar parameterfilen med programinformation och distribuerar mallen i det Hanterade Service Fabric-klustret. Utforska exempel.

Skapa ett lagringskonto

Om du vill distribuera ett program från en Resource Manager-mall måste du ha ett lagringskonto. Lagringskontot används för att mellanlagra programbilden.

Du kan återanvända ett befintligt lagringskonto eller skapa ett nytt lagringskonto för mellanlagring av dina program. Om du använder ett befintligt lagringskonto kan du hoppa över det här steget.

Skapa ett lagringskonto

Varning

Anonym offentlig åtkomst till blobdata i ditt lagringskonto utgör en säkerhetsrisk. När du skapar ett lagringskonto rekommenderar vi att du inaktiverar anonym offentlig åtkomst till blobdata på kontonivå genom att ange egenskapen AllowBlobPublicAccess till false. Mer information finns i Åtgärda anonym offentlig läsåtkomst till blobdata (Azure Resource Manager-distributioner).

Konfigurera ditt lagringskonto

När lagringskontot har skapats skapar du en blobcontainer där programmen kan mellanlagras. I Azure-portalen går du till det Azure Storage-konto där du vill lagra dina program. Välj Blobar>Lägg till container.

Du kan bevilja åtkomst till containern på något av följande sätt:

Mellanlagra programmet i ditt lagringskonto

Innan du kan distribuera ett program måste du mellanlagra programmet i Blob Storage. I den här självstudien skapar vi programpaketet manuellt. Tänk på att det här steget kan automatiseras. Mer information finns i Paketera ett program.

I den här självstudien använder vi exempelprogrammet Röstning.

  1. Högerklicka på projektet Voting i Visual Studio och välj sedan Paket.

    Paketprogram

  2. Gå till katalogen .\service-fabric-dotnet-quickstart\Voting\pkg\Debug . Zippa innehållet i en fil med namnet Voting.zip. Den ApplicationManifest.xml filen ska finnas vid roten i zip-filen.

    Zip-program

  3. Byt namn på filen för att ändra tillägget från .zip till .sfpkg.

  4. I Azure-portalen går du till appcontainern för ditt lagringskonto, väljer Ladda upp och laddar sedan upp Voting.sfpkg.

    Ladda upp apppaket

Nu är programmet mellanlagrat och du kan skapa Resource Manager-mallen för att distribuera programmet.

Skapa Resource Manager-mallen

Exempelprogrammet innehåller Azure Resource Manager-mallar som du kan använda för att distribuera programmet. Mallfilnamnen är UserApp.json och UserApp.Parameters.json.

Kommentar

Filen UserApp.Parameters.json måste uppdateras med namnet på klustret.

Parameter Description Exempel Kommentarer
clusterName Namnet på klustret som du distribuerar till sf-cluster123
program Namnet på programmet Röstning
version Resurs-ID, programtyp och version av appen. /providers/Microsoft.ServiceFabric/managedClusters/sf-cluster-123/applicationTypes/VotingType/versions/1.0.0 Måste matcha ApplicationManifest.xml
serviceName Namnet på tjänsten VotingWeb Måste vara i formatet ServiceType
serviceTypeName Typnamnet på tjänsten VotingWebType Måste matcha ServiceManifest.xml
appPackageUrl Bloblagrings-URL:en för programmet https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg URL:en för programpaketet i Blob Storage (proceduren för att ange URL:en beskrivs senare i artikeln)
{
    "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')]"
}

Distribuera Service Fabric-programmet

Kör cmdleten New-AzResourceGroupDeployment för att distribuera programmet till resursgruppen som innehåller klustret:

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

Uppgradera Service Fabric-programmet med hjälp av Resource Manager

Viktigt!

Alla tjänster som distribueras via EN ARM-mall (Azure Resource Manager) måste tas bort från avsnittet DefaultServices i motsvarande ApplicationManifest.xml fil.

Du kan uppgradera ett program som redan har distribuerats till ett Service Fabric-kluster av någon av följande skäl:

  • En ny tjänst läggs till i programmet. En tjänstdefinition måste läggas till i service-manifest.xml och application-manifest.xml filer när en tjänst läggs till i programmet. Om du vill återspegla en ny version av ett program måste du också ändra programtypsversionen från 1.0.0 till 1.0.1 i UserApp.Parameters.json:

    "applicationTypeVersion": {
        "value": "1.0.1"
    },
    "serviceName2": {
        "value": "VotingData"
    },
    "serviceTypeName2": {
        "value": "VotingDataType"
    }
    
  • En ny version av en befintlig tjänst läggs till i programmet. Exempel är programkodändringar och uppdateringar av apptypsversion och namn. För den här uppgraderingen uppdaterar du UserApp.Parameters.json så här:

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

Ta bort Service Fabric-programresurser

Kommentar

Program bör inte tas bort via EN ARM-mall (Azure Resource Manager) eftersom det inte finns något deklarativt sätt att rensa enskilda resurser

Så här tar du bort ett Service Fabric-program som har distribuerats med hjälp av programresursmodellen i Resource Manager:

  1. Använd cmdleten Get-AzResource för att hämta resurs-ID:t för programmet:

    Get-AzResource  -Name <String> | f1
    
  2. Använd cmdleten Remove-AzServiceFabricApplication för att ta bort programresurserna:

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

Migrering från klassiska till hanterade kluster

Om du migrerar program från klassiska till hanterade kluster måste du kontrollera att typerna har angetts korrekt, annars uppstår fel.

Följande objekt framhävs specifikt på grund av användningsfrekvensen, men är inte avsedda att vara en exklusiv lista över skillnader.

  • upgradeReplicaSetCheckTimeout är nu ett heltal för hanterad, men en sträng på klassisk SFRP.

Se resurstyper för hanterade klusterprogram för fullständig lista över egenskaper och typer

Nästa steg

Läs mer om distribution av hanterade klusterprogram: