Balení aplikace
Tento článek popisuje, jak zabalíte aplikaci Service Fabric a připravíte ji k nasazení.
Rozložení balíčku
Manifest aplikace, jeden nebo více manifestů služby a další nezbytné soubory balíčků musí být uspořádány do konkrétního rozložení pro nasazení do Service Fabric clusteru. Příklady manifestů v tomto článku by se měly uspořádat v následující adresářové struktuře:
tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│ ApplicationManifest.xml
│
└───MyServiceManifest
│ ServiceManifest.xml
│
├───MyCode
│ MyServiceHost.exe
│
├───MyConfig
│ Settings.xml
│
└───MyData
init.dat
Složky jsou pojmenované tak, aby odpovídaly atributům Name každého odpovídajícího prvku. Pokud například manifest služby obsahoval dva balíčky kódu s názvy MyCodeA a MyCodeB, pak dvě složky se stejnými názvy by obsahovaly potřebné binární soubory pro každý balíček kódu.
Použití SetupEntryPoint
Typické scénáře pro použití SetupEntryPoint jsou situace, kdy potřebujete spustit spustitelný soubor před spuštěním služby nebo potřebujete provést operaci se zvýšenými oprávněními. Například:
- Nastavení a inicializace proměnných prostředí, které spustitelný soubor služby potřebuje. Není omezen pouze na spustitelné soubory napsané prostřednictvím Service Fabric programovacích modelů. Například pro npm.exe aplikace potřebuje několik proměnných prostředí node.js prostředí.
- Nastavení řízení přístupu instalací certifikátů zabezpečení
Další informace o tom, jak nakonfigurovat SetupEntryPoint, najdete v tématu Konfigurace zásad pro vstupní bod instalace služby.
Konfigurace
Sestavení balíčku pomocí Visual Studio
Pokud jste Visual Studio aplikaci, můžete pomocí příkazu Balíček automaticky vytvořit balíček, který odpovídá rozložení popsanému výše.
Pokud chcete vytvořit balíček, klikněte pravým tlačítkem na projekt aplikace v Průzkumník řešení a zvolte příkaz Balíček:

Po dokončení balení najdete umístění balíčku v okně Výstup. Krok balení probíhá automaticky při nasazení nebo ladění aplikace v Visual Studio.
Sestavení balíčku pomocí příkazového řádku
Můžete také programově zabalit aplikaci pomocí msbuild.exe . Pod pokličkou Visual Studio je spuštěný, takže výstup je stejný.
D:\Temp> msbuild HelloWorld.sfproj /t:Package
Otestování balíčku
Strukturu balíčku můžete ověřit místně prostřednictvím PowerShellu pomocí příkazu Test-ServiceFabricApplicationPackage. Tento příkaz zkontroluje problémy s parsací manifestu a ověří všechny odkazy. Tento příkaz ověří pouze strukturální správnost adresářů a souborů v balíčku. Kromě kontroly přítomnosti všech potřebných souborů neověřuje žádný kód ani obsah datového balíčku.
Test-ServiceFabricApplicationPackage .\MyApplicationType
False
Test-ServiceFabricApplicationPackage : The EntryPoint MySetup.bat is not found.
FileName: C:\Users\servicefabric\AppData\Local\Temp\TestApplicationPackage_7195781181\nrri205a.e2h\MyApplicationType\MyServiceManifest\ServiceManifest.xml
Tato chyba ukazuje, žeMySetup.bat, na který odkazuje manifest služby SetupEntryPoint, v balíčku kódu chybí. Po přidání chybějícího souboru ověření aplikace projde:
tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│ ApplicationManifest.xml
│
└───MyServiceManifest
│ ServiceManifest.xml
│
├───MyCode
│ MyServiceHost.exe
│ MySetup.bat
│
├───MyConfig
│ Settings.xml
│
└───MyData
init.dat
Test-ServiceFabricApplicationPackage .\MyApplicationType
True
Pokud má vaše aplikace definované parametry aplikace, můžete je předat v balíčku Test-ServiceFabricApplicationPackage pro správné ověření.
Pokud znáte cluster, ve kterém se aplikace nasadí, doporučujeme předat parametr ImageStoreConnectionString . V tomto případě se balíček také ověří oproti předchozím verzím aplikace, které už v clusteru běží. Ověření může například zjistit, jestli už je nasazený balíček se stejnou verzí, ale s jiným obsahem.
Po správném zabalení aplikace a ověření zvažte komprimaci balíčku pro rychlejší operace nasazení.
Komprese balíčku
Pokud je balíček velký nebo obsahuje mnoho souborů, můžete ho zkomprimovat pro rychlejší nasazení. Komprese snižuje počet souborů a velikost balíčku. U komprimovaného balíčku aplikace může nahrání balíčku aplikace v porovnání s nahráním nekomprimovaného balíčku trvat déle, zejména pokud se komprese provádí v rámci kopírování. Díky kompresi je registrace a zrušení registrace typu aplikace rychlejší.
Mechanismus nasazení je stejný pro komprimované a nekomprimované balíčky. Pokud je balíček komprimovaný, uloží se jako takový do úložiště bitových kopií clusteru a před spuštěním aplikace se nekomprimuje na uzlu. Komprese nahradí platný Service Fabric za komprimovanou verzi. Složka musí umožnovat oprávnění k zápisu. Spuštění komprese u již komprimovaného balíčku nesnídá žádné změny.
Balíček můžete zkomprimovat spuštěním příkazu PowerShellu Copy-ServiceFabricApplicationPackage s CompressPackage přepínačem . Pomocí příkazu switch můžete balíček dekomprimovat stejným UncompressPackage příkazem.
Následující příkaz zkomprimuje balíček bez jeho zkopírování do úložiště bitových kopií. Komprimovaný balíček můžete podle potřeby zkopírovat do jednoho nebo Service Fabric clusterů a použít copy-ServiceFabricApplicationPackage bez SkipCopy příznaku .
Balíček teď obsahuje komprimované soubory pro code balíčky config , a data . Manifest aplikace a manifesty služby nejsou komprimované, protože jsou potřeba pro mnoho interních operací. Například sdílení balíčků, název typu aplikace a extrakce verzí pro určitá ověření potřebují přístup k manifestům. Při posouníní manifestů budou tyto operace neefektivní.
tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│ ApplicationManifest.xml
│
└───MyServiceManifest
│ ServiceManifest.xml
│
├───MyCode
│ MyServiceHost.exe
│ MySetup.bat
│
├───MyConfig
│ Settings.xml
│
└───MyData
init.dat
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\MyApplicationType -CompressPackage -SkipCopy
tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│ ApplicationManifest.xml
│
└───MyServiceManifest
ServiceManifest.xml
MyCode.zip
MyConfig.zip
MyData.zip
Případně můžete balíček zkomprimovat a zkopírovat pomocí rutiny Copy-ServiceFabricApplicationPackage v jednom kroku. Pokud je balíček velký, zadejte dostatečně vysoký časový limit, aby byl čas pro kompresi balíčku i nahrání do clusteru.
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\MyApplicationType -ApplicationPackagePathInImageStore MyApplicationType -ImageStoreConnectionString fabric:ImageStore -CompressPackage -TimeoutSec 5400
Interně Service Fabric kontrolní součty pro balíčky aplikací pro ověřování. Při použití komprese se kontrolní součty počítají v komprimovaných verzích jednotlivých balíčků. Vygenerování nového souboru zip ze stejného balíčku aplikace vytvoří různé kontrolní součty. Pokud chcete zabránit chybám ověřování, použijte metodu diff provisioning. Při této možnosti nezahrnujte do nové verze nezměněné balíčky. Místo toho na ně odkazujte přímo z nového manifestu služby.
Pokud zřizování diff není možné a musíte zahrnout balíčky, vygenerujte nové verze balíčků , a , abyste se vyhnuli code config data neshodě kontrolních součtů. Generování nových verzí pro nezměněné balíčky je nezbytné při použití komprimovaného balíčku bez ohledu na to, jestli předchozí verze používá kompresi nebo ne.
Balíček je teď správně zabalený, ověřený a komprimovaný (v případě potřeby), takže je připravený k nasazení do jednoho nebo Service Fabric clusterů.
Komprese balíčků při nasazování pomocí Visual Studio
Můžete instruovat Visual Studio komprimovat balíčky při nasazení přidáním elementu do profilu publikování a CopyPackageParameters nastavit CompressPackage atribut na true .
<PublishProfile xmlns="http://schemas.microsoft.com/2015/05/fabrictools">
<ClusterConnectionParameters ConnectionEndpoint="mycluster.westus.cloudapp.azure.com" />
<ApplicationParameterFile Path="..\ApplicationParameters\Cloud.xml" />
<CopyPackageParameters CompressPackage="true"/>
</PublishProfile>
Vytvoření sfpkg
Počínaje verzí 6.1 Service Fabric zřizování z externího úložiště.
Při použití této možnosti není třeba balíček aplikace zkopírovat do úložiště bitových kopií. Místo toho můžete vytvořit soubor a nahrát ho do externího úložiště a pak zadat identifikátor URI pro stahování, Service Fabric sfpkg při zřizování. Stejný balíček lze zřídit pro více clusterů. Zřizování z externího úložiště šetří čas potřebný ke kopírování balíčku do každého clusteru.
Soubor sfpkg je soubor zip, který obsahuje počáteční balíček aplikace a má příponu .sfpkg . Uvnitř souboru zip může být balíček aplikace komprimovaný nebo nekomprimovaný. Komprese balíčku aplikace uvnitř souboru zip se provádí na úrovni kódu, konfigurace a datového balíčku, jak je uvedeno výše.
Chcete-li sfpkg vytvořit soubor, začněte složku, která obsahuje původní balíček aplikace, komprimovaný nebo ne. Pak pomocí libovolného nástroje zazipovat složku s příponou ".sfpkg". Použijte například ZipFile.CreateFromDirectory.
ZipFile.CreateFromDirectory(appPackageDirectoryPath, sfpkgFilePath);
Musí sfpkg být nahraný do externího úložiště mimo Service Fabric. Externím úložištěm může být libovolné úložiště, které zveřejňuje koncový bod HTTP nebo HTTPS REST. Během zřizování Service Fabric operaci GET pro stažení balíčku aplikace, takže úložiště musí pro balíček povolit sfpkg přístup ke čtení.
Pokud chcete zřídit balíček, použijte externí zřizování, které vyžaduje identifikátor URI pro stahování a informace o typu aplikace.
Poznámka
Zřizování na základě relativní cesty úložiště obrázků v současné době nepodporuje sfpkg soubory. Proto by sfpkg se neměl kopírovat do úložiště bitových kopií.
Další kroky
Článek Nasazení a odebrání aplikací popisuje, jak pomocí PowerShellu spravovat instance aplikací.
Správa parametrů aplikace pro více prostředí popisuje, jak nakonfigurovat parametry a proměnné prostředí pro různé instance aplikace.
Konfigurace zásad zabezpečení pro vaši aplikaci popisuje, jak spouštět služby v rámci zásad zabezpečení a omezit tak přístup.