Balení aplikace

Tento článek popisuje, jak zabalit aplikaci Service Fabric a připravit ji k nasazení.

Rozložení balíčku

Manifest aplikace, jeden nebo více manifestů služby a další potřebné soubory balíčků musí být uspořádané do konkrétního rozložení pro nasazení do clusteru Service Fabric. Ukázkové manifesty v tomto článku musí být uspořádané do následující adresářové struktury:

tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│   ApplicationManifest.xml
│
└───MyServiceManifest
    │   ServiceManifest.xml
    │
    ├───MyCode
    │       MyServiceHost.exe
    │
    ├───MyConfig
    │       Settings.xml
    │
    └───MyData
            init.dat

Složky jsou pojmenovány 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 by dvě složky se stejnými názvy obsahovaly nezbytné binární soubory pro každý balíček kódu.

Použití SetupEntryPointu

Typické scénáře použití SetupEntryPoint jsou, 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. Příklad:

  • Nastavení a inicializace proměnných prostředí, které spustitelný soubor služby potřebuje. Neomezuje se pouze na spustitelné soubory napsané prostřednictvím programovacích modelů Service Fabric. Například npm.exe potřebuje některé proměnné prostředí nakonfigurované pro nasazení Node.js aplikace.
  • 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 nastavení služby.

Konfigurace

Sestavení balíčku pomocí sady Visual Studio

Pokud jste k vytvoření aplikace použili Visual Studio, můžete pomocí příkazu Package (Balíček ) automaticky vytvořit balíček, který odpovídá výše popsanému rozložení.

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 Package (Balíček):

Zabalení aplikace pomocí sady Visual Studio

Po dokončení balení najdete umístění balíčku v okně Výstup . Krok balení se automaticky provede při nasazení nebo ladění aplikace v sadě Visual Studio.

Sestavení balíčku pomocí příkazového řádku

Aplikaci je také možné programově zabalit pomocí .msbuild.exe Visual Studio ho spouští pod pokličkou, takže výstup je stejný.

D:\Temp> msbuild HelloWorld.sfproj /t:Package

Testová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 analýzou manifestu a ověří všechny odkazy. Tento příkaz ověří pouze strukturální správnost adresářů a souborů v balíčku. Neověřuje žádný obsah kódu nebo datového balíčku nad rámec kontroly přítomnosti všech potřebných souborů.

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, že v balíčku kódu chybí souborMySetup.bat odkazovaný v souboru SetupEntryPoint manifestu služby. Po přidání chybějícího souboru proběhne ověření aplikace:

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 pro správné ověření předat v balíčku Test-ServiceFabricApplicationPackage .

Pokud znáte cluster, ve kterém se aplikace nasadí, doporučujeme předat ImageStoreConnectionString parametr . V tomto případě se balíček ověří také v předchozích verzích aplikace, které už v clusteru běží. Ověření může například zjistit, jestli už byl nasazen balíček se stejnou verzí, ale jiným obsahem.

Jakmile je aplikace správně zabalená a projde ověřením, 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ávání balíčku aplikace trvat déle než nahrávání nekomprimovaného balíčku, 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ý v úložišti imagí clusteru a před spuštěním aplikace se na uzlu nekomprimuje. Komprese nahradí platný balíček Service Fabric komprimovanou verzí. Složka musí umožňovat oprávnění k zápisu. Spuštění komprese u již komprimovaného balíčku nepřinese žádné změny.

Balíček můžete komprimovat spuštěním příkazu Prostředí PowerShell Copy-ServiceFabricApplicationPackage s přepínačem CompressPackage . Balíček můžete dekomprimovat pomocí stejného příkazu pomocí UncompressPackage přepínače .

Následující příkaz zkomprimuje balíček bez zkopírování do úložiště imagí. Komprimovaný balíček můžete podle potřeby zkopírovat do jednoho nebo několika clusterů Service Fabric pomocí rutiny Copy-ServiceFabricApplicationPackage bez příznaku SkipCopy . Balíček teď obsahuje komprimované soubory pro codebalíčky , configa data . Manifest aplikace a manifesty služby nejsou zazipované, protože jsou potřebné pro mnoho interních operací. Například sdílení balíčků, název typu aplikace a extrakce verze pro určitá ověření vyžadují přístup k manifestům. Zkomprimování manifestů způsobí, že tyto operace budou 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ý, zajistěte dostatečný časový limit, aby byl čas na kompresi balíčku i nahrání do clusteru.

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\MyApplicationType -ApplicationPackagePathInImageStore MyApplicationType -ImageStoreConnectionString fabric:ImageStore -CompressPackage -TimeoutSec 5400

Služba Service Fabric interně vypočítá kontrolní součty pro balíčky aplikací pro účely ověření. Při použití komprese se kontrolní součty počítají v komprimovaných verzích každého balíčku. Při generování nového souboru ZIP ze stejného balíčku aplikace se vytvoří různé kontrolní součty. Pokud chcete zabránit chybám ověřování, použijte rozdílové zřizování. Při této možnosti nezahrnujte nezměněné balíčky do nové verze. Místo toho na ně odkazujte přímo z manifestu nové služby.

Pokud rozdílové zřizování není možné a musíte zahrnout balíčky, vygenerujte nové verze pro codebalíčky , configa data , abyste se vyhnuli 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, zda předchozí verze používá kompresi.

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 více clusterů Service Fabric.

Komprese balíčků při nasazování pomocí sady Visual Studio

Sadu Visual Studio můžete dát pokyn ke komprimaci balíčků při nasazení přidáním elementu CopyPackageParameters do profilu publikování a nastavením atributu CompressPackage na truehodnotu .

    <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 umožňuje Service Fabric zřizování z externího úložiště. Při použití této možnosti se balíček aplikace nemusí kopírovat do úložiště imagí. Místo toho můžete vytvořit sfpkg soubor a nahrát ho do externího úložiště a pak při zřizování service Fabric zadat identifikátor URI pro stažení. Stejný balíček je možné zřídit pro více clusterů. Zřizování z externího úložiště šetří čas potřebný ke zkopírování balíčku do každého clusteru.

Soubor sfpkg je zip, který obsahuje počáteční balíček aplikace a má příponu .sfpkg. Uvnitř souboru ZIP lze balíček aplikace komprimovat nebo dekomprimovat. Komprese balíčku aplikace uvnitř souboru ZIP se provádí na úrovních kódu, konfigurace a datového balíčku, jak je uvedeno výše.

Pokud chcete vytvořit sfpkg soubor, začněte složkou, která obsahuje původní balíček aplikace, komprimovaný nebo ne. Potom pomocí libovolného nástroje zazipujte složku s příponou ".sfpkg". Použijte například ZipFile.CreateFromDirectory.

ZipFile.CreateFromDirectory(appPackageDirectoryPath, sfpkgFilePath);

Soubor sfpkg se musí nahrát do externího úložiště mimo Service Fabric. Externí úložiště může být libovolné úložiště, které zveřejňuje koncový bod REST http nebo https. Během zřizování Service Fabric spustí operaci GET ke stažení sfpkg balíčku aplikace, takže úložiště musí povolit přístup ke čtení pro balíček.

Ke zřízení balíčku použijte externí zřízení, které vyžaduje identifikátor URI stahování a informace o typu aplikace.

Poznámka

Zřizování založené na relativní cestě úložiště imagí v současné době nepodporuje sfpkg soubory. Proto sfpkg by neměl být zkopírován do úložiště imagí.

Další kroky

Nasazení a odebrání aplikací popisuje použití PowerShellu ke správě instancí aplikací.

Správa parametrů aplikace pro více prostředí popisuje, jak nakonfigurovat parametry a proměnné prostředí pro různé instance aplikací.

Konfigurace zásad zabezpečení pro vaši aplikaci popisuje, jak spouštět služby v rámci zásad zabezpečení, aby se omezil přístup.