Service Fabric-programresursmodell
Du har flera alternativ för att distribuera Azure Service Fabric-program i ditt Service Fabric-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 programresurser med hjälp av Resource Manager.
- Uppgradera programresurser med hjälp av Resource Manager.
- Ta bort programresurser.
Distribuera programresurser
De övergripande steg du vidtar för att distribuera ett program och dess tjänster med hjälp av Resource Manager-programresursmodellen är:
- Paketera programkoden.
- Ladda upp paketet.
- 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 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.
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.
Resurser i klustret kan skyddas genom att ställa in den offentliga åtkomstnivån på privat. Du kan bevilja åtkomst på flera sätt:
- Bevilja åtkomst till Azure-blob- och ködata med hjälp av Azure RBAC i Azure-portalen.
- Delegera åtkomst med hjälp av en signatur för delad åtkomst.
Exemplet i följande skärmbild använder anonym läsåtkomst för blobar.
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.
Högerklicka på projektet Voting i Visual Studio och välj sedan Paket.
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.
Byt namn på filen för att ändra tillägget från .zip till .sfpkg.
I Azure-portalen går du till appcontainern för ditt lagringskonto, väljer Ladda upp och laddar sedan upp Voting.sfpkg.
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 | |
applicationTypeName | Typnamnet på programmet | VotingType | Måste matcha ApplicationManifest.xml |
applicationTypeVersion | Versionen av programtypen | 1.0.0 | Måste matcha ApplicationManifest.xml |
serviceName | Namnet på tjänsten | Voting~VotingWeb | Måste vara i formatet ApplicationName~ServiceType |
serviceTypeName | Typnamnet på tjänsten | VotingWeb | 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": "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')]"
}
Distribuera 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 ARM JSON-definition 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": "Voting~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 programresurser
Så här tar du bort ett program som har distribuerats med hjälp av programresursmodellen i Resource Manager:
Använd cmdleten Get-AzResource för att hämta resurs-ID:t för programmet:
Get-AzResource -Name <String> | f1
Använd cmdleten Remove-AzResource för att ta bort programresurserna:
Remove-AzResource -ResourceId <String> [-Force] [-ApiVersion <String>]
Vanliga frågor och svar
Fel: "Programnamnet måste vara ett prefix för tjänstnamnet" Svar: Kontrollera att tjänstnamnet är formaterat på följande sätt: ProfileVetSF~CallTicketDataWebApi.
Nästa steg
Hämta information om programresursmodellen: